Index: chrome/browser/themes/theme_service.cc |
diff --git a/chrome/browser/themes/theme_service.cc b/chrome/browser/themes/theme_service.cc |
index 1dba96f3942c8ba2eb9da04364133930dcdf980c..cd67e3aab4303268d3ff4adcd67d60203f2ae4eb 100644 |
--- a/chrome/browser/themes/theme_service.cc |
+++ b/chrome/browser/themes/theme_service.cc |
@@ -86,6 +86,7 @@ ThemeService::ThemeService() |
profile_(NULL), |
installed_pending_load_id_(kDefaultThemeID), |
number_of_infobars_(0), |
+ extension_registry_(NULL), |
weak_ptr_factory_(this) { |
} |
@@ -99,6 +100,8 @@ void ThemeService::Init(Profile* profile) { |
LoadThemePrefs(); |
+ extension_registry_ = extensions::ExtensionRegistry::Get(profile_); |
+ |
registrar_.Add(this, |
extensions::NOTIFICATION_EXTENSIONS_READY_DEPRECATED, |
content::Source<Profile>(profile_)); |
@@ -252,39 +255,50 @@ void ThemeService::Observe(int type, |
content::Source<Profile>(profile_)); |
OnExtensionServiceReady(); |
break; |
- case extensions::NOTIFICATION_EXTENSION_WILL_BE_INSTALLED_DEPRECATED: { |
- // The theme may be initially disabled. Wait till it is loaded (if ever). |
- Details<const extensions::InstalledExtensionInfo> installed_details( |
- details); |
- if (installed_details->extension->is_theme()) |
- installed_pending_load_id_ = installed_details->extension->id(); |
- break; |
- } |
- case extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: { |
- const Extension* extension = Details<const Extension>(details).ptr(); |
- if (extension->is_theme() && |
- installed_pending_load_id_ != kDefaultThemeID && |
- installed_pending_load_id_ == extension->id()) { |
- SetTheme(extension); |
- } |
- installed_pending_load_id_ = kDefaultThemeID; |
- break; |
- } |
case extensions::NOTIFICATION_EXTENSION_ENABLED: { |
const Extension* extension = Details<const Extension>(details).ptr(); |
if (extension->is_theme()) |
SetTheme(extension); |
break; |
} |
- case extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: { |
- Details<const UnloadedExtensionInfo> unloaded_details(details); |
- if (unloaded_details->reason != UnloadedExtensionInfo::REASON_UPDATE && |
- unloaded_details->extension->is_theme() && |
- unloaded_details->extension->id() == GetThemeID()) { |
- UseDefaultTheme(); |
- } |
- break; |
- } |
+ } |
+} |
+ |
+void ThemeService::OnExtensionLoaded(content::BrowserContext* browser_context, |
+ const extensions::Extension* extension) { |
+ if (extension->is_theme() && |
+ installed_pending_load_id_ != kDefaultThemeID && |
+ installed_pending_load_id_ == extension->id()) { |
+ SetTheme(extension); |
+ } |
+ installed_pending_load_id_ = kDefaultThemeID; |
+} |
+ |
+void ThemeService::OnExtensionUnloaded( |
+ content::BrowserContext* browser_context, |
+ const extensions::Extension* extension, |
+ extensions::UnloadedExtensionInfo::Reason reason) { |
+ if (reason != UnloadedExtensionInfo::REASON_UPDATE && extension->is_theme() && |
Bernhard Bauer
2014/10/15 13:21:04
Also here please, and below. The original code in
Jitu( very slow this week)
2014/10/15 14:19:06
In original code in Observe(), it is casting the d
Bernhard Bauer
2014/10/15 14:23:27
I was referring to the formatting. The original co
|
+ extension->id() == GetThemeID()) { |
+ UseDefaultTheme(); |
+ } |
+} |
+ |
+void ThemeService::OnExtensionWillBeInstalled( |
+ content::BrowserContext* browser_context, |
+ const extensions::Extension* extension, |
+ bool is_update, |
+ bool from_ephemeral, |
+ const std::string& old_name) { |
+ // The theme may be initially disabled. Wait till it is loaded (if ever). |
+ if (extension->is_theme()) |
+ installed_pending_load_id_ = extension->id(); |
+} |
+ |
+void ThemeService::Shutdown() { |
+ if (extension_registry_) { |
Jitu( very slow this week)
2014/10/15 14:19:06
Removed the check
|
+ extension_registry_->RemoveObserver(this); |
+ extension_registry_ = NULL; |
} |
} |
@@ -505,19 +519,10 @@ void ThemeService::OnExtensionServiceReady() { |
NotifyThemeChanged(); |
} |
- registrar_.Add( |
- this, |
- extensions::NOTIFICATION_EXTENSION_WILL_BE_INSTALLED_DEPRECATED, |
- content::Source<Profile>(profile_)); |
- registrar_.Add(this, |
- extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, |
- content::Source<Profile>(profile_)); |
+ extension_registry_->AddObserver(this); |
registrar_.Add(this, |
extensions::NOTIFICATION_EXTENSION_ENABLED, |
content::Source<Profile>(profile_)); |
- registrar_.Add(this, |
- extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, |
- content::Source<Profile>(profile_)); |
base::MessageLoop::current()->PostDelayedTask(FROM_HERE, |
base::Bind(&ThemeService::RemoveUnusedThemes, |