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

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

Issue 857213003: Refactor sudden termination (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed Charlie's comments Created 5 years, 11 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 27943c8621494e0de62a4ab6922efe1d39fc7462..e5331e09d5f5442774e07a483f4cad7d2ec5f83d 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -134,6 +134,9 @@ RenderFrameHostImpl::RenderFrameHostImpl(RenderViewHostImpl* render_view_host,
routing_id_(routing_id),
render_frame_created_(false),
navigations_suspended_(false),
+ has_beforeunload_handlers_(false),
+ has_unload_handlers_(false),
+ override_sudden_termination_status_(false),
is_waiting_for_beforeunload_ack_(false),
unload_ack_is_for_cross_site_transition_(false),
accessibility_reset_token_(0),
@@ -324,6 +327,10 @@ bool RenderFrameHostImpl::OnMessageReceived(const IPC::Message &msg) {
IPC_MESSAGE_HANDLER(FrameHostMsg_DocumentOnLoadCompleted,
OnDocumentOnLoadCompleted)
IPC_MESSAGE_HANDLER(FrameHostMsg_BeforeUnload_ACK, OnBeforeUnloadACK)
+ IPC_MESSAGE_HANDLER(FrameHostMsg_BeforeUnloadHandlersPresent,
+ OnBeforeUnloadHandlersPresent)
+ IPC_MESSAGE_HANDLER(FrameHostMsg_UnloadHandlersPresent,
+ OnUnloadHandlersPresent)
IPC_MESSAGE_HANDLER(FrameHostMsg_SwapOut_ACK, OnSwapOutACK)
IPC_MESSAGE_HANDLER(FrameHostMsg_ContextMenu, OnContextMenu)
IPC_MESSAGE_HANDLER(FrameHostMsg_JavaScriptExecuteResponse,
@@ -974,6 +981,11 @@ bool RenderFrameHostImpl::IsWaitingForUnloadACK() const {
rfh_state_ == STATE_PENDING_SWAP_OUT;
}
+bool RenderFrameHostImpl::SuddenTerminationAllowed() const {
+ return override_sudden_termination_status_ ||
+ (!has_beforeunload_handlers_ && !has_unload_handlers_);
+}
+
void RenderFrameHostImpl::OnSwapOutACK() {
OnSwappedOut();
}
@@ -1238,6 +1250,14 @@ void RenderFrameHostImpl::OnToggleFullscreen(bool enter_fullscreen) {
render_view_host_->WasResized();
}
+void RenderFrameHostImpl::OnBeforeUnloadHandlersPresent(bool present) {
+ has_beforeunload_handlers_ = present;
+}
+
+void RenderFrameHostImpl::OnUnloadHandlersPresent(bool present) {
+ has_unload_handlers_ = present;
+}
+
#if defined(OS_MACOSX) || defined(OS_ANDROID)
void RenderFrameHostImpl::OnShowPopup(
const FrameHostMsg_ShowPopup_Params& params) {

Powered by Google App Engine
This is Rietveld 408576698