| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |