| 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 869ce645584678fc8142ca9131890994430289cc..226622a398aa09cd92ec76834f047b6e2c29b329 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"
|
| @@ -79,6 +78,8 @@ const char DefaultSearchManager::kSearchTermsReplacementKey[] =
|
| const char DefaultSearchManager::kCreatedByPolicy[] = "created_by_policy";
|
| const char DefaultSearchManager::kDisabledByPolicy[] = "disabled_by_policy";
|
|
|
| +const char DefaultSearchManager::kExtensionID[] = "extension_id";
|
| +
|
| DefaultSearchManager::DefaultSearchManager(
|
| PrefService* pref_service,
|
| const ObserverCallback& change_observer)
|
| @@ -140,7 +141,6 @@ TemplateURLData* DefaultSearchManager::GetDefaultSearchEngine(
|
| *source = FROM_USER;
|
| return prefs_default_search_.get();
|
| }
|
| -
|
| if (source)
|
| *source = FROM_FALLBACK;
|
| return g_fallback_search_engines_disabled ?
|
| @@ -167,20 +167,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);
|
| @@ -191,13 +177,13 @@ void DefaultSearchManager::ClearUserSelectedDefaultSearchEngine() {
|
| }
|
|
|
| void DefaultSearchManager::OnDefaultSearchPrefChanged() {
|
| - Source source = GetDefaultSearchEngineSource();
|
| + bool source_was_fallback = GetDefaultSearchEngineSource() == FROM_FALLBACK;
|
| +
|
| LoadDefaultSearchEngineFromPrefs();
|
|
|
| - // If we were/are FROM_USER or FROM_POLICY the effective DSE may have changed.
|
| - if (source != FROM_USER && source != FROM_POLICY)
|
| - source = GetDefaultSearchEngineSource();
|
| - if (source == FROM_USER || source == FROM_POLICY)
|
| + // The effective DSE may have changed unless we were using the fallback source
|
| + // both before and after the above load.
|
| + if (!source_was_fallback || (GetDefaultSearchEngineSource() != FROM_FALLBACK))
|
| NotifyObserver();
|
| }
|
|
|
| @@ -245,6 +231,7 @@ void DefaultSearchManager::LoadDefaultSearchEngineFromPrefs() {
|
| return;
|
|
|
| prefs_default_search_.reset();
|
| + extension_default_search_.reset();
|
| const PrefService::Preference* pref =
|
| pref_service_->FindPreference(kDefaultSearchProviderDataPrefName);
|
| DCHECK(pref);
|
| @@ -266,8 +253,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_ = std::move(turl_data);
|
| + } else {
|
| + prefs_default_search_ = std::move(turl_data);
|
| + MergePrefsDataWithPrepopulated();
|
| + }
|
| }
|
|
|
| void DefaultSearchManager::LoadPrepopulatedDefaultSearch() {
|
|
|