Chromium Code Reviews| 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 |
|
Sami
2016/08/25 15:54:13
It's not totally obvious where the 300ms delay com
|
| + // 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)); |
| } |