Index: content/browser/renderer_host/render_process_host_impl.cc |
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc |
index fafd773952f52b74baab4d052d8c229f64407e8b..f7f1b82f1ff8e895f7ccd3be1b77ef0bad24bcad 100644 |
--- a/content/browser/renderer_host/render_process_host_impl.cc |
+++ b/content/browser/renderer_host/render_process_host_impl.cc |
@@ -451,7 +451,8 @@ RenderProcessHostImpl::RenderProcessHostImpl( |
id_(ChildProcessHostImpl::GenerateChildProcessUniqueId()), |
browser_context_(browser_context), |
storage_partition_impl_(storage_partition_impl), |
- sudden_termination_allowed_(true), |
+ sudden_termination_disallows_(0), |
+ sudden_termination_enabled_(true), |
ignore_input_events_(false), |
is_isolated_guest_(is_isolated_guest), |
gpu_observer_registered_(false), |
@@ -1486,7 +1487,7 @@ bool RenderProcessHostImpl::OnMessageReceived(const IPC::Message& msg) { |
IPC_MESSAGE_HANDLER(ChildProcessHostMsg_DumpHandlesDone, |
OnDumpHandlesDone) |
IPC_MESSAGE_HANDLER(ViewHostMsg_SuddenTerminationChanged, |
- SuddenTerminationChanged) |
+ OnSuddenTerminationChanged) |
IPC_MESSAGE_HANDLER(ViewHostMsg_UserMetricsRecordAction, |
OnUserMetricsRecordAction) |
IPC_MESSAGE_HANDLER(ViewHostMsg_SavedPageAsMHTML, OnSavedPageAsMHTML) |
@@ -1643,12 +1644,16 @@ void RenderProcessHostImpl::RemovePendingView() { |
pending_views_--; |
} |
-void RenderProcessHostImpl::SetSuddenTerminationAllowed(bool enabled) { |
- sudden_termination_allowed_ = enabled; |
+void RenderProcessHostImpl::SuddenTerminationChangedForFrame(bool allowed) { |
+ if (allowed) |
+ --sudden_termination_disallows_; |
+ else |
+ ++sudden_termination_disallows_; |
+ DCHECK(sudden_termination_disallows_ >= 0); |
} |
bool RenderProcessHostImpl::SuddenTerminationAllowed() const { |
- return sudden_termination_allowed_; |
+ return sudden_termination_disallows_ == 0 && sudden_termination_enabled_; |
} |
base::TimeDelta RenderProcessHostImpl::GetChildProcessIdleTime() const { |
@@ -2149,8 +2154,8 @@ void RenderProcessHostImpl::OnShutdownRequest() { |
Send(new ChildProcessMsg_Shutdown()); |
} |
-void RenderProcessHostImpl::SuddenTerminationChanged(bool enabled) { |
- SetSuddenTerminationAllowed(enabled); |
+void RenderProcessHostImpl::OnSuddenTerminationChanged(bool enabled) { |
+ sudden_termination_enabled_ = enabled; |
} |
void RenderProcessHostImpl::OnDumpHandlesDone() { |