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

Unified Diff: chrome/browser/ui/fast_unload_controller.cc

Issue 2355183002: [Extensions] Don't run unload listeners when an extension is removed (Closed)
Patch Set: Remove terminated extensions reference Created 4 years, 3 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
« no previous file with comments | « chrome/browser/extensions/extension_unload_browsertest.cc ('k') | chrome/browser/ui/unload_controller.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/fast_unload_controller.cc
diff --git a/chrome/browser/ui/fast_unload_controller.cc b/chrome/browser/ui/fast_unload_controller.cc
index 503c137f4d86af2130e728574037f5485ebb5c6b..d516d89b2ba720d77c33df7c92926f735ab6b5fd 100644
--- a/chrome/browser/ui/fast_unload_controller.cc
+++ b/chrome/browser/ui/fast_unload_controller.cc
@@ -23,8 +23,12 @@
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_delegate.h"
-namespace chrome {
+#if defined (ENABLE_EXTENSIONS)
+#include "extensions/browser/extension_registry.h"
+#include "extensions/common/constants.h"
+#endif // (ENABLE_EXTENSIONS)
+namespace chrome {
////////////////////////////////////////////////////////////////////////////////
// DetachedWebContentsDelegate will delete web contents when they close.
@@ -82,6 +86,19 @@ bool FastUnloadController::ShouldRunUnloadEventsHelper(
bool FastUnloadController::RunUnloadEventsHelper(
content::WebContents* contents) {
+#if defined (ENABLE_EXTENSIONS)
+ // Don't run for extensions that are disabled or uninstalled; the tabs will
+ // be killed if they make any network requests, and the extension shouldn't
+ // be doing any work if it's removed.
+ GURL url = contents->GetLastCommittedURL();
+ if (url.SchemeIs(extensions::kExtensionScheme) &&
+ !extensions::ExtensionRegistry::Get(browser_->profile())
+ ->enabled_extensions()
+ .GetExtensionOrAppByURL(url)) {
+ return false;
+ }
+#endif // (ENABLE_EXTENSIONS)
+
// Special case for when we quit an application. The Devtools window can
// close if it's beforeunload event has already fired which will happen due
// to the interception of it's content's beforeunload.
« no previous file with comments | « chrome/browser/extensions/extension_unload_browsertest.cc ('k') | chrome/browser/ui/unload_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698