Index: content/common/host_discardable_shared_memory_manager.cc |
diff --git a/content/common/host_discardable_shared_memory_manager.cc b/content/common/host_discardable_shared_memory_manager.cc |
index 539136179e3affa9d0b61f74a7945311cd9476dc..2ea9821314f9a1a696b4350ef201b9f184e65b0e 100644 |
--- a/content/common/host_discardable_shared_memory_manager.cc |
+++ b/content/common/host_discardable_shared_memory_manager.cc |
@@ -123,9 +123,17 @@ HostDiscardableSharedMemoryManager::HostDiscardableSharedMemoryManager() |
memory_pressure_listener_(new base::MemoryPressureListener( |
base::Bind(&HostDiscardableSharedMemoryManager::OnMemoryPressure, |
base::Unretained(this)))), |
+ // Current thread might not have a task runner in tests. |
+ enforce_memory_policy_task_runner_( |
+ base::ThreadTaskRunnerHandle::IsSet() |
+ ? base::ThreadTaskRunnerHandle::Get() |
+ : nullptr), |
enforce_memory_policy_pending_(false), |
weak_ptr_factory_(this) { |
DCHECK_NE(memory_limit_, 0u); |
+ enforce_memory_policy_callback_ = |
+ base::Bind(&HostDiscardableSharedMemoryManager::EnforceMemoryPolicy, |
+ weak_ptr_factory_.GetWeakPtr()); |
base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( |
this); |
} |
@@ -486,10 +494,9 @@ void HostDiscardableSharedMemoryManager::ScheduleEnforceMemoryPolicy() { |
return; |
enforce_memory_policy_pending_ = true; |
- base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
- FROM_HERE, |
- base::Bind(&HostDiscardableSharedMemoryManager::EnforceMemoryPolicy, |
- weak_ptr_factory_.GetWeakPtr()), |
+ DCHECK(enforce_memory_policy_task_runner_); |
+ enforce_memory_policy_task_runner_->PostDelayedTask( |
+ FROM_HERE, enforce_memory_policy_callback_, |
base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs)); |
} |