| 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() {
|
|
|