| Index: components/search_engines/default_search_manager.cc
|
| diff --git a/components/search_engines/default_search_manager.cc b/components/search_engines/default_search_manager.cc
|
| index b7fd42847b3d9878eb9238e496c5a446e2cda48a..c8672f3e30a1318e45d9725802619ba0b9c77384 100644
|
| --- a/components/search_engines/default_search_manager.cc
|
| +++ b/components/search_engines/default_search_manager.cc
|
| @@ -15,7 +15,6 @@
|
| #include "base/compiler_specific.h"
|
| #include "base/i18n/case_conversion.h"
|
| #include "base/logging.h"
|
| -#include "base/strings/string_number_conversions.h"
|
| #include "base/strings/string_split.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| @@ -139,7 +138,6 @@ TemplateURLData* DefaultSearchManager::GetDefaultSearchEngine(
|
| *source = FROM_USER;
|
| return prefs_default_search_.get();
|
| }
|
| -
|
| if (source)
|
| *source = FROM_FALLBACK;
|
| return g_fallback_search_engines_disabled ?
|
| @@ -165,20 +163,6 @@ void DefaultSearchManager::SetUserSelectedDefaultSearchEngine(
|
| *TemplateURLDataToDictionary(data));
|
| }
|
|
|
| -void DefaultSearchManager::SetExtensionControlledDefaultSearchEngine(
|
| - const TemplateURLData& data) {
|
| - extension_default_search_.reset(new TemplateURLData(data));
|
| - if (GetDefaultSearchEngineSource() == FROM_EXTENSION)
|
| - NotifyObserver();
|
| -}
|
| -
|
| -void DefaultSearchManager::ClearExtensionControlledDefaultSearchEngine() {
|
| - Source old_source = GetDefaultSearchEngineSource();
|
| - extension_default_search_.reset();
|
| - if (old_source == FROM_EXTENSION)
|
| - NotifyObserver();
|
| -}
|
| -
|
| void DefaultSearchManager::ClearUserSelectedDefaultSearchEngine() {
|
| if (pref_service_) {
|
| pref_service_->ClearPref(kDefaultSearchProviderDataPrefName);
|
| @@ -192,10 +176,10 @@ void DefaultSearchManager::OnDefaultSearchPrefChanged() {
|
| Source source = GetDefaultSearchEngineSource();
|
| LoadDefaultSearchEngineFromPrefs();
|
|
|
| - // If we were/are FROM_USER or FROM_POLICY the effective DSE may have changed.
|
| - if (source != FROM_USER && source != FROM_POLICY)
|
| + if (source == FROM_FALLBACK)
|
| source = GetDefaultSearchEngineSource();
|
| - if (source == FROM_USER || source == FROM_POLICY)
|
| + // The effective DSE may have changed if it was/become non fallback.
|
| + if (source != FROM_FALLBACK)
|
| NotifyObserver();
|
| }
|
|
|
| @@ -243,6 +227,7 @@ void DefaultSearchManager::LoadDefaultSearchEngineFromPrefs() {
|
| return;
|
|
|
| prefs_default_search_.reset();
|
| + extension_default_search_.reset();
|
| const PrefService::Preference* pref =
|
| pref_service_->FindPreference(kDefaultSearchProviderDataPrefName);
|
| DCHECK(pref);
|
| @@ -264,8 +249,13 @@ void DefaultSearchManager::LoadDefaultSearchEngineFromPrefs() {
|
| if (!turl_data)
|
| return;
|
|
|
| - prefs_default_search_ = std::move(turl_data);
|
| - MergePrefsDataWithPrepopulated();
|
| + // Check if default search preference is overriden by extension.
|
| + if (pref->IsExtensionControlled()) {
|
| + extension_default_search_ = TemplateURLDataFromDictionary(*url_dict);
|
| + } else {
|
| + prefs_default_search_ = TemplateURLDataFromDictionary(*url_dict);
|
| + MergePrefsDataWithPrepopulated();
|
| + }
|
| }
|
|
|
| void DefaultSearchManager::LoadPrepopulatedDefaultSearch() {
|
|
|