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..341cef0c0f12e3396a0de2b6a83f59ef07aae15b 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); |
Aaron Boodman
2011/10/31 17:46:08
Out of curiosity, why does it not work to put this
Tessa MacDuff
2011/10/31 19:01:29
Because DispatchEvent is static and can't access i
|
} |
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::DecrementInFlightEvents( |
+ 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; |