Index: chrome/browser/extensions/event_router.cc |
diff --git a/chrome/browser/extensions/event_router.cc b/chrome/browser/extensions/event_router.cc |
index eb18e66df39d65e5120a008570500a096769aec1..ba601a779fd194890fcb3341bbe55fab147eb412 100644 |
--- a/chrome/browser/extensions/event_router.cc |
+++ b/chrome/browser/extensions/event_router.cc |
@@ -164,6 +164,13 @@ void EventRouter::DispatchEvent(IPC::Sender* ipc_sender, |
const EventFilteringInfo& info) { |
DispatchExtensionMessage(ipc_sender, profile_id, extension_id, event_name, |
event_args.get(), event_url, user_gesture, info); |
+ |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, |
+ FROM_HERE, |
+ base::Bind(&EventRouter::IncrementInFlightEventsOnUI, |
+ profile_id, |
+ extension_id)); |
} |
EventRouter::EventRouter(Profile* profile, ExtensionPrefs* extension_prefs) |
@@ -551,6 +558,23 @@ bool EventRouter::MaybeLoadLazyBackgroundPageToDispatchEvent( |
return false; |
} |
+// static |
+void EventRouter::IncrementInFlightEventsOnUI( |
+ void* profile_id, |
+ const std::string& extension_id) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ Profile* profile = reinterpret_cast<Profile*>(profile_id); |
+ extensions::EventRouter* event_router = |
+ extensions::ExtensionSystem::Get(profile)->event_router(); |
+ ExtensionService* extension_service = |
+ extensions::ExtensionSystem::Get(profile)->extension_service(); |
+ const Extension* extension = |
+ extension_service->extensions()->GetByID(extension_id); |
+ if (!extension) |
+ return; |
+ event_router->IncrementInFlightEvents(profile, extension); |
+} |
+ |
void EventRouter::IncrementInFlightEvents(Profile* profile, |
const Extension* extension) { |
// Only increment in-flight events if the lazy background page is active, |