| 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 0ee5481dcf20774973ab936515d0273eee81992c..0ef81cdf4537d33d9aa0dc4cd7fc40936eb38c47 100644
 | 
| --- a/components/scheduler/renderer/renderer_scheduler_impl.cc
 | 
| +++ b/components/scheduler/renderer/renderer_scheduler_impl.cc
 | 
| @@ -12,6 +12,7 @@
 | 
|  #include "cc/output/begin_frame_args.h"
 | 
|  #include "components/scheduler/base/task_queue_impl.h"
 | 
|  #include "components/scheduler/base/task_queue_selector.h"
 | 
| +#include "components/scheduler/base/virtual_time_domain.h"
 | 
|  #include "components/scheduler/child/scheduler_tqm_delegate.h"
 | 
|  #include "components/scheduler/renderer/webthread_impl_for_renderer_scheduler.h"
 | 
|  
 | 
| @@ -41,6 +42,7 @@ RendererSchedulerImpl::RendererSchedulerImpl(
 | 
|                     TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
 | 
|                     "RendererSchedulerIdlePeriod",
 | 
|                     base::TimeDelta()),
 | 
| +      throttling_helper_(this, "renderer.scheduler"),
 | 
|        render_widget_scheduler_signals_(this),
 | 
|        control_task_runner_(helper_.ControlTaskRunner()),
 | 
|        compositor_task_runner_(
 | 
| @@ -176,6 +178,11 @@ scoped_refptr<TaskQueue> RendererSchedulerImpl::TimerTaskRunner() {
 | 
|    return default_timer_task_runner_;
 | 
|  }
 | 
|  
 | 
| +scoped_refptr<TaskQueue> RendererSchedulerImpl::ControlTaskRunner() {
 | 
| +  helper_.CheckOnValidThread();
 | 
| +  return helper_.ControlTaskRunner();
 | 
| +}
 | 
| +
 | 
|  scoped_refptr<TaskQueue> RendererSchedulerImpl::NewLoadingTaskRunner(
 | 
|      const char* name) {
 | 
|    helper_.CheckOnValidThread();
 | 
| @@ -535,7 +542,7 @@ bool RendererSchedulerImpl::ShouldYieldForHighPriorityWork() {
 | 
|  
 | 
|      case UseCase::MAIN_THREAD_GESTURE:
 | 
|      case UseCase::SYNCHRONIZED_GESTURE:
 | 
| -      return !compositor_task_runner_->IsQueueEmpty() ||
 | 
| +      return compositor_task_runner_->HasPendingImmediateTask() ||
 | 
|               MainThreadOnly().touchstart_expected_soon;
 | 
|  
 | 
|      case UseCase::TOUCHSTART:
 | 
| @@ -1046,4 +1053,16 @@ double RendererSchedulerImpl::MonotonicallyIncreasingTimeSeconds() const {
 | 
|           static_cast<double>(base::Time::kMicrosecondsPerSecond);
 | 
|  }
 | 
|  
 | 
| +void RendererSchedulerImpl::RegisterTimeDomain(TimeDomain* time_domain) {
 | 
| +  helper_.RegisterTimeDomain(time_domain);
 | 
| +}
 | 
| +
 | 
| +void RendererSchedulerImpl::UnregisterTimeDomain(TimeDomain* time_domain) {
 | 
| +  helper_.UnregisterTimeDomain(time_domain);
 | 
| +}
 | 
| +
 | 
| +base::TickClock* RendererSchedulerImpl::tick_clock() const {
 | 
| +  return helper_.scheduler_tqm_delegate().get();
 | 
| +}
 | 
| +
 | 
|  }  // namespace scheduler
 | 
| 
 |