| Index: third_party/WebKit/Source/platform/scheduler/base/time_domain_unittest.cc
|
| diff --git a/third_party/WebKit/Source/platform/scheduler/base/time_domain_unittest.cc b/third_party/WebKit/Source/platform/scheduler/base/time_domain_unittest.cc
|
| index 610b95b304f5838222707ad1153108d352959a3d..80db099be1699e5be41e9546bbb2afeb3e531fe3 100644
|
| --- a/third_party/WebKit/Source/platform/scheduler/base/time_domain_unittest.cc
|
| +++ b/third_party/WebKit/Source/platform/scheduler/base/time_domain_unittest.cc
|
| @@ -30,8 +30,6 @@ class MockTimeDomain : public TimeDomain {
|
|
|
| ~MockTimeDomain() override {}
|
|
|
| - using TimeDomain::CancelDelayedWork;
|
| - using TimeDomain::ClearExpiredWakeups;
|
| using TimeDomain::NextScheduledRunTime;
|
| using TimeDomain::NextScheduledTaskQueue;
|
| using TimeDomain::ScheduleDelayedWork;
|
| @@ -99,7 +97,46 @@ TEST_F(TimeDomainTest, ScheduleDelayedWork) {
|
| EXPECT_EQ(task_queue_.get(), next_task_queue);
|
| }
|
|
|
| +TEST_F(TimeDomainTest, ScheduleDelayedWorkSupersedesPreviousWakeup) {
|
| + base::TimeDelta delay1 = base::TimeDelta::FromMilliseconds(10);
|
| + base::TimeDelta delay2 = base::TimeDelta::FromMilliseconds(100);
|
| + base::TimeTicks delayed_runtime1 = time_domain_->Now() + delay1;
|
| + base::TimeTicks delayed_runtime2 = time_domain_->Now() + delay2;
|
| + EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay1));
|
| + base::TimeTicks now = time_domain_->Now();
|
| + time_domain_->ScheduleDelayedWork(task_queue_.get(), delayed_runtime1, now);
|
| +
|
| + base::TimeTicks next_scheduled_runtime;
|
| + EXPECT_TRUE(time_domain_->NextScheduledRunTime(&next_scheduled_runtime));
|
| + EXPECT_EQ(delayed_runtime1, next_scheduled_runtime);
|
| +
|
| + Mock::VerifyAndClearExpectations(time_domain_.get());
|
| +
|
| + // Now scheduler a later wakeup, which should replace the previously requested
|
| + // one.
|
| + EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay2));
|
| + time_domain_->ScheduleDelayedWork(task_queue_.get(), delayed_runtime2, now);
|
| +
|
| + EXPECT_TRUE(time_domain_->NextScheduledRunTime(&next_scheduled_runtime));
|
| + EXPECT_EQ(delayed_runtime2, next_scheduled_runtime);
|
| +}
|
| +
|
| TEST_F(TimeDomainTest, RequestWakeup_OnlyCalledForEarlierTasks) {
|
| + scoped_refptr<internal::TaskQueueImpl> task_queue2 =
|
| + make_scoped_refptr(new internal::TaskQueueImpl(
|
| + nullptr, time_domain_.get(), TaskQueue::Spec("test_queue2"),
|
| + "test.category", "test.category"));
|
| +
|
| + scoped_refptr<internal::TaskQueueImpl> task_queue3 =
|
| + make_scoped_refptr(new internal::TaskQueueImpl(
|
| + nullptr, time_domain_.get(), TaskQueue::Spec("test_queue3"),
|
| + "test.category", "test.category"));
|
| +
|
| + scoped_refptr<internal::TaskQueueImpl> task_queue4 =
|
| + make_scoped_refptr(new internal::TaskQueueImpl(
|
| + nullptr, time_domain_.get(), TaskQueue::Spec("test_queue4"),
|
| + "test.category", "test.category"));
|
| +
|
| base::TimeDelta delay1 = base::TimeDelta::FromMilliseconds(10);
|
| base::TimeDelta delay2 = base::TimeDelta::FromMilliseconds(20);
|
| base::TimeDelta delay3 = base::TimeDelta::FromMilliseconds(30);
|
| @@ -114,13 +151,13 @@ TEST_F(TimeDomainTest, RequestWakeup_OnlyCalledForEarlierTasks) {
|
|
|
| // RequestWakeup should not be called when scheduling later tasks.
|
| EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, _)).Times(0);
|
| - time_domain_->ScheduleDelayedWork(task_queue_.get(), now + delay2, now);
|
| - time_domain_->ScheduleDelayedWork(task_queue_.get(), now + delay3, now);
|
| + time_domain_->ScheduleDelayedWork(task_queue2.get(), now + delay2, now);
|
| + time_domain_->ScheduleDelayedWork(task_queue3.get(), now + delay3, now);
|
|
|
| // RequestWakeup should be called when scheduling earlier tasks.
|
| Mock::VerifyAndClearExpectations(time_domain_.get());
|
| EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay4));
|
| - time_domain_->ScheduleDelayedWork(task_queue_.get(), now + delay4, now);
|
| + time_domain_->ScheduleDelayedWork(task_queue4.get(), now + delay4, now);
|
| }
|
|
|
| TEST_F(TimeDomainTest, UnregisterQueue) {
|
| @@ -171,109 +208,6 @@ TEST_F(TimeDomainTest, UpdateWorkQueues) {
|
| ASSERT_FALSE(time_domain_->NextScheduledRunTime(&next_run_time));
|
| }
|
|
|
| -TEST_F(TimeDomainTest, ClearExpiredWakeups) {
|
| - base::TimeTicks now = time_domain_->Now();
|
| - base::TimeDelta delay1 = base::TimeDelta::FromMilliseconds(10);
|
| - base::TimeDelta delay2 = base::TimeDelta::FromMilliseconds(20);
|
| - base::TimeTicks run_time1 = now + delay1;
|
| - base::TimeTicks run_time2 = now + delay2;
|
| -
|
| - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, _)).Times(AnyNumber());
|
| - time_domain_->ScheduleDelayedWork(task_queue_.get(), run_time1, now);
|
| - time_domain_->ScheduleDelayedWork(task_queue_.get(), run_time2, now);
|
| -
|
| - base::TimeTicks next_run_time;
|
| - ASSERT_TRUE(time_domain_->NextScheduledRunTime(&next_run_time));
|
| - EXPECT_EQ(run_time1, next_run_time);
|
| -
|
| - time_domain_->SetNow(run_time1);
|
| - time_domain_->ClearExpiredWakeups();
|
| -
|
| - ASSERT_TRUE(time_domain_->NextScheduledRunTime(&next_run_time));
|
| - EXPECT_EQ(run_time2, next_run_time);
|
| -
|
| - time_domain_->SetNow(run_time2);
|
| - time_domain_->ClearExpiredWakeups();
|
| - ASSERT_FALSE(time_domain_->NextScheduledRunTime(&next_run_time));
|
| -}
|
| -
|
| -TEST_F(TimeDomainTest, CancelDelayedWork) {
|
| - base::TimeDelta delay = base::TimeDelta::FromMilliseconds(50);
|
| - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay));
|
| - base::TimeTicks now = time_domain_->Now();
|
| - base::TimeTicks delayed_runtime = now + delay;
|
| - time_domain_->ScheduleDelayedWork(task_queue_.get(), delayed_runtime, now);
|
| -
|
| - base::TimeTicks next_run_time;
|
| - ASSERT_TRUE(time_domain_->NextScheduledRunTime(&next_run_time));
|
| - EXPECT_EQ(delayed_runtime, next_run_time);
|
| -
|
| - time_domain_->CancelDelayedWork(task_queue_.get(), delayed_runtime);
|
| - EXPECT_FALSE(time_domain_->NextScheduledRunTime(&next_run_time));
|
| -}
|
| -
|
| -TEST_F(TimeDomainTest, CancelDelayedWorkTaskQueueDoesntMatch) {
|
| - base::TimeDelta delay = base::TimeDelta::FromMilliseconds(50);
|
| - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay));
|
| - base::TimeTicks now = time_domain_->Now();
|
| - base::TimeTicks delayed_runtime = now + delay;
|
| - time_domain_->ScheduleDelayedWork(task_queue_.get(), delayed_runtime, now);
|
| -
|
| - base::TimeTicks next_run_time;
|
| - ASSERT_TRUE(time_domain_->NextScheduledRunTime(&next_run_time));
|
| - EXPECT_EQ(delayed_runtime, next_run_time);
|
| -
|
| - time_domain_->CancelDelayedWork(nullptr, delayed_runtime);
|
| - ASSERT_TRUE(time_domain_->NextScheduledRunTime(&next_run_time));
|
| - EXPECT_EQ(delayed_runtime, next_run_time);
|
| -}
|
| -
|
| -TEST_F(TimeDomainTest, CancelDelayedWorkTwoWakeUpsCancelFirst) {
|
| - base::TimeDelta delay1 = base::TimeDelta::FromMilliseconds(50);
|
| - base::TimeDelta delay2 = base::TimeDelta::FromMilliseconds(150);
|
| - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay1));
|
| - base::TimeTicks now = time_domain_->Now();
|
| - base::TimeTicks delayed_runtime1 = now + delay1;
|
| - base::TimeTicks delayed_runtime2 = now + delay2;
|
| - time_domain_->ScheduleDelayedWork(task_queue_.get(), delayed_runtime1, now);
|
| - time_domain_->ScheduleDelayedWork(task_queue_.get(), delayed_runtime2, now);
|
| -
|
| - base::TimeTicks next_run_time;
|
| - ASSERT_TRUE(time_domain_->NextScheduledRunTime(&next_run_time));
|
| - EXPECT_EQ(delayed_runtime1, next_run_time);
|
| - Mock::VerifyAndClearExpectations(time_domain_.get());
|
| -
|
| - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay2));
|
| - time_domain_->CancelDelayedWork(task_queue_.get(), delayed_runtime1);
|
| - ASSERT_TRUE(time_domain_->NextScheduledRunTime(&next_run_time));
|
| - EXPECT_EQ(delayed_runtime2, next_run_time);
|
| -}
|
| -
|
| -TEST_F(TimeDomainTest, CancelDelayedWorkTwoWakeUpsCancelSecond) {
|
| - base::TimeDelta delay1 = base::TimeDelta::FromMilliseconds(50);
|
| - base::TimeDelta delay2 = base::TimeDelta::FromMilliseconds(150);
|
| - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay1));
|
| - base::TimeTicks now = time_domain_->Now();
|
| - base::TimeTicks delayed_runtime1 = now + delay1;
|
| - base::TimeTicks delayed_runtime2 = now + delay2;
|
| - time_domain_->ScheduleDelayedWork(task_queue_.get(), delayed_runtime1, now);
|
| - time_domain_->ScheduleDelayedWork(task_queue_.get(), delayed_runtime2, now);
|
| -
|
| - base::TimeTicks next_run_time;
|
| - ASSERT_TRUE(time_domain_->NextScheduledRunTime(&next_run_time));
|
| - EXPECT_EQ(delayed_runtime1, next_run_time);
|
| - Mock::VerifyAndClearExpectations(time_domain_.get());
|
| -
|
| - time_domain_->CancelDelayedWork(task_queue_.get(), delayed_runtime2);
|
| - ASSERT_TRUE(time_domain_->NextScheduledRunTime(&next_run_time));
|
| - EXPECT_EQ(delayed_runtime1, next_run_time);
|
| -
|
| - time_domain_->SetNow(delayed_runtime1);
|
| - LazyNow lazy_now = time_domain_->CreateLazyNow();
|
| - time_domain_->UpdateWorkQueues(lazy_now);
|
| - ASSERT_FALSE(time_domain_->NextScheduledRunTime(&next_run_time));
|
| -}
|
| -
|
| namespace {
|
| class MockObserver : public TimeDomain::Observer {
|
| public:
|
|
|