| OLD | NEW |
| (Empty) |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef CHROME_BROWSER_SEARCH_ENGINES_DEFAULT_SEARCH_MANAGER_H_ | |
| 6 #define CHROME_BROWSER_SEARCH_ENGINES_DEFAULT_SEARCH_MANAGER_H_ | |
| 7 | |
| 8 #include "base/callback.h" | |
| 9 #include "base/macros.h" | |
| 10 #include "base/memory/scoped_ptr.h" | |
| 11 #include "base/prefs/pref_change_registrar.h" | |
| 12 | |
| 13 namespace base { | |
| 14 class DictionaryValue; | |
| 15 } | |
| 16 | |
| 17 namespace user_prefs { | |
| 18 class PrefRegistrySyncable; | |
| 19 } | |
| 20 | |
| 21 class PrefService; | |
| 22 class PrefValueMap; | |
| 23 struct TemplateURLData; | |
| 24 | |
| 25 // DefaultSearchManager handles the loading and writing of the user's default | |
| 26 // search engine selection to and from prefs. | |
| 27 class DefaultSearchManager { | |
| 28 public: | |
| 29 static const char kDefaultSearchProviderDataPrefName[]; | |
| 30 | |
| 31 static const char kID[]; | |
| 32 static const char kShortName[]; | |
| 33 static const char kKeyword[]; | |
| 34 static const char kPrepopulateID[]; | |
| 35 static const char kSyncGUID[]; | |
| 36 | |
| 37 static const char kURL[]; | |
| 38 static const char kSuggestionsURL[]; | |
| 39 static const char kInstantURL[]; | |
| 40 static const char kImageURL[]; | |
| 41 static const char kNewTabURL[]; | |
| 42 static const char kFaviconURL[]; | |
| 43 static const char kOriginatingURL[]; | |
| 44 | |
| 45 static const char kSearchURLPostParams[]; | |
| 46 static const char kSuggestionsURLPostParams[]; | |
| 47 static const char kInstantURLPostParams[]; | |
| 48 static const char kImageURLPostParams[]; | |
| 49 | |
| 50 static const char kSafeForAutoReplace[]; | |
| 51 static const char kInputEncodings[]; | |
| 52 | |
| 53 static const char kDateCreated[]; | |
| 54 static const char kLastModified[]; | |
| 55 | |
| 56 static const char kUsageCount[]; | |
| 57 static const char kAlternateURLs[]; | |
| 58 static const char kSearchTermsReplacementKey[]; | |
| 59 static const char kCreatedByPolicy[]; | |
| 60 static const char kDisabledByPolicy[]; | |
| 61 | |
| 62 enum Source { | |
| 63 FROM_FALLBACK = 0, | |
| 64 FROM_USER, | |
| 65 FROM_EXTENSION, | |
| 66 FROM_POLICY, | |
| 67 }; | |
| 68 | |
| 69 typedef base::Callback<void(const TemplateURLData*, Source)> ObserverCallback; | |
| 70 | |
| 71 DefaultSearchManager(PrefService* pref_service, | |
| 72 const ObserverCallback& change_observer); | |
| 73 | |
| 74 ~DefaultSearchManager(); | |
| 75 | |
| 76 // Register prefs needed for tracking the default search provider. | |
| 77 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); | |
| 78 | |
| 79 // Save default search provider pref values into the map provided. | |
| 80 static void AddPrefValueToMap(base::DictionaryValue* value, | |
| 81 PrefValueMap* pref_value_map); | |
| 82 | |
| 83 // Testing code can call this with |disabled| set to true to cause | |
| 84 // GetDefaultSearchEngine() to return NULL instead of | |
| 85 // |fallback_default_search_| in cases where the DSE source is FROM_FALLBACK. | |
| 86 static void SetFallbackSearchEnginesDisabledForTesting(bool disabled); | |
| 87 | |
| 88 // Gets a pointer to the current Default Search Engine. If NULL, indicates | |
| 89 // that Default Search is explicitly disabled. |source|, if not NULL, will be | |
| 90 // filled in with the source of the result. | |
| 91 TemplateURLData* GetDefaultSearchEngine(Source* source) const; | |
| 92 | |
| 93 // Gets the source of the current Default Search Engine value. | |
| 94 Source GetDefaultSearchEngineSource() const; | |
| 95 | |
| 96 // Write default search provider data to |pref_service_|. | |
| 97 void SetUserSelectedDefaultSearchEngine(const TemplateURLData& data); | |
| 98 | |
| 99 // Override the default search provider with an extension. | |
| 100 void SetExtensionControlledDefaultSearchEngine(const TemplateURLData& data); | |
| 101 | |
| 102 // Clear the extension-provided default search engine. Does not explicitly | |
| 103 // disable Default Search. The new current default search engine will be | |
| 104 // defined by policy, extensions, or pre-populated data. | |
| 105 void ClearExtensionControlledDefaultSearchEngine(); | |
| 106 | |
| 107 // Clear the user's default search provider choice from |pref_service_|. Does | |
| 108 // not explicitly disable Default Search. The new default search | |
| 109 // engine will be defined by policy, extensions, or pre-populated data. | |
| 110 void ClearUserSelectedDefaultSearchEngine(); | |
| 111 | |
| 112 private: | |
| 113 // Handles changes to kDefaultSearchProviderData pref. This includes sync and | |
| 114 // policy changes. Calls LoadDefaultSearchEngineFromPrefs() and | |
| 115 // NotifyObserver() if the effective DSE might have changed. | |
| 116 void OnDefaultSearchPrefChanged(); | |
| 117 | |
| 118 // Handles changes to kSearchProviderOverrides pref. Calls | |
| 119 // LoadPrepopulatedDefaultSearch() and NotifyObserver() if the effective DSE | |
| 120 // might have changed. | |
| 121 void OnOverridesPrefChanged(); | |
| 122 | |
| 123 // Updates |prefs_default_search_| with values from its corresponding | |
| 124 // pre-populated search provider record, if any. | |
| 125 void MergePrefsDataWithPrepopulated(); | |
| 126 | |
| 127 // Reads default search provider data from |pref_service_|, updating | |
| 128 // |prefs_default_search_| and |default_search_controlled_by_policy_|. | |
| 129 // Invokes MergePrefsDataWithPrepopulated(). | |
| 130 void LoadDefaultSearchEngineFromPrefs(); | |
| 131 | |
| 132 // Reads pre-populated search providers, which will be built-in or overridden | |
| 133 // by kSearchProviderOverrides. Updates |fallback_default_search_|. Invoke | |
| 134 // MergePrefsDataWithPrepopulated(). | |
| 135 void LoadPrepopulatedDefaultSearch(); | |
| 136 | |
| 137 // Invokes |change_observer_| if it is not NULL. | |
| 138 void NotifyObserver(); | |
| 139 | |
| 140 PrefService* pref_service_; | |
| 141 const ObserverCallback change_observer_; | |
| 142 PrefChangeRegistrar pref_change_registrar_; | |
| 143 | |
| 144 // Default search engine provided by pre-populated data or by the | |
| 145 // |kSearchProviderOverrides| pref. This will be used when no other default | |
| 146 // search engine has been selected. | |
| 147 scoped_ptr<TemplateURLData> fallback_default_search_; | |
| 148 | |
| 149 // Default search engine provided by prefs (either user prefs or policy | |
| 150 // prefs). This will be null if no value was set in the pref store. | |
| 151 scoped_ptr<TemplateURLData> extension_default_search_; | |
| 152 | |
| 153 // Default search engine provided by extension (usings Settings Override API). | |
| 154 // This will be null if there are no extensions installed which provide | |
| 155 // default search engines. | |
| 156 scoped_ptr<TemplateURLData> prefs_default_search_; | |
| 157 | |
| 158 // True if the default search is currently enforced by policy. | |
| 159 bool default_search_controlled_by_policy_; | |
| 160 | |
| 161 DISALLOW_COPY_AND_ASSIGN(DefaultSearchManager); | |
| 162 }; | |
| 163 | |
| 164 #endif // CHROME_BROWSER_SEARCH_ENGINES_DEFAULT_SEARCH_MANAGER_H_ | |
| OLD | NEW |