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

Unified Diff: chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc

Issue 2479113002: Make extensions DSE persistent in browser prefs (Closed)
Patch Set: Move extension overriden DSE logic to setting_override_api.cc Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
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 <>

Powered by Google App Engine
This is Rietveld 408576698