summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extensions_service.cc
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-29 07:34:45 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-29 07:34:45 +0000
commitaeb53b34fe924159674c8f15a6a82d23e470e487 (patch)
treecb2378f4a8414dbd82969cf0b79ac571c0df0670 /chrome/browser/extensions/extensions_service.cc
parentb56fec5936adb2d3af47681f0cc7a053bd8db6da (diff)
downloadchromium_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.cc9
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);