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

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

Issue 160963002: Reset UnloadController::is_attempting_to_close_browser_ when the download-in-progress prompt is can… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sky comments Created 6 years, 10 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/ui/fast_unload_controller.h ('k') | chrome/browser/ui/unload_controller.h » ('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 8da78ec707c1a19bae849127aa55c235040855c4..19f0e509526d1465e1ef5dd2d4769ff618ccaa7d 100644
--- a/chrome/browser/ui/fast_unload_controller.cc
+++ b/chrome/browser/ui/fast_unload_controller.cc
@@ -219,6 +219,51 @@ bool FastUnloadController::TabsNeedBeforeUnloadFired() {
return !tabs_needing_before_unload_.empty();
}
+bool FastUnloadController::HasCompletedUnloadProcessing() const {
+ return is_attempting_to_close_browser_ &&
+ tabs_needing_before_unload_.empty() &&
+ tab_needing_before_unload_ack_ == NULL &&
+ tabs_needing_unload_.empty() &&
+ tabs_needing_unload_ack_.empty();
+}
+
+void FastUnloadController::CancelWindowClose() {
+ // Closing of window can be canceled from a beforeunload handler.
+ DCHECK(is_attempting_to_close_browser_);
+ tabs_needing_before_unload_.clear();
+ if (tab_needing_before_unload_ack_ != NULL) {
+ CoreTabHelper* core_tab_helper =
+ CoreTabHelper::FromWebContents(tab_needing_before_unload_ack_);
+ core_tab_helper->OnCloseCanceled();
+ DevToolsWindow::OnPageCloseCanceled(tab_needing_before_unload_ack_);
+ tab_needing_before_unload_ack_ = NULL;
+ }
+ for (WebContentsSet::iterator it = tabs_needing_unload_.begin();
+ it != tabs_needing_unload_.end(); it++) {
+ content::WebContents* contents = *it;
+
+ CoreTabHelper* core_tab_helper = CoreTabHelper::FromWebContents(contents);
+ core_tab_helper->OnCloseCanceled();
+ DevToolsWindow::OnPageCloseCanceled(contents);
+ }
+ tabs_needing_unload_.clear();
+
+ // No need to clear tabs_needing_unload_ack_. Those tabs are already detached.
+
+ if (is_calling_before_unload_handlers()) {
+ base::Callback<void(bool)> on_close_confirmed = on_close_confirmed_;
+ on_close_confirmed_.Reset();
+ on_close_confirmed.Run(false);
+ }
+
+ is_attempting_to_close_browser_ = false;
+
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED,
+ content::Source<Browser>(browser_),
+ content::NotificationService::NoDetails());
+}
+
////////////////////////////////////////////////////////////////////////////////
// FastUnloadController, content::NotificationObserver implementation:
@@ -405,51 +450,6 @@ void FastUnloadController::ProcessPendingTabs() {
}
}
-bool FastUnloadController::HasCompletedUnloadProcessing() const {
- return is_attempting_to_close_browser_ &&
- tabs_needing_before_unload_.empty() &&
- tab_needing_before_unload_ack_ == NULL &&
- tabs_needing_unload_.empty() &&
- tabs_needing_unload_ack_.empty();
-}
-
-void FastUnloadController::CancelWindowClose() {
- // Closing of window can be canceled from a beforeunload handler.
- DCHECK(is_attempting_to_close_browser_);
- tabs_needing_before_unload_.clear();
- if (tab_needing_before_unload_ack_ != NULL) {
- CoreTabHelper* core_tab_helper =
- CoreTabHelper::FromWebContents(tab_needing_before_unload_ack_);
- core_tab_helper->OnCloseCanceled();
- DevToolsWindow::OnPageCloseCanceled(tab_needing_before_unload_ack_);
- tab_needing_before_unload_ack_ = NULL;
- }
- for (WebContentsSet::iterator it = tabs_needing_unload_.begin();
- it != tabs_needing_unload_.end(); it++) {
- content::WebContents* contents = *it;
-
- CoreTabHelper* core_tab_helper = CoreTabHelper::FromWebContents(contents);
- core_tab_helper->OnCloseCanceled();
- DevToolsWindow::OnPageCloseCanceled(contents);
- }
- tabs_needing_unload_.clear();
-
- // No need to clear tabs_needing_unload_ack_. Those tabs are already detached.
-
- if (is_calling_before_unload_handlers()) {
- base::Callback<void(bool)> on_close_confirmed = on_close_confirmed_;
- on_close_confirmed_.Reset();
- on_close_confirmed.Run(false);
- }
-
- is_attempting_to_close_browser_ = false;
-
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED,
- content::Source<Browser>(browser_),
- content::NotificationService::NoDetails());
-}
-
void FastUnloadController::ClearUnloadState(content::WebContents* contents) {
if (tabs_needing_unload_ack_.erase(contents) > 0) {
if (HasCompletedUnloadProcessing())
« no previous file with comments | « chrome/browser/ui/fast_unload_controller.h ('k') | chrome/browser/ui/unload_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698