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

Unified Diff: content/browser/frame_host/render_frame_host_impl.cc

Issue 2777013004: Fix DevToolsBeforeUnloadTest and BrowserCloseManagerBrowserTest. (Closed)
Patch Set: fix Created 3 years, 9 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: content/browser/frame_host/render_frame_host_impl.cc
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index b04daf76b905695673f7ab8c63a08d4539363069..2e6fdb9cbef0b6edfd31c7587de10bf9d0646510 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -1566,7 +1566,8 @@ void RenderFrameHostImpl::OnBeforeUnloadACK(
}
// Resets beforeunload waiting state.
is_waiting_for_beforeunload_ack_ = false;
- beforeunload_timeout_->Stop();
+ if (beforeunload_timeout_)
+ beforeunload_timeout_->Stop();
send_before_unload_start_time_ = base::TimeTicks();
// PlzNavigate: if the ACK is for a navigation, send it to the Navigator to
@@ -1790,8 +1791,10 @@ void RenderFrameHostImpl::OnRunBeforeUnloadConfirm(
// The beforeunload dialog for this frame may have been triggered by a
// browser-side request to this frame or a frame up in the frame hierarchy.
// Stop any timers that are waiting.
- for (RenderFrameHostImpl* frame = this; frame; frame = frame->GetParent())
- frame->beforeunload_timeout_->Stop();
+ for (RenderFrameHostImpl* frame = this; frame; frame = frame->GetParent()) {
+ if (frame->beforeunload_timeout_)
+ frame->beforeunload_timeout_->Stop();
+ }
delegate_->RunBeforeUnloadConfirm(this, is_reload, reply_msg);
}
@@ -1896,6 +1899,10 @@ void RenderFrameHostImpl::CancelBlockedRequestsForFrame() {
base::Bind(&ResourceDispatcherHostImpl::CancelBlockedRequestsForRoute));
}
+void RenderFrameHostImpl::DisableBeforeUnloadHangMonitorForTesting() {
+ beforeunload_timeout_.reset();
+}
+
void RenderFrameHostImpl::OnDidAccessInitialDocument() {
delegate_->DidAccessInitialDocument();
}
@@ -2537,7 +2544,8 @@ void RenderFrameHostImpl::ResetWaitingState() {
// navigations to be ignored in OnDidCommitProvisionalLoad.
if (is_waiting_for_beforeunload_ack_) {
is_waiting_for_beforeunload_ack_ = false;
- beforeunload_timeout_->Stop();
+ if (beforeunload_timeout_)
+ beforeunload_timeout_->Stop();
}
send_before_unload_start_time_ = base::TimeTicks();
render_view_host_->is_waiting_for_close_ack_ = false;
@@ -2684,8 +2692,10 @@ void RenderFrameHostImpl::DispatchBeforeUnload(bool for_navigation,
// reply from the dialog.
SimulateBeforeUnloadAck();
} else {
- beforeunload_timeout_->Start(
- TimeDelta::FromMilliseconds(RenderViewHostImpl::kUnloadTimeoutMS));
+ if (beforeunload_timeout_) {
+ beforeunload_timeout_->Start(
+ TimeDelta::FromMilliseconds(RenderViewHostImpl::kUnloadTimeoutMS));
+ }
send_before_unload_start_time_ = base::TimeTicks::Now();
Send(new FrameMsg_BeforeUnload(routing_id_, is_reload));
}
@@ -2766,7 +2776,7 @@ void RenderFrameHostImpl::JavaScriptDialogClosed(
// script and dragging out the process.
if (dialog_was_suppressed) {
frame->SimulateBeforeUnloadAck();
- } else {
+ } else if (frame->beforeunload_timeout_) {
frame->beforeunload_timeout_->Start(
TimeDelta::FromMilliseconds(RenderViewHostImpl::kUnloadTimeoutMS));
}
« no previous file with comments | « content/browser/frame_host/render_frame_host_impl.h ('k') | content/browser/renderer_host/render_widget_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698