Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2404)

Unified Diff: chrome/browser/extensions/extension_event_router.cc

Issue 8343079: Don't close background pages if there is a pending response (callback). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
« no previous file with comments | « chrome/browser/extensions/extension_event_router.h ('k') | chrome/browser/extensions/extension_process_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698