| Index: components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
|
| diff --git a/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc b/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
|
| index bede56febbfcce974015c0e7a22135d648e2e1ba..2e96d2f94ed8e99ce4dcd076f79a743657e010ed 100644
|
| --- a/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
|
| +++ b/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
|
| @@ -3368,4 +3368,48 @@ TEST_F(RendererSchedulerImplTest, TestIdleRAILMode) {
|
| scheduler_->SetRAILModeObserver(nullptr);
|
| }
|
|
|
| +TEST_F(RendererSchedulerImplTest, UnthrottledTaskRunner) {
|
| + // Ensure neither suspension nor timer task throttling affects an unthrottled
|
| + // task runner.
|
| + SimulateCompositorGestureStart(TouchEventPolicy::SEND_TOUCH_START);
|
| + scoped_refptr<TaskQueue> unthrottled_task_runner =
|
| + scheduler_->NewUnthrottledTaskRunner("unthrottled_tq");
|
| +
|
| + size_t timer_count = 0;
|
| + size_t unthrottled_count = 0;
|
| + scheduler_->TimerTaskRunner()->PostTask(
|
| + FROM_HERE, base::Bind(SlowCountingTask, &timer_count, clock_.get(), 7,
|
| + scheduler_->TimerTaskRunner()));
|
| + unthrottled_task_runner->PostTask(
|
| + FROM_HERE, base::Bind(SlowCountingTask, &unthrottled_count, clock_.get(),
|
| + 7, unthrottled_task_runner));
|
| + scheduler_->SuspendTimerQueue();
|
| +
|
| + for (int i = 0; i < 1000; i++) {
|
| + cc::BeginFrameArgs begin_frame_args = cc::BeginFrameArgs::Create(
|
| + BEGINFRAME_FROM_HERE, clock_->NowTicks(), base::TimeTicks(),
|
| + base::TimeDelta::FromMilliseconds(16), cc::BeginFrameArgs::NORMAL);
|
| + begin_frame_args.on_critical_path = true;
|
| + scheduler_->WillBeginFrame(begin_frame_args);
|
| + scheduler_->DidHandleInputEventOnCompositorThread(
|
| + FakeInputEvent(blink::WebInputEvent::GestureScrollUpdate),
|
| + RendererScheduler::InputEventState::EVENT_CONSUMED_BY_COMPOSITOR);
|
| +
|
| + simulate_compositor_task_ran_ = false;
|
| + compositor_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&RendererSchedulerImplTest::SimulateMainThreadCompositorTask,
|
| + base::Unretained(this),
|
| + base::TimeDelta::FromMilliseconds(10)));
|
| +
|
| + mock_task_runner_->RunTasksWhile(
|
| + base::Bind(&RendererSchedulerImplTest::SimulatedCompositorTaskPending,
|
| + base::Unretained(this)));
|
| + EXPECT_EQ(UseCase::SYNCHRONIZED_GESTURE, CurrentUseCase()) << "i = " << i;
|
| + }
|
| +
|
| + EXPECT_EQ(0u, timer_count);
|
| + EXPECT_EQ(500u, unthrottled_count);
|
| +}
|
| +
|
| } // namespace scheduler
|
|
|