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