Index: content/browser/renderer_host/render_view_host_impl.cc |
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc |
index 88e923b65dec4be81ee110138d164bf46d7debb7..5f2a20d9182438b303623636f17c536ba31f6c31 100644 |
--- a/content/browser/renderer_host/render_view_host_impl.cc |
+++ b/content/browser/renderer_host/render_view_host_impl.cc |
@@ -125,6 +125,19 @@ void DismissVirtualKeyboardTask() { |
} |
#endif |
+// Enable sudden termination for the current RenderFrameHost of |
+// |frame_tree_node| if its RenderViewHost is |render_view_host|. |
+// Used with FrameTree::ForEach. |
+bool EnableSuddenTermination(RenderViewHost* render_view_host, |
Charlie Reis
2015/02/02 20:14:50
Let's pass the SiteInstance here instead of the Re
clamy
2015/02/03 12:54:02
Done.
|
+ FrameTreeNode* frame_tree_node) { |
+ if (frame_tree_node->current_frame_host()->render_view_host() |
+ == render_view_host) { |
+ frame_tree_node->current_frame_host() |
+ ->set_override_sudden_termination_status(true); |
+ } |
+ return true; |
+} |
+ |
} // namespace |
// static |
@@ -183,7 +196,6 @@ RenderViewHostImpl::RenderViewHostImpl( |
run_modal_reply_msg_(NULL), |
run_modal_opener_id_(MSG_ROUTING_NONE), |
is_waiting_for_close_ack_(false), |
- sudden_termination_allowed_(false), |
render_view_termination_status_(base::TERMINATION_STATUS_STILL_RUNNING), |
virtual_keyboard_requested_(false), |
is_focused_element_editable_(false), |
@@ -555,7 +567,10 @@ void RenderViewHostImpl::ClosePageIgnoringUnloadEvents() { |
StopHangMonitorTimeout(); |
is_waiting_for_close_ack_ = false; |
- sudden_termination_allowed_ = true; |
+ // Enable sudden termination for all RenderFrameHosts in the FrameTree. |
+ FrameTree* frame_tree = static_cast<RenderFrameHostImpl*>(GetMainFrame()) |
+ ->frame_tree_node()->frame_tree(); |
+ frame_tree->ForEach(base::Bind(&EnableSuddenTermination, this)); |
delegate_->Close(this); |
} |
@@ -846,11 +861,6 @@ void RenderViewHostImpl::LoadStateChanged( |
delegate_->LoadStateChanged(url, load_state, upload_position, upload_size); |
} |
-bool RenderViewHostImpl::SuddenTerminationAllowed() const { |
- return sudden_termination_allowed_ || |
- GetProcess()->SuddenTerminationAllowed(); |
-} |
- |
/////////////////////////////////////////////////////////////////////////////// |
// RenderViewHostImpl, IPC message handlers: |