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

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

Issue 244473002: Remove NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED from c/b/e/api (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 months 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 f1b696e38001c2ca2f1c66bf7766855ec381ebcb..f81c4fe41ac630fdc7e6bb4557ad235b70c6d5e4 100644
--- a/chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc
+++ b/chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc
@@ -18,6 +18,7 @@
#include "content/public/browser/notification_source.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_prefs_factory.h"
+#include "extensions/browser/extension_registry.h"
#include "extensions/common/error_utils.h"
#include "extensions/common/manifest_constants.h"
@@ -89,14 +90,9 @@ TemplateURLData ConvertSearchProvider(
SettingsOverridesAPI::SettingsOverridesAPI(content::BrowserContext* context)
: profile_(Profile::FromBrowserContext(context)),
- url_service_(TemplateURLServiceFactory::GetForProfile(profile_)) {
- DCHECK(profile_);
- registrar_.Add(this,
- chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED,
- content::Source<Profile>(profile_));
- registrar_.Add(this,
- chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED,
- content::Source<Profile>(profile_));
+ url_service_(TemplateURLServiceFactory::GetForProfile(profile_)),
+ extension_registry_observer_(this) {
+ extension_registry_observer_.Add(ExtensionRegistry::Get(profile_));
}
SettingsOverridesAPI::~SettingsOverridesAPI() {
@@ -130,93 +126,83 @@ void SettingsOverridesAPI::UnsetPref(const std::string& extension_id,
kExtensionPrefsScopeRegular);
}
-void SettingsOverridesAPI::Observe(
- int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- switch (type) {
- case chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: {
- const Extension* extension =
- content::Details<const Extension>(details).ptr();
- const SettingsOverrides* settings =
- SettingsOverrides::Get(extension);
- if (settings) {
- std::string install_parameter =
- ExtensionPrefs::Get(profile_)->GetInstallParam(extension->id());
- if (settings->homepage) {
- SetPref(extension->id(),
- prefs::kHomePage,
- new base::StringValue(SubstituteInstallParam(
- settings->homepage->spec(), install_parameter)));
- SetPref(extension->id(), prefs::kHomePageIsNewTabPage,
- new base::FundamentalValue(false));
- }
- if (!settings->startup_pages.empty()) {
- SetPref(extension->id(), prefs::kRestoreOnStartup,
- new base::FundamentalValue(
- SessionStartupPref::kPrefValueURLs));
- if (settings->startup_pages.size() > 1) {
- VLOG(1) << extensions::ErrorUtils::FormatErrorMessage(
- kManyStartupPagesWarning, manifest_keys::kSettingsOverride);
- }
- scoped_ptr<base::ListValue> url_list(new base::ListValue);
- url_list->Append(new base::StringValue(SubstituteInstallParam(
- settings->startup_pages[0].spec(), install_parameter)));
- SetPref(extension->id(), prefs::kURLsToRestoreOnStartup,
- url_list.release());
- }
- if (settings->search_engine) {
- // Bring the preference to the correct state. Before this code set it
- // to "true" for all search engines. Thus, we should overwrite it for
- // all search engines.
- if (settings->search_engine->is_default) {
- SetPref(extension->id(), prefs::kDefaultSearchProviderEnabled,
- new base::FundamentalValue(true));
- } else {
- UnsetPref(extension->id(), prefs::kDefaultSearchProviderEnabled);
- }
- DCHECK(url_service_);
- if (url_service_->loaded()) {
- RegisterSearchProvider(extension);
- } else {
- if (!template_url_sub_) {
- template_url_sub_ = url_service_->RegisterOnLoadedCallback(
- base::Bind(&SettingsOverridesAPI::OnTemplateURLsLoaded,
- base::Unretained(this)));
- }
- url_service_->Load();
- pending_extensions_.insert(extension);
- }
- }
+void SettingsOverridesAPI::OnExtensionLoaded(
+ content::BrowserContext* browser_context,
+ const Extension* extension) {
+ const SettingsOverrides* settings = SettingsOverrides::Get(extension);
+ if (settings) {
+ std::string install_parameter =
+ ExtensionPrefs::Get(profile_)->GetInstallParam(extension->id());
+ if (settings->homepage) {
+ SetPref(extension->id(),
+ prefs::kHomePage,
+ new base::StringValue(SubstituteInstallParam(
+ settings->homepage->spec(), install_parameter)));
+ SetPref(extension->id(),
+ prefs::kHomePageIsNewTabPage,
+ new base::FundamentalValue(false));
+ }
+ if (!settings->startup_pages.empty()) {
+ SetPref(extension->id(),
+ prefs::kRestoreOnStartup,
+ new base::FundamentalValue(SessionStartupPref::kPrefValueURLs));
+ if (settings->startup_pages.size() > 1) {
+ VLOG(1) << extensions::ErrorUtils::FormatErrorMessage(
+ kManyStartupPagesWarning,
+ manifest_keys::kSettingsOverride);
}
- break;
+ scoped_ptr<base::ListValue> url_list(new base::ListValue);
+ url_list->Append(new base::StringValue(SubstituteInstallParam(
+ settings->startup_pages[0].spec(), install_parameter)));
+ SetPref(
+ extension->id(), prefs::kURLsToRestoreOnStartup, url_list.release());
}
- case chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: {
- const Extension* extension =
- content::Details<UnloadedExtensionInfo>(details)->extension;
- const SettingsOverrides* settings = SettingsOverrides::Get(extension);
- if (settings) {
- if (settings->homepage) {
- UnsetPref(extension->id(), prefs::kHomePage);
- UnsetPref(extension->id(), prefs::kHomePageIsNewTabPage);
- }
- if (!settings->startup_pages.empty()) {
- UnsetPref(extension->id(), prefs::kRestoreOnStartup);
- UnsetPref(extension->id(), prefs::kURLsToRestoreOnStartup);
- }
- if (settings->search_engine) {
- DCHECK(url_service_);
- if (url_service_->loaded())
- url_service_->RemoveExtensionControlledTURL(extension->id());
- else
- pending_extensions_.erase(extension);
+ if (settings->search_engine) {
+ // Bring the preference to the correct state. Before this code set it
+ // to "true" for all search engines. Thus, we should overwrite it for
+ // all search engines.
+ if (settings->search_engine->is_default) {
+ SetPref(extension->id(),
+ prefs::kDefaultSearchProviderEnabled,
+ new base::FundamentalValue(true));
+ } else {
+ UnsetPref(extension->id(), prefs::kDefaultSearchProviderEnabled);
+ }
+ DCHECK(url_service_);
+ if (url_service_->loaded()) {
+ RegisterSearchProvider(extension);
+ } else {
+ if (!template_url_sub_) {
+ template_url_sub_ = url_service_->RegisterOnLoadedCallback(
+ base::Bind(&SettingsOverridesAPI::OnTemplateURLsLoaded,
+ base::Unretained(this)));
}
+ url_service_->Load();
+ pending_extensions_.insert(extension);
}
- break;
}
- default: {
- NOTREACHED();
- break;
+ }
+}
+void SettingsOverridesAPI::OnExtensionUnloaded(
+ content::BrowserContext* browser_context,
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason) {
+ const SettingsOverrides* settings = SettingsOverrides::Get(extension);
+ if (settings) {
+ if (settings->homepage) {
+ UnsetPref(extension->id(), prefs::kHomePage);
+ UnsetPref(extension->id(), prefs::kHomePageIsNewTabPage);
+ }
+ if (!settings->startup_pages.empty()) {
+ UnsetPref(extension->id(), prefs::kRestoreOnStartup);
+ UnsetPref(extension->id(), prefs::kURLsToRestoreOnStartup);
+ }
+ if (settings->search_engine) {
+ DCHECK(url_service_);
+ if (url_service_->loaded())
+ url_service_->RemoveExtensionControlledTURL(extension->id());
+ else
+ pending_extensions_.erase(extension);
}
}
}

Powered by Google App Engine
This is Rietveld 408576698