Fix: create ExtensionInfoMap earlier.
This is needed so that ProfileImpl ctor can access DOMStorageContext.
The ExtensionInfoMap is needed early, in ProfileIOData::InitializeOnUIThread. Construct it on demand.
BUG=104292
Review URL: https://chromiumcodereview.appspot.com/10830278
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@151291 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_system.cc b/chrome/browser/extensions/extension_system.cc
index 8b8756cc..55e31a3 100644
--- a/chrome/browser/extensions/extension_system.cc
+++ b/chrome/browser/extensions/extension_system.cc
@@ -93,12 +93,6 @@
management_policy_->RegisterProvider(extension_prefs_.get());
}
-void ExtensionSystemImpl::Shared::InitInfoMap() {
- // The ExtensionInfoMap needs to be created before the
- // ExtensionProcessManager.
- extension_info_map_ = new ExtensionInfoMap();
-}
-
void ExtensionSystemImpl::Shared::Init(bool extensions_enabled) {
const CommandLine* command_line = CommandLine::ForCurrentProcess();
@@ -213,6 +207,8 @@
}
ExtensionInfoMap* ExtensionSystemImpl::Shared::info_map() {
+ if (!extension_info_map_)
+ extension_info_map_ = new ExtensionInfoMap();
return extension_info_map_.get();
}
@@ -265,7 +261,9 @@
extension_devtools_manager_ = new ExtensionDevToolsManager(profile_);
}
- shared_->InitInfoMap();
+ // The ExtensionInfoMap needs to be created before the
+ // ExtensionProcessManager.
+ shared_->info_map();
extension_process_manager_.reset(ExtensionProcessManager::Create(profile_));
alarm_manager_.reset(new AlarmManager(profile_, &base::Time::Now));