| Index: chrome/browser/extensions/extension_service.cc
|
| diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
|
| index 0a3c1bd9f78f75a8350e9a7e3fcd7181beb6bf58..14ad31a75eac7750d56b1d7e583a637dbc78c84f 100644
|
| --- a/chrome/browser/extensions/extension_service.cc
|
| +++ b/chrome/browser/extensions/extension_service.cc
|
| @@ -412,11 +412,9 @@ ExtensionService::ExtensionService(Profile* profile,
|
| app_notification_manager_->Init();
|
|
|
| if (extensions_enabled_) {
|
| - if (!command_line->HasSwitch(switches::kImport) &&
|
| - !command_line->HasSwitch(switches::kImportFromFile)) {
|
| - extensions::ExternalProviderImpl::CreateExternalProviders(
|
| - this, profile_, &external_extension_providers_);
|
| - }
|
| + CHECK(!ProfileManager::IsImportProcess(*command_line));
|
| + extensions::ExternalProviderImpl::CreateExternalProviders(
|
| + this, profile_, &external_extension_providers_);
|
| }
|
|
|
| // Set this as the ExtensionService for extension sorting to ensure it
|
| @@ -504,6 +502,8 @@ void ExtensionService::RegisterForImportFinished() {
|
| }
|
|
|
| void ExtensionService::InitAfterImport() {
|
| + component_loader_->BulkLoadDeferred();
|
| +
|
| CheckForExternalUpdates();
|
|
|
| GarbageCollectExtensions();
|
| @@ -591,10 +591,29 @@ void ExtensionService::Init() {
|
| DCHECK(!ready_); // Can't redo init.
|
| DCHECK_EQ(extensions_.size(), 0u);
|
|
|
| + CHECK(!ProfileManager::IsImportProcess(*CommandLine::ForCurrentProcess()));
|
| +
|
| // TODO(mek): It might be cleaner to do the FinishDelayedInstallInfo stuff
|
| // here instead of in installedloader.
|
| - component_loader_->LoadAll();
|
| - extensions::InstalledLoader(this).LoadAllExtensions();
|
| + if (g_browser_process->profile_manager() &&
|
| + g_browser_process->profile_manager()->will_import()) {
|
| +
|
| + // Defer component extensions with background pages, since they may conflict
|
| + // with the import process.
|
| + component_loader_->BulkLoadDeferBackgroundPages();
|
| + extensions::InstalledLoader(this).LoadAllExtensions();
|
| + RegisterForImportFinished();
|
| + } else {
|
| + component_loader_->BulkLoadAll();
|
| + extensions::InstalledLoader(this).LoadAllExtensions();
|
| +
|
| + // TODO(erikkay) this should probably be deferred to a future point
|
| + // rather than running immediately at startup.
|
| + CheckForExternalUpdates();
|
| +
|
| + // TODO(erikkay) this should probably be deferred as well.
|
| + GarbageCollectExtensions();
|
| + }
|
|
|
| // The Sideload Wipeout effort takes place during load (see above), so once
|
| // that is done the flag can be set so that we don't have to check again.
|
| @@ -603,26 +622,6 @@ void ExtensionService::Init() {
|
| wipeout_is_active_ = false; // Wipeout is only on during load.
|
| }
|
|
|
| - // If we are running in the import process, don't bother initializing the
|
| - // extension service since this can interfere with the main browser process
|
| - // that is already running an extension service for this profile.
|
| - // TODO(aa): can we start up even less of ExtensionService?
|
| - // http://crbug.com/107636
|
| - if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kImport) &&
|
| - !CommandLine::ForCurrentProcess()->HasSwitch(switches::kImportFromFile)) {
|
| - if (g_browser_process->profile_manager() &&
|
| - g_browser_process->profile_manager()->will_import()) {
|
| - RegisterForImportFinished();
|
| - } else {
|
| - // TODO(erikkay) this should probably be deferred to a future point
|
| - // rather than running immediately at startup.
|
| - CheckForExternalUpdates();
|
| -
|
| - // TODO(erikkay) this should probably be deferred as well.
|
| - GarbageCollectExtensions();
|
| - }
|
| - }
|
| -
|
| if (extension_prefs_->NeedsStorageGarbageCollection()) {
|
| GarbageCollectIsolatedStorage();
|
| extension_prefs_->SetNeedsStorageGarbageCollection(false);
|
| @@ -2015,7 +2014,7 @@ void ExtensionService::UnloadAllExtensions() {
|
|
|
| void ExtensionService::ReloadExtensions() {
|
| UnloadAllExtensions();
|
| - component_loader_->LoadAll();
|
| + component_loader_->BulkLoadAll();
|
| extensions::InstalledLoader(this).LoadAllExtensions();
|
| }
|
|
|
|
|