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

Side by Side Diff: chrome/browser/themes/theme_service.cc

Issue 566573004: Remove deprecated extension notification from themeservice. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed indentation Created 6 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/themes/theme_service.h" 5 #include "chrome/browser/themes/theme_service.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/ref_counted_memory.h" 8 #include "base/memory/ref_counted_memory.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 ThemeService::ThemeService() 83 ThemeService::ThemeService()
84 : ready_(false), 84 : ready_(false),
85 rb_(ResourceBundle::GetSharedInstance()), 85 rb_(ResourceBundle::GetSharedInstance()),
86 profile_(NULL), 86 profile_(NULL),
87 installed_pending_load_id_(kDefaultThemeID), 87 installed_pending_load_id_(kDefaultThemeID),
88 number_of_infobars_(0), 88 number_of_infobars_(0),
89 weak_ptr_factory_(this) { 89 weak_ptr_factory_(this) {
90 } 90 }
91 91
92 ThemeService::~ThemeService() { 92 ThemeService::~ThemeService() {
93 extension_registry_->RemoveObserver(this);
93 FreePlatformCaches(); 94 FreePlatformCaches();
94 } 95 }
95 96
96 void ThemeService::Init(Profile* profile) { 97 void ThemeService::Init(Profile* profile) {
97 DCHECK(CalledOnValidThread()); 98 DCHECK(CalledOnValidThread());
98 profile_ = profile; 99 profile_ = profile;
99 100
100 LoadThemePrefs(); 101 LoadThemePrefs();
101 102
103 extension_registry_ = extensions::ExtensionRegistry::Get(profile_);
pkotwicz 2014/09/16 15:18:25 I am unsure if you gain anything from caching |ext
Bernhard Bauer 2014/09/24 13:06:41 ^^^
104
102 registrar_.Add(this, 105 registrar_.Add(this,
103 extensions::NOTIFICATION_EXTENSIONS_READY_DEPRECATED, 106 extensions::NOTIFICATION_EXTENSIONS_READY_DEPRECATED,
104 content::Source<Profile>(profile_)); 107 content::Source<Profile>(profile_));
105 108
106 theme_syncable_service_.reset(new ThemeSyncableService(profile_, this)); 109 theme_syncable_service_.reset(new ThemeSyncableService(profile_, this));
107 } 110 }
108 111
109 gfx::Image ThemeService::GetImageNamed(int id) const { 112 gfx::Image ThemeService::GetImageNamed(int id) const {
110 DCHECK(CalledOnValidThread()); 113 DCHECK(CalledOnValidThread());
111 114
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 const content::NotificationSource& source, 248 const content::NotificationSource& source,
246 const content::NotificationDetails& details) { 249 const content::NotificationDetails& details) {
247 using content::Details; 250 using content::Details;
248 switch (type) { 251 switch (type) {
249 case extensions::NOTIFICATION_EXTENSIONS_READY_DEPRECATED: 252 case extensions::NOTIFICATION_EXTENSIONS_READY_DEPRECATED:
250 registrar_.Remove(this, 253 registrar_.Remove(this,
251 extensions::NOTIFICATION_EXTENSIONS_READY_DEPRECATED, 254 extensions::NOTIFICATION_EXTENSIONS_READY_DEPRECATED,
252 content::Source<Profile>(profile_)); 255 content::Source<Profile>(profile_));
253 OnExtensionServiceReady(); 256 OnExtensionServiceReady();
254 break; 257 break;
255 case extensions::NOTIFICATION_EXTENSION_WILL_BE_INSTALLED_DEPRECATED: {
256 // The theme may be initially disabled. Wait till it is loaded (if ever).
257 Details<const extensions::InstalledExtensionInfo> installed_details(
258 details);
259 if (installed_details->extension->is_theme())
260 installed_pending_load_id_ = installed_details->extension->id();
261 break;
262 }
263 case extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: {
264 const Extension* extension = Details<const Extension>(details).ptr();
265 if (extension->is_theme() &&
266 installed_pending_load_id_ != kDefaultThemeID &&
267 installed_pending_load_id_ == extension->id()) {
268 SetTheme(extension);
269 }
270 installed_pending_load_id_ = kDefaultThemeID;
271 break;
272 }
273 case extensions::NOTIFICATION_EXTENSION_ENABLED: { 258 case extensions::NOTIFICATION_EXTENSION_ENABLED: {
274 const Extension* extension = Details<const Extension>(details).ptr(); 259 const Extension* extension = Details<const Extension>(details).ptr();
275 if (extension->is_theme()) 260 if (extension->is_theme())
276 SetTheme(extension); 261 SetTheme(extension);
277 break; 262 break;
278 } 263 }
279 case extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: {
280 Details<const UnloadedExtensionInfo> unloaded_details(details);
281 if (unloaded_details->reason != UnloadedExtensionInfo::REASON_UPDATE &&
282 unloaded_details->extension->is_theme() &&
283 unloaded_details->extension->id() == GetThemeID()) {
284 UseDefaultTheme();
285 }
286 break;
287 }
288 } 264 }
289 } 265 }
290 266
267 void ThemeService::OnExtensionWillBeInstalled(
268 content::BrowserContext* browser_context,
269 const extensions::Extension* extension,
270 bool is_update,
271 bool from_ephemeral,
272 const std::string& old_name) {
273 // The theme may be initially disabled. Wait till it is loaded (if ever).
274 if (extension->is_theme())
275 installed_pending_load_id_ = extension->id();
276 }
277
278 void ThemeService::OnExtensionLoaded(content::BrowserContext* browser_context,
279 const extensions::Extension* extension) {
280 if (extension->is_theme() &&
281 installed_pending_load_id_ != kDefaultThemeID &&
282 installed_pending_load_id_ == extension->id()) {
283 SetTheme(extension);
284 }
285 installed_pending_load_id_ = kDefaultThemeID;
286 }
287
288 void ThemeService::OnExtensionUnloaded(
289 content::BrowserContext* browser_context,
290 const extensions::Extension* extension,
291 extensions::UnloadedExtensionInfo::Reason reason) {
292 if (reason != UnloadedExtensionInfo::REASON_UPDATE && extension->is_theme() &&
293 extension->id() == GetThemeID()) {
294 UseDefaultTheme();
295 }
296 }
297
291 void ThemeService::SetTheme(const Extension* extension) { 298 void ThemeService::SetTheme(const Extension* extension) {
292 DCHECK(extension->is_theme()); 299 DCHECK(extension->is_theme());
293 ExtensionService* service = 300 ExtensionService* service =
294 extensions::ExtensionSystem::Get(profile_)->extension_service(); 301 extensions::ExtensionSystem::Get(profile_)->extension_service();
295 if (!service->IsExtensionEnabled(extension->id())) { 302 if (!service->IsExtensionEnabled(extension->id())) {
296 // |extension| is disabled when reverting to the previous theme via an 303 // |extension| is disabled when reverting to the previous theme via an
297 // infobar. 304 // infobar.
298 service->EnableExtension(extension->id()); 305 service->EnableExtension(extension->id());
299 // Enabling the extension will call back to SetTheme(). 306 // Enabling the extension will call back to SetTheme().
300 return; 307 return;
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 // If the ThemeService is not ready yet, the custom theme data pack needs to 505 // If the ThemeService is not ready yet, the custom theme data pack needs to
499 // be recreated from the extension. 506 // be recreated from the extension.
500 MigrateTheme(); 507 MigrateTheme();
501 set_ready(); 508 set_ready();
502 509
503 // Send notification in case anyone requested data and cached it when the 510 // Send notification in case anyone requested data and cached it when the
504 // theme service was not ready yet. 511 // theme service was not ready yet.
505 NotifyThemeChanged(); 512 NotifyThemeChanged();
506 } 513 }
507 514
508 registrar_.Add( 515 extension_registry_->AddObserver(this);
509 this,
510 extensions::NOTIFICATION_EXTENSION_WILL_BE_INSTALLED_DEPRECATED,
511 content::Source<Profile>(profile_));
512 registrar_.Add(this,
513 extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED,
514 content::Source<Profile>(profile_));
515 registrar_.Add(this, 516 registrar_.Add(this,
516 extensions::NOTIFICATION_EXTENSION_ENABLED, 517 extensions::NOTIFICATION_EXTENSION_ENABLED,
517 content::Source<Profile>(profile_)); 518 content::Source<Profile>(profile_));
518 registrar_.Add(this,
519 extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED,
520 content::Source<Profile>(profile_));
521 519
522 base::MessageLoop::current()->PostDelayedTask(FROM_HERE, 520 base::MessageLoop::current()->PostDelayedTask(FROM_HERE,
523 base::Bind(&ThemeService::RemoveUnusedThemes, 521 base::Bind(&ThemeService::RemoveUnusedThemes,
524 weak_ptr_factory_.GetWeakPtr(), 522 weak_ptr_factory_.GetWeakPtr(),
525 false), 523 false),
526 base::TimeDelta::FromSeconds(kRemoveUnusedThemesStartupDelay)); 524 base::TimeDelta::FromSeconds(kRemoveUnusedThemesStartupDelay));
527 } 525 }
528 526
529 void ThemeService::MigrateTheme() { 527 void ThemeService::MigrateTheme() {
530 // TODO(erg): We need to pop up a dialog informing the user that their 528 // TODO(erg): We need to pop up a dialog informing the user that their
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 void ThemeService::OnInfobarDestroyed() { 601 void ThemeService::OnInfobarDestroyed() {
604 number_of_infobars_--; 602 number_of_infobars_--;
605 603
606 if (number_of_infobars_ == 0) 604 if (number_of_infobars_ == 0)
607 RemoveUnusedThemes(false); 605 RemoveUnusedThemes(false);
608 } 606 }
609 607
610 ThemeSyncableService* ThemeService::GetThemeSyncableService() const { 608 ThemeSyncableService* ThemeService::GetThemeSyncableService() const {
611 return theme_syncable_service_.get(); 609 return theme_syncable_service_.get();
612 } 610 }
OLDNEW
« chrome/browser/themes/theme_service.h ('K') | « chrome/browser/themes/theme_service.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698