| Index: chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc
|
| diff --git a/chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc b/chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc
|
| index 8ffa9275392a3d64c520fc9e2819eb4a48b9dfe8..9f0aca7db1d3192017dd1742634ea523159790d0 100644
|
| --- a/chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc
|
| +++ b/chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc
|
| @@ -19,6 +19,7 @@
|
| #include "components/search_engines/search_engines_pref_names.h"
|
| #include "components/search_engines/template_url.h"
|
| #include "components/search_engines/template_url_prepopulate_data.h"
|
| +#include "components/search_engines/util.h"
|
| #include "extensions/browser/extension_prefs.h"
|
| #include "extensions/browser/extension_prefs_factory.h"
|
| #include "extensions/browser/extension_registry.h"
|
| @@ -143,7 +144,7 @@ SettingsOverridesAPI::GetFactoryInstance() {
|
|
|
| void SettingsOverridesAPI::SetPref(const std::string& extension_id,
|
| const std::string& pref_key,
|
| - base::Value* value) {
|
| + base::Value* value) const {
|
| PreferenceAPI* prefs = PreferenceAPI::Get(profile_);
|
| if (!prefs)
|
| return; // Expected in unit tests.
|
| @@ -154,7 +155,7 @@ void SettingsOverridesAPI::SetPref(const std::string& extension_id,
|
| }
|
|
|
| void SettingsOverridesAPI::UnsetPref(const std::string& extension_id,
|
| - const std::string& pref_key) {
|
| + const std::string& pref_key) const {
|
| PreferenceAPI* prefs = PreferenceAPI::Get(profile_);
|
| if (!prefs)
|
| return; // Expected in unit tests.
|
| @@ -236,6 +237,11 @@ void SettingsOverridesAPI::OnExtensionUnloaded(
|
| UnsetPref(extension->id(), prefs::kURLsToRestoreOnStartup);
|
| }
|
| if (settings->search_engine) {
|
| + if (settings->search_engine->is_default) {
|
| + // Current extension can be overriding DSE.
|
| + UnsetPref(extension->id(),
|
| + DefaultSearchManager::kDefaultSearchProviderDataPrefName);
|
| + }
|
| DCHECK(url_service_);
|
| if (url_service_->loaded()) {
|
| url_service_->RemoveExtensionControlledTURL(
|
| @@ -282,6 +288,13 @@ void SettingsOverridesAPI::RegisterSearchProvider(
|
| *data, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
|
|
|
| url_service_->AddExtensionControlledTURL(std::move(turl), std::move(info));
|
| +
|
| + if (settings->search_engine->is_default) {
|
| + // Override current DSE pref to have extension overriden value.
|
| + SetPref(extension->id(),
|
| + DefaultSearchManager::kDefaultSearchProviderDataPrefName,
|
| + TemplateUrlDataToDictionary(*data).release());
|
| + }
|
| }
|
|
|
| template <>
|
|
|