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