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

Unified Diff: chrome/browser/extensions/extension_process_manager.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: Only track in-flight events when lazy 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_process_manager.cc
diff --git a/chrome/browser/extensions/extension_process_manager.cc b/chrome/browser/extensions/extension_process_manager.cc
index 11edff0a8530383051822e861d3f41844968ab8d..487a908e89a4241750764dd3bf2b1c54f0a58009 100644
--- a/chrome/browser/extensions/extension_process_manager.cc
+++ b/chrome/browser/extensions/extension_process_manager.cc
@@ -8,6 +8,7 @@
#include "chrome/browser/ui/browser_window.h"
#include "content/browser/browsing_instance.h"
+#include "chrome/browser/extensions/extension_event_router.h"
#if defined(OS_MACOSX)
#include "chrome/browser/extensions/extension_host_mac.h"
#endif
@@ -429,8 +430,12 @@ bool ExtensionProcessManager::HasExtensionHost(ExtensionHost* host) const {
void ExtensionProcessManager::OnExtensionIdle(const std::string& extension_id) {
ExtensionHost* host = GetBackgroundHostForExtension(extension_id);
- if (host && !HasVisibleViews(extension_id))
- CloseBackgroundHost(host);
+ if (host && !HasVisibleViews(extension_id)) {
+ Profile* profile =
+ Profile::FromBrowserContext(browsing_instance_->browser_context());
+ if (!profile->GetExtensionEventRouter()->HasInFlightEvents(extension_id))
+ CloseBackgroundHost(host);
+ }
}
bool ExtensionProcessManager::HasVisibleViews(const std::string& extension_id) {

Powered by Google App Engine
This is Rietveld 408576698