| Index: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
|
| diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
|
| index c3b2f020a6bde42fe6952ace5c51dcbee190ab9d..300260e5a514c7a9dcca3a94cca94bec002982e6 100644
|
| --- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
|
| +++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
|
| @@ -741,68 +741,6 @@ TEST_F(RendererSchedulerImplTest, TestIdleTaskExceedsDeadline) {
|
| EXPECT_EQ(2, run_count);
|
| }
|
|
|
| -TEST_F(RendererSchedulerImplTest, TestPostIdleTaskAfterWakeup) {
|
| - base::TimeTicks deadline_in_task;
|
| - int run_count = 0;
|
| -
|
| - idle_task_runner_->PostIdleTaskAfterWakeup(
|
| - FROM_HERE, base::Bind(&IdleTestTask, &run_count, &deadline_in_task));
|
| -
|
| - EnableIdleTasks();
|
| - RunUntilIdle();
|
| - // Shouldn't run yet as no other task woke up the scheduler.
|
| - EXPECT_EQ(0, run_count);
|
| -
|
| - idle_task_runner_->PostIdleTaskAfterWakeup(
|
| - FROM_HERE, base::Bind(&IdleTestTask, &run_count, &deadline_in_task));
|
| -
|
| - EnableIdleTasks();
|
| - RunUntilIdle();
|
| - // Another after wakeup idle task shouldn't wake the scheduler.
|
| - EXPECT_EQ(0, run_count);
|
| -
|
| - default_task_runner_->PostTask(FROM_HERE, base::Bind(&NullTask));
|
| -
|
| - RunUntilIdle();
|
| - EnableIdleTasks(); // Must start a new idle period before idle task runs.
|
| - RunUntilIdle();
|
| - // Execution of default task queue task should trigger execution of idle task.
|
| - EXPECT_EQ(2, run_count);
|
| -}
|
| -
|
| -TEST_F(RendererSchedulerImplTest, TestPostIdleTaskAfterWakeupWhileAwake) {
|
| - base::TimeTicks deadline_in_task;
|
| - int run_count = 0;
|
| -
|
| - idle_task_runner_->PostIdleTaskAfterWakeup(
|
| - FROM_HERE, base::Bind(&IdleTestTask, &run_count, &deadline_in_task));
|
| - default_task_runner_->PostTask(FROM_HERE, base::Bind(&NullTask));
|
| -
|
| - RunUntilIdle();
|
| - EnableIdleTasks(); // Must start a new idle period before idle task runs.
|
| - RunUntilIdle();
|
| - // Should run as the scheduler was already awakened by the normal task.
|
| - EXPECT_EQ(1, run_count);
|
| -}
|
| -
|
| -TEST_F(RendererSchedulerImplTest, TestPostIdleTaskWakesAfterWakeupIdleTask) {
|
| - base::TimeTicks deadline_in_task;
|
| - int run_count = 0;
|
| -
|
| - idle_task_runner_->PostIdleTaskAfterWakeup(
|
| - FROM_HERE, base::Bind(&IdleTestTask, &run_count, &deadline_in_task));
|
| - idle_task_runner_->PostIdleTask(
|
| - FROM_HERE, base::Bind(&IdleTestTask, &run_count, &deadline_in_task));
|
| -
|
| - EnableIdleTasks();
|
| - RunUntilIdle();
|
| - // Must start a new idle period before after-wakeup idle task runs.
|
| - EnableIdleTasks();
|
| - RunUntilIdle();
|
| - // Normal idle task should wake up after-wakeup idle task.
|
| - EXPECT_EQ(2, run_count);
|
| -}
|
| -
|
| TEST_F(RendererSchedulerImplTest, TestDelayedEndIdlePeriodCanceled) {
|
| int run_count = 0;
|
|
|
| @@ -2051,43 +1989,6 @@ TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodRepeating) {
|
| EXPECT_EQ(4, run_count);
|
| }
|
|
|
| -TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodDoesNotWakeScheduler) {
|
| - base::TimeTicks deadline_in_task;
|
| - int run_count = 0;
|
| -
|
| - // Start a long idle period and get the time it should end.
|
| - scheduler_->BeginFrameNotExpectedSoon();
|
| - // The scheduler should not run the initiate_next_long_idle_period task if
|
| - // there are no idle tasks and no other task woke up the scheduler, thus
|
| - // the idle period deadline shouldn't update at the end of the current long
|
| - // idle period.
|
| - base::TimeTicks idle_period_deadline =
|
| - scheduler_->CurrentIdleTaskDeadlineForTesting();
|
| - clock_->Advance(maximum_idle_period_duration());
|
| - RunUntilIdle();
|
| -
|
| - base::TimeTicks new_idle_period_deadline =
|
| - scheduler_->CurrentIdleTaskDeadlineForTesting();
|
| - EXPECT_EQ(idle_period_deadline, new_idle_period_deadline);
|
| -
|
| - // Posting a after-wakeup idle task also shouldn't wake the scheduler or
|
| - // initiate the next long idle period.
|
| - idle_task_runner_->PostIdleTaskAfterWakeup(
|
| - FROM_HERE, base::Bind(&IdleTestTask, &run_count, &deadline_in_task));
|
| - RunUntilIdle();
|
| - new_idle_period_deadline = scheduler_->CurrentIdleTaskDeadlineForTesting();
|
| - EXPECT_EQ(idle_period_deadline, new_idle_period_deadline);
|
| - EXPECT_EQ(0, run_count);
|
| -
|
| - // Running a normal task should initiate a new long idle period though.
|
| - default_task_runner_->PostTask(FROM_HERE, base::Bind(&NullTask));
|
| - RunUntilIdle();
|
| - new_idle_period_deadline = scheduler_->CurrentIdleTaskDeadlineForTesting();
|
| - EXPECT_EQ(idle_period_deadline + maximum_idle_period_duration(),
|
| - new_idle_period_deadline);
|
| -
|
| - EXPECT_EQ(1, run_count);
|
| -}
|
|
|
| TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodInTouchStartPolicy) {
|
| base::TimeTicks deadline_in_task;
|
| @@ -3041,13 +2942,26 @@ TEST_F(RendererSchedulerImplTest,
|
| base::Unretained(this)));
|
| EXPECT_EQ(UseCase::SYNCHRONIZED_GESTURE, CurrentUseCase()) << "i = " << i;
|
|
|
| - // Before the policy is updated the queue will be enabled. Subsequently it
|
| - // will be disabled until the throttled queue is pumped.
|
| - bool expect_queue_enabled =
|
| - (i == 0) || (clock_->NowTicks() > first_throttled_run_time);
|
| - EXPECT_EQ(expect_queue_enabled,
|
| - scheduler_->TimerTaskRunner()->IsQueueEnabled())
|
| + // We expect the queue to get throttled on the second iteration which is
|
| + // when the system realizes the task is expensive.
|
| + bool expect_queue_throttled = (i > 0);
|
| + EXPECT_EQ(expect_queue_throttled,
|
| + scheduler_->throttling_helper()->IsThrottled(
|
| + scheduler_->TimerTaskRunner().get()))
|
| << "i = " << i;
|
| +
|
| + if (expect_queue_throttled) {
|
| + EXPECT_GE(count, 2u);
|
| + } else {
|
| + EXPECT_LE(count, 2u);
|
| + }
|
| +
|
| + // The task runs twice before the system realizes it's too expensive.
|
| + bool throttled_task_has_run = count > 2;
|
| + bool throttled_task_expected_to_have_run =
|
| + (clock_->NowTicks() > first_throttled_run_time);
|
| + EXPECT_EQ(throttled_task_expected_to_have_run, throttled_task_has_run)
|
| + << "i = " << i << " count = " << count;
|
| }
|
|
|
| // Task is throttled but not completely blocked.
|
|
|