Chromium Code Reviews| 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..d507c9aced095bc2a47cc29480e6c93fcafb2e0b 100644 |
| --- a/chrome/browser/themes/theme_service.cc |
| +++ b/chrome/browser/themes/theme_service.cc |
| @@ -90,6 +90,7 @@ ThemeService::ThemeService() |
| } |
| ThemeService::~ThemeService() { |
| + extension_registry_->RemoveObserver(this); |
| FreePlatformCaches(); |
| } |
| @@ -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,42 @@ 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(); |
| + } |
| +} |
| + |
| +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::OnExtensionLoaded(content::BrowserContext* browser_context, |
| + const extensions::Extension* extension) { |
| + if (extension->is_theme() && installed_pending_load_id_ != kDefaultThemeID && |
|
Bernhard Bauer
2014/09/12 16:05:46
One condition per line makes this more readable. A
Jitu( very slow this week)
2014/09/15 07:13:11
Done.
|
| + installed_pending_load_id_ == extension->id()) { |
| + SetTheme(extension); |
| } |
|
Bernhard Bauer
2014/09/12 16:05:46
Fix indentation.
Jitu( very slow this week)
2014/09/15 07:13:11
Done.
|
| - break; |
| - } |
| + 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() && |
| + extension->id() == GetThemeID()) { |
| + UseDefaultTheme(); |
| } |
| } |
| @@ -505,19 +511,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, |