diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-29 07:34:45 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-29 07:34:45 +0000 |
commit | aeb53b34fe924159674c8f15a6a82d23e470e487 (patch) | |
tree | cb2378f4a8414dbd82969cf0b79ac571c0df0670 /chrome/browser/extensions/extensions_service.cc | |
parent | b56fec5936adb2d3af47681f0cc7a053bd8db6da (diff) | |
download | chromium_src-aeb53b34fe924159674c8f15a6a82d23e470e487.zip chromium_src-aeb53b34fe924159674c8f15a6a82d23e470e487.tar.gz chromium_src-aeb53b34fe924159674c8f15a6a82d23e470e487.tar.bz2 |
Only dispatch tab events when there is someone listening.
This should cut down on the number of occurrences of a crash that happens in JSON serialization.
BUG=25558,26169
Review URL: http://codereview.chromium.org/341029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30444 0039d316-1c4b-4281-b951-d872f2087c98
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); |