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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/extensions/api/settings_overrides/settings_overrides_ap i.h" 5 #include "chrome/browser/extensions/api/settings_overrides/settings_overrides_ap i.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "chrome/browser/extensions/api/preference/preference_api.h" 13 #include "chrome/browser/extensions/api/preference/preference_api.h"
14 #include "chrome/browser/prefs/session_startup_pref.h" 14 #include "chrome/browser/prefs/session_startup_pref.h"
15 #include "chrome/browser/profiles/profile.h" 15 #include "chrome/browser/profiles/profile.h"
16 #include "chrome/browser/search_engines/template_url_service_factory.h" 16 #include "chrome/browser/search_engines/template_url_service_factory.h"
17 #include "chrome/common/extensions/manifest_handlers/settings_overrides_handler. h" 17 #include "chrome/common/extensions/manifest_handlers/settings_overrides_handler. h"
18 #include "chrome/common/pref_names.h" 18 #include "chrome/common/pref_names.h"
19 #include "components/search_engines/search_engines_pref_names.h" 19 #include "components/search_engines/search_engines_pref_names.h"
20 #include "components/search_engines/template_url.h" 20 #include "components/search_engines/template_url.h"
21 #include "components/search_engines/template_url_prepopulate_data.h" 21 #include "components/search_engines/template_url_prepopulate_data.h"
22 #include "components/search_engines/util.h"
22 #include "extensions/browser/extension_prefs.h" 23 #include "extensions/browser/extension_prefs.h"
23 #include "extensions/browser/extension_prefs_factory.h" 24 #include "extensions/browser/extension_prefs_factory.h"
24 #include "extensions/browser/extension_registry.h" 25 #include "extensions/browser/extension_registry.h"
25 #include "extensions/common/error_utils.h" 26 #include "extensions/common/error_utils.h"
26 #include "extensions/common/manifest_constants.h" 27 #include "extensions/common/manifest_constants.h"
27 28
28 namespace extensions { 29 namespace extensions {
29 30
30 namespace { 31 namespace {
31 32
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 SettingsOverridesAPI::~SettingsOverridesAPI() { 137 SettingsOverridesAPI::~SettingsOverridesAPI() {
137 } 138 }
138 139
139 BrowserContextKeyedAPIFactory<SettingsOverridesAPI>* 140 BrowserContextKeyedAPIFactory<SettingsOverridesAPI>*
140 SettingsOverridesAPI::GetFactoryInstance() { 141 SettingsOverridesAPI::GetFactoryInstance() {
141 return g_factory.Pointer(); 142 return g_factory.Pointer();
142 } 143 }
143 144
144 void SettingsOverridesAPI::SetPref(const std::string& extension_id, 145 void SettingsOverridesAPI::SetPref(const std::string& extension_id,
145 const std::string& pref_key, 146 const std::string& pref_key,
146 base::Value* value) { 147 base::Value* value) const {
147 PreferenceAPI* prefs = PreferenceAPI::Get(profile_); 148 PreferenceAPI* prefs = PreferenceAPI::Get(profile_);
148 if (!prefs) 149 if (!prefs)
149 return; // Expected in unit tests. 150 return; // Expected in unit tests.
150 prefs->SetExtensionControlledPref(extension_id, 151 prefs->SetExtensionControlledPref(extension_id,
151 pref_key, 152 pref_key,
152 kExtensionPrefsScopeRegular, 153 kExtensionPrefsScopeRegular,
153 value); 154 value);
154 } 155 }
155 156
156 void SettingsOverridesAPI::UnsetPref(const std::string& extension_id, 157 void SettingsOverridesAPI::UnsetPref(const std::string& extension_id,
157 const std::string& pref_key) { 158 const std::string& pref_key) const {
158 PreferenceAPI* prefs = PreferenceAPI::Get(profile_); 159 PreferenceAPI* prefs = PreferenceAPI::Get(profile_);
159 if (!prefs) 160 if (!prefs)
160 return; // Expected in unit tests. 161 return; // Expected in unit tests.
161 prefs->RemoveExtensionControlledPref( 162 prefs->RemoveExtensionControlledPref(
162 extension_id, 163 extension_id,
163 pref_key, 164 pref_key,
164 kExtensionPrefsScopeRegular); 165 kExtensionPrefsScopeRegular);
165 } 166 }
166 167
167 void SettingsOverridesAPI::OnExtensionLoaded( 168 void SettingsOverridesAPI::OnExtensionLoaded(
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 if (settings) { 230 if (settings) {
230 if (settings->homepage) { 231 if (settings->homepage) {
231 UnsetPref(extension->id(), prefs::kHomePage); 232 UnsetPref(extension->id(), prefs::kHomePage);
232 UnsetPref(extension->id(), prefs::kHomePageIsNewTabPage); 233 UnsetPref(extension->id(), prefs::kHomePageIsNewTabPage);
233 } 234 }
234 if (!settings->startup_pages.empty()) { 235 if (!settings->startup_pages.empty()) {
235 UnsetPref(extension->id(), prefs::kRestoreOnStartup); 236 UnsetPref(extension->id(), prefs::kRestoreOnStartup);
236 UnsetPref(extension->id(), prefs::kURLsToRestoreOnStartup); 237 UnsetPref(extension->id(), prefs::kURLsToRestoreOnStartup);
237 } 238 }
238 if (settings->search_engine) { 239 if (settings->search_engine) {
240 if (settings->search_engine->is_default) {
241 // Current extension can be overriding DSE.
242 UnsetPref(extension->id(),
243 DefaultSearchManager::kDefaultSearchProviderDataPrefName);
244 }
239 DCHECK(url_service_); 245 DCHECK(url_service_);
240 if (url_service_->loaded()) { 246 if (url_service_->loaded()) {
241 url_service_->RemoveExtensionControlledTURL( 247 url_service_->RemoveExtensionControlledTURL(
242 extension->id(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); 248 extension->id(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
243 } else { 249 } else {
244 pending_extensions_.erase(extension); 250 pending_extensions_.erase(extension);
245 } 251 }
246 } 252 }
247 } 253 }
248 } 254 }
(...skipping 26 matching lines...) Expand all
275 ExtensionPrefs* prefs = ExtensionPrefs::Get(profile_); 281 ExtensionPrefs* prefs = ExtensionPrefs::Get(profile_);
276 info->install_time = prefs->GetInstallTime(extension->id()); 282 info->install_time = prefs->GetInstallTime(extension->id());
277 std::string install_parameter = prefs->GetInstallParam(extension->id()); 283 std::string install_parameter = prefs->GetInstallParam(extension->id());
278 std::unique_ptr<TemplateURLData> data = ConvertSearchProvider( 284 std::unique_ptr<TemplateURLData> data = ConvertSearchProvider(
279 profile_->GetPrefs(), *settings->search_engine, install_parameter); 285 profile_->GetPrefs(), *settings->search_engine, install_parameter);
280 data->show_in_default_list = info->wants_to_be_default_engine; 286 data->show_in_default_list = info->wants_to_be_default_engine;
281 auto turl = base::MakeUnique<TemplateURL>( 287 auto turl = base::MakeUnique<TemplateURL>(
282 *data, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); 288 *data, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
283 289
284 url_service_->AddExtensionControlledTURL(std::move(turl), std::move(info)); 290 url_service_->AddExtensionControlledTURL(std::move(turl), std::move(info));
291
292 if (settings->search_engine->is_default) {
293 // Override current DSE pref to have extension overriden value.
294 SetPref(extension->id(),
295 DefaultSearchManager::kDefaultSearchProviderDataPrefName,
296 TemplateUrlDataToDictionary(*data).release());
297 }
285 } 298 }
286 299
287 template <> 300 template <>
288 void BrowserContextKeyedAPIFactory< 301 void BrowserContextKeyedAPIFactory<
289 SettingsOverridesAPI>::DeclareFactoryDependencies() { 302 SettingsOverridesAPI>::DeclareFactoryDependencies() {
290 DependsOn(ExtensionPrefsFactory::GetInstance()); 303 DependsOn(ExtensionPrefsFactory::GetInstance());
291 DependsOn(PreferenceAPI::GetFactoryInstance()); 304 DependsOn(PreferenceAPI::GetFactoryInstance());
292 DependsOn(TemplateURLServiceFactory::GetInstance()); 305 DependsOn(TemplateURLServiceFactory::GetInstance());
293 } 306 }
294 307
295 } // namespace extensions 308 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698