Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(183)

Side by Side Diff: components/search_engines/default_search_manager.cc

Issue 2623833005: Revert of Make extensions DSE persistent in browser prefs (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/search_engines/default_search_manager.h" 5 #include "components/search_engines/default_search_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
11 #include <utility> 11 #include <utility>
12 12
13 #include "base/bind.h" 13 #include "base/bind.h"
14 #include "base/bind_helpers.h" 14 #include "base/bind_helpers.h"
15 #include "base/compiler_specific.h" 15 #include "base/compiler_specific.h"
16 #include "base/i18n/case_conversion.h" 16 #include "base/i18n/case_conversion.h"
17 #include "base/logging.h" 17 #include "base/logging.h"
18 #include "base/strings/string_number_conversions.h"
18 #include "base/strings/string_split.h" 19 #include "base/strings/string_split.h"
19 #include "base/strings/string_util.h" 20 #include "base/strings/string_util.h"
20 #include "base/strings/utf_string_conversions.h" 21 #include "base/strings/utf_string_conversions.h"
21 #include "base/time/time.h" 22 #include "base/time/time.h"
22 #include "components/pref_registry/pref_registry_syncable.h" 23 #include "components/pref_registry/pref_registry_syncable.h"
23 #include "components/prefs/pref_service.h" 24 #include "components/prefs/pref_service.h"
24 #include "components/prefs/pref_value_map.h" 25 #include "components/prefs/pref_value_map.h"
25 #include "components/search_engines/search_engines_pref_names.h" 26 #include "components/search_engines/search_engines_pref_names.h"
26 #include "components/search_engines/template_url_data.h" 27 #include "components/search_engines/template_url_data.h"
27 #include "components/search_engines/template_url_data_util.h" 28 #include "components/search_engines/template_url_data_util.h"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 if (extension_default_search_) { 133 if (extension_default_search_) {
133 if (source) 134 if (source)
134 *source = FROM_EXTENSION; 135 *source = FROM_EXTENSION;
135 return extension_default_search_.get(); 136 return extension_default_search_.get();
136 } 137 }
137 if (prefs_default_search_) { 138 if (prefs_default_search_) {
138 if (source) 139 if (source)
139 *source = FROM_USER; 140 *source = FROM_USER;
140 return prefs_default_search_.get(); 141 return prefs_default_search_.get();
141 } 142 }
143
142 if (source) 144 if (source)
143 *source = FROM_FALLBACK; 145 *source = FROM_FALLBACK;
144 return g_fallback_search_engines_disabled ? 146 return g_fallback_search_engines_disabled ?
145 NULL : fallback_default_search_.get(); 147 NULL : fallback_default_search_.get();
146 } 148 }
147 149
148 DefaultSearchManager::Source 150 DefaultSearchManager::Source
149 DefaultSearchManager::GetDefaultSearchEngineSource() const { 151 DefaultSearchManager::GetDefaultSearchEngineSource() const {
150 Source source; 152 Source source;
151 GetDefaultSearchEngine(&source); 153 GetDefaultSearchEngine(&source);
152 return source; 154 return source;
153 } 155 }
154 156
155 void DefaultSearchManager::SetUserSelectedDefaultSearchEngine( 157 void DefaultSearchManager::SetUserSelectedDefaultSearchEngine(
156 const TemplateURLData& data) { 158 const TemplateURLData& data) {
157 if (!pref_service_) { 159 if (!pref_service_) {
158 prefs_default_search_.reset(new TemplateURLData(data)); 160 prefs_default_search_.reset(new TemplateURLData(data));
159 MergePrefsDataWithPrepopulated(); 161 MergePrefsDataWithPrepopulated();
160 NotifyObserver(); 162 NotifyObserver();
161 return; 163 return;
162 } 164 }
163 165
164 pref_service_->Set(kDefaultSearchProviderDataPrefName, 166 pref_service_->Set(kDefaultSearchProviderDataPrefName,
165 *TemplateURLDataToDictionary(data)); 167 *TemplateURLDataToDictionary(data));
166 } 168 }
167 169
170 void DefaultSearchManager::SetExtensionControlledDefaultSearchEngine(
171 const TemplateURLData& data) {
172 extension_default_search_.reset(new TemplateURLData(data));
173 if (GetDefaultSearchEngineSource() == FROM_EXTENSION)
174 NotifyObserver();
175 }
176
177 void DefaultSearchManager::ClearExtensionControlledDefaultSearchEngine() {
178 Source old_source = GetDefaultSearchEngineSource();
179 extension_default_search_.reset();
180 if (old_source == FROM_EXTENSION)
181 NotifyObserver();
182 }
183
168 void DefaultSearchManager::ClearUserSelectedDefaultSearchEngine() { 184 void DefaultSearchManager::ClearUserSelectedDefaultSearchEngine() {
169 if (pref_service_) { 185 if (pref_service_) {
170 pref_service_->ClearPref(kDefaultSearchProviderDataPrefName); 186 pref_service_->ClearPref(kDefaultSearchProviderDataPrefName);
171 } else { 187 } else {
172 prefs_default_search_.reset(); 188 prefs_default_search_.reset();
173 NotifyObserver(); 189 NotifyObserver();
174 } 190 }
175 } 191 }
176 192
177 void DefaultSearchManager::OnDefaultSearchPrefChanged() { 193 void DefaultSearchManager::OnDefaultSearchPrefChanged() {
178 bool source_was_fallback = GetDefaultSearchEngineSource() == FROM_FALLBACK; 194 Source source = GetDefaultSearchEngineSource();
179
180 LoadDefaultSearchEngineFromPrefs(); 195 LoadDefaultSearchEngineFromPrefs();
181 196
182 // The effective DSE may have changed unless we were using the fallback source 197 // If we were/are FROM_USER or FROM_POLICY the effective DSE may have changed.
183 // both before and after the above load. 198 if (source != FROM_USER && source != FROM_POLICY)
184 if (!source_was_fallback || (GetDefaultSearchEngineSource() != FROM_FALLBACK)) 199 source = GetDefaultSearchEngineSource();
200 if (source == FROM_USER || source == FROM_POLICY)
185 NotifyObserver(); 201 NotifyObserver();
186 } 202 }
187 203
188 void DefaultSearchManager::OnOverridesPrefChanged() { 204 void DefaultSearchManager::OnOverridesPrefChanged() {
189 LoadPrepopulatedDefaultSearch(); 205 LoadPrepopulatedDefaultSearch();
190 206
191 TemplateURLData* effective_data = GetDefaultSearchEngine(NULL); 207 TemplateURLData* effective_data = GetDefaultSearchEngine(NULL);
192 if (effective_data && effective_data->prepopulate_id) { 208 if (effective_data && effective_data->prepopulate_id) {
193 // A user-selected, policy-selected or fallback pre-populated engine is 209 // A user-selected, policy-selected or fallback pre-populated engine is
194 // active and may have changed with this event. 210 // active and may have changed with this event.
(...skipping 28 matching lines...) Expand all
223 prefs_default_search_ = std::move(engine); 239 prefs_default_search_ = std::move(engine);
224 return; 240 return;
225 } 241 }
226 } 242 }
227 243
228 void DefaultSearchManager::LoadDefaultSearchEngineFromPrefs() { 244 void DefaultSearchManager::LoadDefaultSearchEngineFromPrefs() {
229 if (!pref_service_) 245 if (!pref_service_)
230 return; 246 return;
231 247
232 prefs_default_search_.reset(); 248 prefs_default_search_.reset();
233 extension_default_search_.reset();
234 const PrefService::Preference* pref = 249 const PrefService::Preference* pref =
235 pref_service_->FindPreference(kDefaultSearchProviderDataPrefName); 250 pref_service_->FindPreference(kDefaultSearchProviderDataPrefName);
236 DCHECK(pref); 251 DCHECK(pref);
237 default_search_controlled_by_policy_ = pref->IsManaged(); 252 default_search_controlled_by_policy_ = pref->IsManaged();
238 253
239 const base::DictionaryValue* url_dict = 254 const base::DictionaryValue* url_dict =
240 pref_service_->GetDictionary(kDefaultSearchProviderDataPrefName); 255 pref_service_->GetDictionary(kDefaultSearchProviderDataPrefName);
241 if (url_dict->empty()) 256 if (url_dict->empty())
242 return; 257 return;
243 258
244 if (default_search_controlled_by_policy_) { 259 if (default_search_controlled_by_policy_) {
245 bool disabled_by_policy = false; 260 bool disabled_by_policy = false;
246 if (url_dict->GetBoolean(kDisabledByPolicy, &disabled_by_policy) && 261 if (url_dict->GetBoolean(kDisabledByPolicy, &disabled_by_policy) &&
247 disabled_by_policy) 262 disabled_by_policy)
248 return; 263 return;
249 } 264 }
250 265
251 auto turl_data = TemplateURLDataFromDictionary(*url_dict); 266 auto turl_data = TemplateURLDataFromDictionary(*url_dict);
252 if (!turl_data) 267 if (!turl_data)
253 return; 268 return;
254 269
255 // Check if default search preference is overriden by extension. 270 prefs_default_search_ = std::move(turl_data);
256 if (pref->IsExtensionControlled()) { 271 MergePrefsDataWithPrepopulated();
257 extension_default_search_ = std::move(turl_data);
258 } else {
259 prefs_default_search_ = std::move(turl_data);
260 MergePrefsDataWithPrepopulated();
261 }
262 } 272 }
263 273
264 void DefaultSearchManager::LoadPrepopulatedDefaultSearch() { 274 void DefaultSearchManager::LoadPrepopulatedDefaultSearch() {
265 std::unique_ptr<TemplateURLData> data = 275 std::unique_ptr<TemplateURLData> data =
266 TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(pref_service_); 276 TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(pref_service_);
267 fallback_default_search_ = std::move(data); 277 fallback_default_search_ = std::move(data);
268 MergePrefsDataWithPrepopulated(); 278 MergePrefsDataWithPrepopulated();
269 } 279 }
270 280
271 void DefaultSearchManager::NotifyObserver() { 281 void DefaultSearchManager::NotifyObserver() {
272 if (!change_observer_.is_null()) { 282 if (!change_observer_.is_null()) {
273 Source source = FROM_FALLBACK; 283 Source source = FROM_FALLBACK;
274 TemplateURLData* data = GetDefaultSearchEngine(&source); 284 TemplateURLData* data = GetDefaultSearchEngine(&source);
275 change_observer_.Run(data, source); 285 change_observer_.Run(data, source);
276 } 286 }
277 } 287 }
OLDNEW
« no previous file with comments | « components/search_engines/default_search_manager.h ('k') | components/search_engines/default_search_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698