diff options
Diffstat (limited to 'chrome/browser/extensions/extensions_service.cc')
-rw-r--r-- | chrome/browser/extensions/extensions_service.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/chrome/browser/extensions/extensions_service.cc b/chrome/browser/extensions/extensions_service.cc index ef6d9cd..d681e83d 100644 --- a/chrome/browser/extensions/extensions_service.cc +++ b/chrome/browser/extensions/extensions_service.cc @@ -127,9 +127,6 @@ void ExtensionsService::Init() { // the first extension, because its members listen for loaded notifications. g_browser_process->resource_dispatcher_host(); - // Start up the extension event routers. - ExtensionBrowserEventRouter::GetInstance()->Init(); - LoadAllExtensions(); // TODO(erikkay) this should probably be deferred to a future point @@ -508,6 +505,12 @@ void ExtensionsService::OnExtensionLoaded(Extension* extension, case Extension::ENABLED: extensions_.push_back(scoped_extension.release()); + // We delay starting up the browser event router until at least one + // extension that needs it is loaded. + if (extension->HasApiPermission(Extension::kTabPermission)) { + ExtensionBrowserEventRouter::GetInstance()->Init(); + } + if (extension->location() != Extension::LOAD) extension_prefs_->MigrateToPrefs(extension); |