OLD | NEW |
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 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
531 ExtensionsService::ExtensionsService(Profile* profile, | 531 ExtensionsService::ExtensionsService(Profile* profile, |
532 const CommandLine* command_line, | 532 const CommandLine* command_line, |
533 const FilePath& install_directory, | 533 const FilePath& install_directory, |
534 bool autoupdate_enabled) | 534 bool autoupdate_enabled) |
535 : profile_(profile), | 535 : profile_(profile), |
536 extension_prefs_(new ExtensionPrefs(profile->GetPrefs(), | 536 extension_prefs_(new ExtensionPrefs(profile->GetPrefs(), |
537 install_directory)), | 537 install_directory)), |
538 install_directory_(install_directory), | 538 install_directory_(install_directory), |
539 extensions_enabled_(true), | 539 extensions_enabled_(true), |
540 show_extensions_prompts_(true), | 540 show_extensions_prompts_(true), |
541 init_done_(false), | 541 ready_(false), |
542 ALLOW_THIS_IN_INITIALIZER_LIST(toolbar_model_(this)), | 542 ALLOW_THIS_IN_INITIALIZER_LIST(toolbar_model_(this)), |
543 default_apps_(profile->GetPrefs()), | 543 default_apps_(profile->GetPrefs()), |
544 event_routers_initialized_(false) { | 544 event_routers_initialized_(false) { |
545 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 545 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
546 | 546 |
547 // Figure out if extension installation should be enabled. | 547 // Figure out if extension installation should be enabled. |
548 if (command_line->HasSwitch(switches::kDisableExtensions)) { | 548 if (command_line->HasSwitch(switches::kDisableExtensions)) { |
549 extensions_enabled_ = false; | 549 extensions_enabled_ = false; |
550 } else if (profile->GetPrefs()->GetBoolean(prefs::kDisableExtensions)) { | 550 } else if (profile->GetPrefs()->GetBoolean(prefs::kDisableExtensions)) { |
551 extensions_enabled_ = false; | 551 extensions_enabled_ = false; |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
601 ExtensionCookiesEventRouter::GetInstance()->Init(); | 601 ExtensionCookiesEventRouter::GetInstance()->Init(); |
602 ExtensionManagementEventRouter::GetInstance()->Init(); | 602 ExtensionManagementEventRouter::GetInstance()->Init(); |
603 ExtensionProcessesEventRouter::GetInstance()->ObserveProfile(profile_); | 603 ExtensionProcessesEventRouter::GetInstance()->ObserveProfile(profile_); |
604 ExtensionWebNavigationEventRouter::GetInstance()->Init(); | 604 ExtensionWebNavigationEventRouter::GetInstance()->Init(); |
605 event_routers_initialized_ = true; | 605 event_routers_initialized_ = true; |
606 } | 606 } |
607 | 607 |
608 void ExtensionsService::Init() { | 608 void ExtensionsService::Init() { |
609 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 609 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
610 | 610 |
611 DCHECK(!init_done_); // Can't redo init. | 611 DCHECK(!ready_); |
612 DCHECK_EQ(extensions_.size(), 0u); | 612 DCHECK_EQ(extensions_.size(), 0u); |
613 | 613 |
614 // Hack: we need to ensure the ResourceDispatcherHost is ready before we load | 614 // Hack: we need to ensure the ResourceDispatcherHost is ready before we load |
615 // the first extension, because its members listen for loaded notifications. | 615 // the first extension, because its members listen for loaded notifications. |
616 g_browser_process->resource_dispatcher_host(); | 616 g_browser_process->resource_dispatcher_host(); |
617 | 617 |
618 LoadAllExtensions(); | 618 LoadAllExtensions(); |
619 | 619 |
620 // TODO(erikkay) this should probably be deferred to a future point | 620 // TODO(erikkay) this should probably be deferred to a future point |
621 // rather than running immediately at startup. | 621 // rather than running immediately at startup. |
622 CheckForExternalUpdates(); | 622 CheckForExternalUpdates(); |
623 | 623 |
624 // TODO(erikkay) this should probably be deferred as well. | 624 // TODO(erikkay) this should probably be deferred as well. |
625 GarbageCollectExtensions(); | 625 GarbageCollectExtensions(); |
626 | |
627 init_done_ = true; | |
628 } | 626 } |
629 | 627 |
630 void ExtensionsService::InstallExtension(const FilePath& extension_path) { | 628 void ExtensionsService::InstallExtension(const FilePath& extension_path) { |
631 scoped_refptr<CrxInstaller> installer( | 629 scoped_refptr<CrxInstaller> installer( |
632 new CrxInstaller(install_directory_, | 630 new CrxInstaller(install_directory_, |
633 this, // frontend | 631 this, // frontend |
634 NULL)); // no client (silent install) | 632 NULL)); // no client (silent install) |
635 installer->set_allow_privilege_increase(true); | 633 installer->set_allow_privilege_increase(true); |
636 installer->InstallCrx(extension_path); | 634 installer->InstallCrx(extension_path); |
637 } | 635 } |
(...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1468 | 1466 |
1469 // Also garbage-collect themes. We check |profile_| to be | 1467 // Also garbage-collect themes. We check |profile_| to be |
1470 // defensive; in the future, we may call GarbageCollectExtensions() | 1468 // defensive; in the future, we may call GarbageCollectExtensions() |
1471 // from somewhere other than Init() (e.g., in a timer). | 1469 // from somewhere other than Init() (e.g., in a timer). |
1472 if (profile_) { | 1470 if (profile_) { |
1473 profile_->GetThemeProvider()->RemoveUnusedThemes(); | 1471 profile_->GetThemeProvider()->RemoveUnusedThemes(); |
1474 } | 1472 } |
1475 } | 1473 } |
1476 | 1474 |
1477 void ExtensionsService::OnLoadedInstalledExtensions() { | 1475 void ExtensionsService::OnLoadedInstalledExtensions() { |
| 1476 ready_ = true; |
1478 if (updater_.get()) { | 1477 if (updater_.get()) { |
1479 updater_->Start(); | 1478 updater_->Start(); |
1480 } | 1479 } |
1481 NotificationService::current()->Notify( | 1480 NotificationService::current()->Notify( |
1482 NotificationType::EXTENSIONS_READY, | 1481 NotificationType::EXTENSIONS_READY, |
1483 Source<Profile>(profile_), | 1482 Source<Profile>(profile_), |
1484 NotificationService::NoDetails()); | 1483 NotificationService::NoDetails()); |
1485 } | 1484 } |
1486 | 1485 |
1487 void ExtensionsService::OnExtensionLoaded(const Extension* extension, | 1486 void ExtensionsService::OnExtensionLoaded(const Extension* extension, |
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1940 } | 1939 } |
1941 | 1940 |
1942 bool ExtensionsService::IsBeingUpgraded(const Extension* extension) { | 1941 bool ExtensionsService::IsBeingUpgraded(const Extension* extension) { |
1943 return extension_runtime_data_[extension->id()].being_upgraded; | 1942 return extension_runtime_data_[extension->id()].being_upgraded; |
1944 } | 1943 } |
1945 | 1944 |
1946 void ExtensionsService::SetBeingUpgraded(const Extension* extension, | 1945 void ExtensionsService::SetBeingUpgraded(const Extension* extension, |
1947 bool value) { | 1946 bool value) { |
1948 extension_runtime_data_[extension->id()].being_upgraded = value; | 1947 extension_runtime_data_[extension->id()].being_upgraded = value; |
1949 } | 1948 } |
OLD | NEW |