| 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();
 | 
|  }
 | 
|  
 | 
| 
 |