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 89df410adebcb0fe29bad3c8df95d869da556085..1d8100f6396bfe5888793eb8c52913e454bf1113 100644 |
--- a/chrome/browser/extensions/extension_event_router.cc |
+++ b/chrome/browser/extensions/extension_event_router.cc |
@@ -436,11 +436,16 @@ void ExtensionEventRouter::DispatchEventToProcess( |
return; |
} |
+ // We need to call IncrementInFlightEvents() before DispatchEvent() because |
+ // the former may prevent this extension from getting suspended and so send |
+ // the onSuspendCanceled() to the extension, which needs to arrive before the |
+ // event that DispatchEvent() is dispatching. |
+ IncrementInFlightEvents(listener_profile, extension); |
+ |
DispatchEvent(process, extension_id, |
event->event_name, *event_args, |
event->event_url, event->user_gesture, |
event->info); |
- IncrementInFlightEvents(listener_profile, extension); |
} |
bool ExtensionEventRouter::CanDispatchEventToProfile( |