| Index: chrome/browser/extensions/event_router.cc
|
| diff --git a/chrome/browser/extensions/event_router.cc b/chrome/browser/extensions/event_router.cc
|
| index 213299b2f6c879663028f330231dd5427f0243b5..3fe9f1622a16e76c62c8d9335795ef4f45a590d4 100644
|
| --- a/chrome/browser/extensions/event_router.cc
|
| +++ b/chrome/browser/extensions/event_router.cc
|
| @@ -65,6 +65,8 @@ void DispatchOnInstalledEvent(
|
| old_version, chrome_updated);
|
| }
|
|
|
| +void DoNothing(extensions::ExtensionHost* host) {}
|
| +
|
| } // namespace
|
|
|
| struct EventRouter::ListenerProcess {
|
| @@ -128,6 +130,8 @@ EventRouter::EventRouter(Profile* profile, ExtensionPrefs* extension_prefs)
|
| content::NotificationService::AllSources());
|
| registrar_.Add(this, chrome::NOTIFICATION_EXTENSIONS_READY,
|
| content::Source<Profile>(profile_));
|
| + registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_ENABLED,
|
| + content::Source<Profile>(profile_));
|
| registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED,
|
| content::Source<Profile>(profile_));
|
| registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED,
|
| @@ -606,6 +610,18 @@ void EventRouter::Observe(int type,
|
| dispatch_chrome_updated_event_ = false;
|
| break;
|
| }
|
| + case chrome::NOTIFICATION_EXTENSION_ENABLED: {
|
| + // If the extension has a lazy background page, make sure it gets loaded
|
| + // to register the events the extension is interested in.
|
| + const Extension* extension =
|
| + content::Details<const Extension>(details).ptr();
|
| + if (extension->has_lazy_background_page()) {
|
| + LazyBackgroundTaskQueue* queue =
|
| + ExtensionSystem::Get(profile_)->lazy_background_task_queue();
|
| + queue->AddPendingTask(profile_, extension->id(),
|
| + base::Bind(&DoNothing));
|
| + }
|
| + }
|
| case chrome::NOTIFICATION_EXTENSION_LOADED: {
|
| // Add all registered lazy listeners to our cache.
|
| const Extension* extension =
|
|
|