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, |