| Index: content/browser/memory/memory_coordinator_impl.cc
|
| diff --git a/content/browser/memory/memory_coordinator_impl.cc b/content/browser/memory/memory_coordinator_impl.cc
|
| index 22e1390e4245f0a5d4067d2a6aa90f3d93747a26..91176c18fbb41ac1040d55144d0bbeec1dd4cc85 100644
|
| --- a/content/browser/memory/memory_coordinator_impl.cc
|
| +++ b/content/browser/memory/memory_coordinator_impl.cc
|
| @@ -316,6 +316,17 @@ bool MemoryCoordinatorImpl::ChangeStateIfNeeded(base::MemoryState prev_state,
|
| return true;
|
| }
|
|
|
| +RenderProcessHost* MemoryCoordinatorImpl::GetRenderProcessHost(
|
| + int render_process_id) {
|
| + return RenderProcessHost::FromID(render_process_id);
|
| +}
|
| +
|
| +void MemoryCoordinatorImpl::SetDelegateForTesting(
|
| + std::unique_ptr<MemoryCoordinatorDelegate> delegate) {
|
| + CHECK(!delegate_);
|
| + delegate_ = std::move(delegate);
|
| +}
|
| +
|
| void MemoryCoordinatorImpl::AddChildForTesting(
|
| int dummy_render_process_id, mojom::ChildMemoryCoordinatorPtr child) {
|
| mojom::MemoryCoordinatorHandlePtr mch;
|
| @@ -332,14 +343,14 @@ void MemoryCoordinatorImpl::OnConnectionError(int render_process_id) {
|
| }
|
|
|
| bool MemoryCoordinatorImpl::CanSuspendRenderer(int render_process_id) {
|
| - // If there is no delegate (i.e. unittests), renderers are always suspendable.
|
| - if (!delegate_)
|
| - return true;
|
| - auto* render_process_host = RenderProcessHost::FromID(render_process_id);
|
| + auto* render_process_host = GetRenderProcessHost(render_process_id);
|
| if (!render_process_host || !render_process_host->IsProcessBackgrounded())
|
| return false;
|
| if (render_process_host->GetWorkerRefCount() > 0)
|
| return false;
|
| + // Assumes that we can't suspend renderers if there is no delegate.
|
| + if (!delegate_)
|
| + return false;
|
| return delegate_->CanSuspendBackgroundedRenderer(render_process_id);
|
| }
|
|
|
| @@ -366,12 +377,6 @@ base::MemoryState MemoryCoordinatorImpl::OverrideGlobalState(
|
| return memory_state;
|
| }
|
|
|
| -void MemoryCoordinatorImpl::SetDelegateForTesting(
|
| - std::unique_ptr<MemoryCoordinatorDelegate> delegate) {
|
| - CHECK(!delegate_);
|
| - delegate_ = std::move(delegate);
|
| -}
|
| -
|
| void MemoryCoordinatorImpl::CreateChildInfoMapEntry(
|
| int render_process_id,
|
| std::unique_ptr<MemoryCoordinatorHandleImpl> handle) {
|
| @@ -411,7 +416,7 @@ void MemoryCoordinatorImpl::RecordStateChange(MemoryState prev_state,
|
| total_private_kb += working_set.priv;
|
|
|
| for (auto& iter : children()) {
|
| - auto* render_process_host = RenderProcessHost::FromID(iter.first);
|
| + auto* render_process_host = GetRenderProcessHost(iter.first);
|
| if (!render_process_host ||
|
| render_process_host->GetHandle() == base::kNullProcessHandle)
|
| continue;
|
|
|