| Index: third_party/WebKit/Source/platform/scheduler/child/worker_scheduler_impl_unittest.cc
|
| diff --git a/third_party/WebKit/Source/platform/scheduler/child/worker_scheduler_impl_unittest.cc b/third_party/WebKit/Source/platform/scheduler/child/worker_scheduler_impl_unittest.cc
|
| index 1214e6c836639bbfe542fcf68f1661ce18786676..f4da340e76460a262b4c619bde780ba0b1ac2452 100644
|
| --- a/third_party/WebKit/Source/platform/scheduler/child/worker_scheduler_impl_unittest.cc
|
| +++ b/third_party/WebKit/Source/platform/scheduler/child/worker_scheduler_impl_unittest.cc
|
| @@ -328,6 +328,16 @@ TEST_F(WorkerSchedulerImplTest, TestPostIdleTaskAfterRunningUntilIdle) {
|
| std::string("I2")));
|
| }
|
|
|
| +void PostIdleTask(std::vector<std::string>* timeline,
|
| + base::SimpleTestTickClock* clock,
|
| + SingleThreadIdleTaskRunner* idle_task_runner) {
|
| + timeline->push_back(base::StringPrintf("run PostIdleTask @ %d",
|
| + TimeTicksToIntMs(clock->NowTicks())));
|
| +
|
| + idle_task_runner->PostIdleTask(FROM_HERE,
|
| + base::Bind(&TimelineIdleTestTask, timeline));
|
| +}
|
| +
|
| TEST_F(WorkerSchedulerImplTest, TestLongIdlePeriodTimeline) {
|
| Init();
|
|
|
| @@ -347,31 +357,43 @@ TEST_F(WorkerSchedulerImplTest, TestLongIdlePeriodTimeline) {
|
| 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.
|
| - timeline.push_back("PostIdleTaskAfterWakeup");
|
| - idle_task_runner_->PostIdleTaskAfterWakeup(
|
| - FROM_HERE, base::Bind(&TimelineIdleTestTask, &timeline));
|
| + // Post a task to post an idle task. Because the system is non-quiescent a
|
| + // 300ms pause will occur before the next long idle period is initiated and
|
| + // the idle task run.
|
| + default_task_runner_->PostDelayedTask(
|
| + FROM_HERE, base::Bind(&PostIdleTask, base::Unretained(&timeline),
|
| + base::Unretained(clock_.get()),
|
| + base::Unretained(idle_task_runner_.get())),
|
| + base::TimeDelta::FromMilliseconds(30));
|
| +
|
| + timeline.push_back("PostFirstIdleTask");
|
| + idle_task_runner_->PostIdleTask(FROM_HERE,
|
| + base::Bind(&TimelineIdleTestTask, &timeline));
|
| RunUntilIdle();
|
| new_idle_period_deadline = scheduler_->CurrentIdleTaskDeadlineForTesting();
|
|
|
| - // Running a normal task should initiate a new long idle period after waiting
|
| - // 300ms for quiescence.
|
| + // Running a normal task will mark the system as non-quiescent.
|
| timeline.push_back("Post RecordTimelineTask");
|
| default_task_runner_->PostTask(
|
| FROM_HERE, base::Bind(&RecordTimelineTask, base::Unretained(&timeline),
|
| base::Unretained(clock_.get())));
|
| RunUntilIdle();
|
|
|
| - std::string expected_timeline[] = {
|
| - "RunUntilIdle begin @ 55", "RunUntilIdle end @ 55",
|
| - "PostIdleTaskAfterWakeup",
|
| - "RunUntilIdle begin @ 55", // NOTE idle task doesn't run till later.
|
| - "RunUntilIdle end @ 55", "Post RecordTimelineTask",
|
| - "RunUntilIdle begin @ 55", "run RecordTimelineTask @ 55",
|
| - "IsNotQuiescent @ 55", // NOTE we have to wait for quiescence.
|
| - "CanEnterLongIdlePeriod @ 355", "run TimelineIdleTestTask deadline 405",
|
| - "RunUntilIdle end @ 355"};
|
| + std::string expected_timeline[] = {"RunUntilIdle begin @ 55",
|
| + "RunUntilIdle end @ 55",
|
| + "PostFirstIdleTask",
|
| + "RunUntilIdle begin @ 55",
|
| + "CanEnterLongIdlePeriod @ 55",
|
| + "run TimelineIdleTestTask deadline 85",
|
| + "run PostIdleTask @ 85",
|
| + "IsNotQuiescent @ 85",
|
| + "CanEnterLongIdlePeriod @ 385",
|
| + "run TimelineIdleTestTask deadline 435",
|
| + "RunUntilIdle end @ 385",
|
| + "Post RecordTimelineTask",
|
| + "RunUntilIdle begin @ 385",
|
| + "run RecordTimelineTask @ 385",
|
| + "RunUntilIdle end @ 385"};
|
|
|
| EXPECT_THAT(timeline, ElementsAreArray(expected_timeline));
|
| }
|
|
|