Chromium Code Reviews| 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; |