Index: chrome/browser/extensions/extension_event_router.cc |
diff --git a/chrome/browser/extensions/extension_event_router.cc b/chrome/browser/extensions/extension_event_router.cc |
index 8f18685004c993cca678980b2642b27ae578003a..8611dafe944d3054ae07f961e528f895804dc449 100644 |
--- a/chrome/browser/extensions/extension_event_router.cc |
+++ b/chrome/browser/extensions/extension_event_router.cc |
@@ -288,15 +288,36 @@ void ExtensionEventRouter::DispatchEventImpl( |
DispatchEvent(listener->process, listener->extension_id, |
event->event_name, event->cross_incognito_args, |
event->event_url); |
+ IncrementInFlightEvents(listener->extension_id); |
} |
continue; |
} |
DispatchEvent(listener->process, listener->extension_id, |
event->event_name, event->event_args, event->event_url); |
+ IncrementInFlightEvents(listener->extension_id); |
} |
} |
+void ExtensionEventRouter::IncrementInFlightEvents( |
+ const std::string& extension_id) { |
+ if (CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableLazyBackgroundPages)) |
+ in_flight_events_[extension_id]++; |
+} |
+ |
+void ExtensionEventRouter::OnExtensionEventAck( |
+ const std::string& extension_id) { |
+ CHECK(CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableLazyBackgroundPages)); |
+ CHECK(in_flight_events_[extension_id] > 0); |
+ in_flight_events_[extension_id]--; |
+} |
+ |
+bool ExtensionEventRouter::HasInFlightEvents(const std::string& extension_id) { |
+ return in_flight_events_[extension_id] > 0; |
+} |
+ |
void ExtensionEventRouter::AppendEvent( |
const linked_ptr<ExtensionEvent>& event) { |
PendingEventsList* events_list = NULL; |