| Index: third_party/WebKit/Source/platform/scheduler/child/idle_helper_unittest.cc
|
| diff --git a/third_party/WebKit/Source/platform/scheduler/child/idle_helper_unittest.cc b/third_party/WebKit/Source/platform/scheduler/child/idle_helper_unittest.cc
|
| index f7ea8c15eae923dd482f530d5fad38762850dd97..9826020ddecb8ecf600c5a4f43dd1042a8104c38 100644
|
| --- a/third_party/WebKit/Source/platform/scheduler/child/idle_helper_unittest.cc
|
| +++ b/third_party/WebKit/Source/platform/scheduler/child/idle_helper_unittest.cc
|
| @@ -166,7 +166,7 @@ class IdleHelperForTest : public IdleHelper, public IdleHelper::Delegate {
|
|
|
| ~IdleHelperForTest() override {}
|
|
|
| - // SchedulerHelperDelegate implementation:
|
| + // IdleHelper::Delegate implementation:
|
| MOCK_METHOD2(CanEnterLongIdlePeriod,
|
| bool(base::TimeTicks now,
|
| base::TimeDelta* next_long_idle_period_delay_out));
|
| @@ -284,6 +284,10 @@ class BaseIdleHelperTest : public testing::Test {
|
| idle_helper_->SchedulerIdlePeriodState()));
|
| }
|
|
|
| + const scoped_refptr<TaskQueue>& idle_queue() const {
|
| + return idle_helper_->idle_queue_;
|
| + }
|
| +
|
| std::unique_ptr<base::SimpleTestTickClock> clock_;
|
| // Only one of mock_task_runner_ or message_loop_ will be set.
|
| scoped_refptr<cc::OrderedSimpleTaskRunner> mock_task_runner_;
|
| @@ -1080,5 +1084,39 @@ TEST_F(IdleHelperWithQuiescencePeriodTest,
|
| EXPECT_EQ(0, run_count);
|
| }
|
|
|
| +TEST_F(IdleHelperTest, TestPostDelayedIdleTask) {
|
| + int run_count = 0;
|
| + base::TimeTicks expected_deadline =
|
| + clock_->NowTicks() + base::TimeDelta::FromMilliseconds(2300);
|
| + base::TimeTicks deadline_in_task;
|
| +
|
| + // Posting a delayed idle task should not post anything on the underlying
|
| + // task queue until the delay is up.
|
| + idle_task_runner_->PostDelayedIdleTask(
|
| + FROM_HERE, base::TimeDelta::FromMilliseconds(200),
|
| + base::Bind(&IdleTestTask, &run_count, &deadline_in_task));
|
| + EXPECT_EQ(0u, idle_queue()->GetNumberOfPendingTasks());
|
| +
|
| + clock_->Advance(base::TimeDelta::FromMilliseconds(100));
|
| +
|
| + // It shouldn't run until the delay is over even though we went idle.
|
| + idle_helper_->StartIdlePeriod(
|
| + IdleHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->NowTicks(),
|
| + expected_deadline);
|
| + EXPECT_EQ(0u, idle_queue()->GetNumberOfPendingTasks());
|
| + RunUntilIdle();
|
| + EXPECT_EQ(0, run_count);
|
| +
|
| + clock_->Advance(base::TimeDelta::FromMilliseconds(100));
|
| + idle_helper_->StartIdlePeriod(
|
| + IdleHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->NowTicks(),
|
| + expected_deadline);
|
| + EXPECT_EQ(1u, idle_queue()->GetNumberOfPendingTasks());
|
| + RunUntilIdle();
|
| +
|
| + EXPECT_EQ(1, run_count);
|
| + EXPECT_EQ(expected_deadline, deadline_in_task);
|
| +}
|
| +
|
| } // namespace scheduler
|
| } // namespace blink
|
|
|