Index: chrome/browser/search_engines/default_search_manager.h |
diff --git a/chrome/browser/search_engines/default_search_manager.h b/chrome/browser/search_engines/default_search_manager.h |
index c8f08a4c30acb983bb88f40c7e22fd5e1d93a7ef..661cbc39a21a8f641927b5eff50bccd816e419eb 100644 |
--- a/chrome/browser/search_engines/default_search_manager.h |
+++ b/chrome/browser/search_engines/default_search_manager.h |
@@ -5,6 +5,7 @@ |
#ifndef CHROME_BROWSER_SEARCH_ENGINES_DEFAULT_SEARCH_MANAGER_H_ |
#define CHROME_BROWSER_SEARCH_ENGINES_DEFAULT_SEARCH_MANAGER_H_ |
+#include "base/callback.h" |
#include "base/macros.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/prefs/pref_change_registrar.h" |
@@ -27,9 +28,10 @@ struct TemplateURLData; |
// DefaultSearchManager handles the loading and writing of the user's default |
// search engine selection to and from prefs. |
- |
class DefaultSearchManager { |
public: |
+ static const char kDefaultSearchProviderDataPrefName[]; |
+ |
static const char kID[]; |
static const char kShortName[]; |
static const char kKeyword[]; |
@@ -68,7 +70,11 @@ class DefaultSearchManager { |
FROM_POLICY, |
}; |
- explicit DefaultSearchManager(PrefService* pref_service); |
+ typedef base::Callback<void(const TemplateURLData*, Source)> ObserverCallback; |
+ |
+ DefaultSearchManager(PrefService* pref_service, |
+ const ObserverCallback& change_observer); |
+ |
~DefaultSearchManager(); |
// Register prefs needed for tracking the default search provider. |
@@ -78,16 +84,19 @@ class DefaultSearchManager { |
static void AddPrefValueToMap(base::DictionaryValue* value, |
PrefValueMap* pref_value_map); |
- // Gets a pointer to the current DefaultSearchEngine. If NULL, indicates that |
- // Default Search is explicitly disabled. |
- TemplateURLData* GetDefaultSearchEngine() const; |
+ // Gets a pointer to the current Default Search Engine. If NULL, indicates |
+ // that Default Search is explicitly disabled. |source|, if not NULL, will be |
+ // filled in with the source of the result. |
+ TemplateURLData* GetDefaultSearchEngine(Source* source) const; |
+ |
+ // Gets the source of the current Default Search Engine value. |
+ Source GetDefaultSearchEngineSource() const; |
// Write default search provider data to |pref_service_|. |
void SetUserSelectedDefaultSearchEngine(const TemplateURLData& data); |
- // Override the default search provider with an extension. Takes ownership of |
- // |data|. |
- void SetExtensionControlledDefaultSearchEngine(TemplateURLData* data); |
+ // Override the default search provider with an extension. |
+ void SetExtensionControlledDefaultSearchEngine(const TemplateURLData& data); |
// Clear the extension-provided default search engine. Does not explicitly |
// disable Default Search.The new current default search engine will be |
@@ -99,28 +108,36 @@ class DefaultSearchManager { |
// engine will be defined by policy, extensions, or pre-populated data. |
void ClearUserSelectedDefaultSearchEngine(); |
- // Determines the source of the current default search provider value. |
- Source GetDefaultSearchEngineSource() const; |
- |
private: |
- // Handle changes to kDefaultSearchProviderData pref. This includes sync and |
- // policy changes. |
+ // Handles changes to kDefaultSearchProviderData pref. This includes sync and |
+ // policy changes. Calls LoadDefaultSearchEngineFromPrefs() and |
+ // NotifyObserver() if the effective DSE might have changed. |
void OnDefaultSearchPrefChanged(); |
- // Handle changes to kSearchProviderOverrides pref, and update necessary |
- // members. |
+ // Handles changes to kSearchProviderOverrides pref. Calls |
+ // LoadPrepopulatedDefaultSearch() and NotifyObserver() if the effective DSE |
+ // might have changed. |
void OnOverridesPrefChanged(); |
- // Update |default_search_controlled_by_policy_|. |
- void UpdatePolicyStatus(); |
- |
- // Merge data from prefs with prepopulated data. |
+ // Updates |prefs_default_search_| with values from its corresponding |
+ // pre-populated search provider record, if any. |
void MergePrefsDataWithPrepopulated(); |
- // Read default search provider data from |pref_service_|. |
- bool ReadDefaultSearchEngineFromPrefs(TemplateURLData** data); |
+ // Reads default search provider data from |pref_service_|, updating |
+ // |prefs_default_search_| and |default_search_controlled_by_policy_|. |
+ // Invokes MergePrefsDataWithPrepopulated(). |
+ void LoadDefaultSearchEngineFromPrefs(); |
+ |
+ // Reads pre-populated search providers, which may be built-in or overridden |
+ // by kSearchProviderOverrides. Updates |fallback_default_search_|. Invoke |
+ // MergePrefsDataWithPrepopulated(). |
+ void LoadPrepopulatedDefaultSearch(); |
+ |
+ // Invokes |change_observer_| if it is not NULL. |
+ void NotifyObserver(); |
PrefService* pref_service_; |
+ const ObserverCallback change_observer_; |
PrefChangeRegistrar pref_change_registrar_; |
scoped_ptr<TemplateURLData> fallback_default_search_; |