Chromium Code Reviews

Side by Side Diff: chrome/browser/extensions/extensions_service.cc

Issue 3304015: Use PrefChangeRegistrar everywhere (Closed)
Patch Set: final version for commit Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/extensions/extensions_service.h" 5 #include "chrome/browser/extensions/extensions_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 510 matching lines...)
521 } 521 }
522 522
523 bool ExtensionsService::IsDownloadFromMiniGallery(const GURL& download_url) { 523 bool ExtensionsService::IsDownloadFromMiniGallery(const GURL& download_url) {
524 return StartsWithASCII(download_url.spec(), 524 return StartsWithASCII(download_url.spec(),
525 extension_urls::kMiniGalleryDownloadPrefix, 525 extension_urls::kMiniGalleryDownloadPrefix,
526 false); // case_sensitive 526 false); // case_sensitive
527 } 527 }
528 528
529 ExtensionsService::ExtensionsService(Profile* profile, 529 ExtensionsService::ExtensionsService(Profile* profile,
530 const CommandLine* command_line, 530 const CommandLine* command_line,
531 PrefService* prefs,
532 const FilePath& install_directory, 531 const FilePath& install_directory,
533 bool autoupdate_enabled) 532 bool autoupdate_enabled)
534 : profile_(profile), 533 : profile_(profile),
535 extension_prefs_(new ExtensionPrefs(prefs, install_directory)), 534 extension_prefs_(new ExtensionPrefs(profile->GetPrefs(),
535 install_directory)),
536 install_directory_(install_directory), 536 install_directory_(install_directory),
537 extensions_enabled_(true), 537 extensions_enabled_(true),
538 show_extensions_prompts_(true), 538 show_extensions_prompts_(true),
539 ready_(false), 539 ready_(false),
540 ALLOW_THIS_IN_INITIALIZER_LIST(toolbar_model_(this)) { 540 ALLOW_THIS_IN_INITIALIZER_LIST(toolbar_model_(this)) {
541 // Figure out if extension installation should be enabled. 541 // Figure out if extension installation should be enabled.
542 if (command_line->HasSwitch(switches::kDisableExtensions)) { 542 if (command_line->HasSwitch(switches::kDisableExtensions)) {
543 extensions_enabled_ = false; 543 extensions_enabled_ = false;
544 } else if (profile->GetPrefs()->GetBoolean(prefs::kDisableExtensions)) { 544 } else if (profile->GetPrefs()->GetBoolean(prefs::kDisableExtensions)) {
545 extensions_enabled_ = false; 545 extensions_enabled_ = false;
546 } 546 }
547 547
548 registrar_.Add(this, NotificationType::EXTENSION_PROCESS_TERMINATED, 548 registrar_.Add(this, NotificationType::EXTENSION_PROCESS_TERMINATED,
549 NotificationService::AllSources()); 549 NotificationService::AllSources());
550 prefs->AddPrefObserver(prefs::kExtensionInstallAllowList, this); 550 pref_change_registrar_.Init(profile->GetPrefs());
551 prefs->AddPrefObserver(prefs::kExtensionInstallDenyList, this); 551 pref_change_registrar_.Add(prefs::kExtensionInstallAllowList, this);
552 pref_change_registrar_.Add(prefs::kExtensionInstallDenyList, this);
552 553
553 // Set up the ExtensionUpdater 554 // Set up the ExtensionUpdater
554 if (autoupdate_enabled) { 555 if (autoupdate_enabled) {
555 int update_frequency = kDefaultUpdateFrequencySeconds; 556 int update_frequency = kDefaultUpdateFrequencySeconds;
556 if (command_line->HasSwitch(switches::kExtensionsUpdateFrequency)) { 557 if (command_line->HasSwitch(switches::kExtensionsUpdateFrequency)) {
557 base::StringToInt(command_line->GetSwitchValueASCII( 558 base::StringToInt(command_line->GetSwitchValueASCII(
558 switches::kExtensionsUpdateFrequency), 559 switches::kExtensionsUpdateFrequency),
559 &update_frequency); 560 &update_frequency);
560 } 561 }
561 updater_ = new ExtensionUpdater(this, prefs, update_frequency); 562 updater_ = new ExtensionUpdater(this,
563 profile->GetPrefs(),
564 update_frequency);
562 } 565 }
563 566
564 backend_ = new ExtensionsServiceBackend(install_directory_, 567 backend_ = new ExtensionsServiceBackend(install_directory_,
565 extensions_enabled_); 568 extensions_enabled_);
566 569
567 // Use monochrome icons for Omnibox icons. 570 // Use monochrome icons for Omnibox icons.
568 omnibox_popup_icon_manager_.set_monochrome(true); 571 omnibox_popup_icon_manager_.set_monochrome(true);
569 omnibox_icon_manager_.set_monochrome(true); 572 omnibox_icon_manager_.set_monochrome(true);
570 omnibox_icon_manager_.set_padding(gfx::Insets(0, kOmniboxIconPaddingLeft, 573 omnibox_icon_manager_.set_padding(gfx::Insets(0, kOmniboxIconPaddingLeft,
571 0, kOmniboxIconPaddingRight)); 574 0, kOmniboxIconPaddingRight));
572 } 575 }
573 576
574 ExtensionsService::~ExtensionsService() { 577 ExtensionsService::~ExtensionsService() {
578 DCHECK(!profile_); // Profile should have told us it's going away.
575 UnloadAllExtensions(); 579 UnloadAllExtensions();
576 if (updater_.get()) { 580 if (updater_.get()) {
577 updater_->Stop(); 581 updater_->Stop();
578 } 582 }
579 } 583 }
580 584
581 void ExtensionsService::InitEventRouters() { 585 void ExtensionsService::InitEventRouters() {
582 ExtensionHistoryEventRouter::GetInstance()->ObserveProfile(profile_); 586 ExtensionHistoryEventRouter::GetInstance()->ObserveProfile(profile_);
583 ExtensionAccessibilityEventRouter::GetInstance()->ObserveProfile(profile_); 587 ExtensionAccessibilityEventRouter::GetInstance()->ObserveProfile(profile_);
584 ExtensionBrowserEventRouter::GetInstance()->Init(profile_); 588 ExtensionBrowserEventRouter::GetInstance()->Init(profile_);
(...skipping 594 matching lines...)
1179 } 1183 }
1180 1184
1181 // UnloadExtension will change the extensions_ list. So, we should 1185 // UnloadExtension will change the extensions_ list. So, we should
1182 // call it outside the iterator loop. 1186 // call it outside the iterator loop.
1183 for (unsigned int i = 0; i < to_be_removed.size(); ++i) { 1187 for (unsigned int i = 0; i < to_be_removed.size(); ++i) {
1184 UnloadExtension(to_be_removed[i]); 1188 UnloadExtension(to_be_removed[i]);
1185 } 1189 }
1186 } 1190 }
1187 1191
1188 void ExtensionsService::DestroyingProfile() { 1192 void ExtensionsService::DestroyingProfile() {
1189 profile_->GetPrefs()->RemovePrefObserver( 1193 pref_change_registrar_.RemoveAll();
1190 prefs::kExtensionInstallAllowList, this);
1191 profile_->GetPrefs()->RemovePrefObserver(
1192 prefs::kExtensionInstallDenyList, this);
1193
1194 profile_ = NULL; 1194 profile_ = NULL;
1195 toolbar_model_.DestroyingProfile();
1195 } 1196 }
1196 1197
1197 void ExtensionsService::CheckAdminBlacklist() { 1198 void ExtensionsService::CheckAdminBlacklist() {
1198 std::vector<std::string> to_be_removed; 1199 std::vector<std::string> to_be_removed;
1199 // Loop through extensions list, unload installed extensions. 1200 // Loop through extensions list, unload installed extensions.
1200 for (ExtensionList::const_iterator iter = extensions_.begin(); 1201 for (ExtensionList::const_iterator iter = extensions_.begin();
1201 iter != extensions_.end(); ++iter) { 1202 iter != extensions_.end(); ++iter) {
1202 Extension* extension = (*iter); 1203 Extension* extension = (*iter);
1203 if (!extension_prefs_->IsExtensionAllowedByPolicy(extension->id())) 1204 if (!extension_prefs_->IsExtensionAllowedByPolicy(extension->id()))
1204 to_be_removed.push_back(extension->id()); 1205 to_be_removed.push_back(extension->id());
(...skipping 588 matching lines...)
1793 return false; 1794 return false;
1794 1795
1795 for (ExtensionList::const_iterator it = extensions_.begin(); 1796 for (ExtensionList::const_iterator it = extensions_.begin();
1796 it != extensions_.end(); ++it) { 1797 it != extensions_.end(); ++it) {
1797 if ((*it)->is_app()) 1798 if ((*it)->is_app())
1798 return true; 1799 return true;
1799 } 1800 }
1800 1801
1801 return false; 1802 return false;
1802 } 1803 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extensions_service.h ('k') | chrome/browser/extensions/extensions_service_unittest.h » ('j') | no next file with comments »

Powered by Google App Engine