| Index: components/scheduler/renderer/renderer_scheduler_impl.cc
 | 
| diff --git a/components/scheduler/renderer/renderer_scheduler_impl.cc b/components/scheduler/renderer/renderer_scheduler_impl.cc
 | 
| index 9f3d9b6ef21a16711e52ff193531d3459aed5064..a5d607e8ddb919a33f5bd68c63bf7e6640f26c71 100644
 | 
| --- a/components/scheduler/renderer/renderer_scheduler_impl.cc
 | 
| +++ b/components/scheduler/renderer/renderer_scheduler_impl.cc
 | 
| @@ -62,10 +62,6 @@ RendererSchedulerImpl::RendererSchedulerImpl(
 | 
|    end_renderer_hidden_idle_period_closure_.Reset(base::Bind(
 | 
|        &RendererSchedulerImpl::EndIdlePeriod, weak_factory_.GetWeakPtr()));
 | 
|  
 | 
| -  suspend_timers_when_backgrounded_closure_.Reset(
 | 
| -      base::Bind(&RendererSchedulerImpl::SuspendTimerQueueWhenBackgrounded,
 | 
| -                 weak_factory_.GetWeakPtr()));
 | 
| -
 | 
|    default_loading_task_runner_ = NewLoadingTaskRunner("default_loading_tq");
 | 
|    default_timer_task_runner_ = NewTimerTaskRunner("default_timer_tq");
 | 
|  
 | 
| @@ -351,6 +347,7 @@ void RendererSchedulerImpl::SetHasVisibleRenderWidgetWithTouchHandler(
 | 
|    UpdatePolicyLocked(UpdateType::FORCE_UPDATE);
 | 
|  }
 | 
|  
 | 
| +// TODO(hajimehoshi): This does nothing for now. Remove this handler.
 | 
|  void RendererSchedulerImpl::OnRendererBackgrounded() {
 | 
|    TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
 | 
|                 "RendererSchedulerImpl::OnRendererBackgrounded");
 | 
| @@ -359,16 +356,6 @@ void RendererSchedulerImpl::OnRendererBackgrounded() {
 | 
|      return;
 | 
|  
 | 
|    MainThreadOnly().renderer_backgrounded = true;
 | 
| -  if (!MainThreadOnly().timer_queue_suspension_when_backgrounded_enabled)
 | 
| -    return;
 | 
| -
 | 
| -  suspend_timers_when_backgrounded_closure_.Cancel();
 | 
| -  base::TimeDelta suspend_timers_when_backgrounded_delay =
 | 
| -      base::TimeDelta::FromMilliseconds(
 | 
| -          kSuspendTimersWhenBackgroundedDelayMillis);
 | 
| -  control_task_runner_->PostDelayedTask(
 | 
| -      FROM_HERE, suspend_timers_when_backgrounded_closure_.callback(),
 | 
| -      suspend_timers_when_backgrounded_delay);
 | 
|  }
 | 
|  
 | 
|  void RendererSchedulerImpl::OnRendererForegrounded() {
 | 
| @@ -379,10 +366,18 @@ void RendererSchedulerImpl::OnRendererForegrounded() {
 | 
|      return;
 | 
|  
 | 
|    MainThreadOnly().renderer_backgrounded = false;
 | 
| -  suspend_timers_when_backgrounded_closure_.Cancel();
 | 
|    ResumeTimerQueueWhenForegrounded();
 | 
|  }
 | 
|  
 | 
| +void RendererSchedulerImpl::OnRendererSuspend() {
 | 
| +  helper_.CheckOnValidThread();
 | 
| +  if (helper_.IsShutdown() || !MainThreadOnly().renderer_backgrounded)
 | 
| +    return;
 | 
| +  if (!MainThreadOnly().timer_queue_suspension_when_backgrounded_enabled)
 | 
| +    return;
 | 
| +  SuspendTimerQueueWhenBackgrounded();
 | 
| +}
 | 
| +
 | 
|  void RendererSchedulerImpl::EndIdlePeriod() {
 | 
|    if (MainThreadOnly().in_idle_period_for_testing)
 | 
|      return;
 | 
| 
 |