| Index: components/scheduler/base/time_domain_unittest.cc
|
| diff --git a/components/scheduler/base/time_domain_unittest.cc b/components/scheduler/base/time_domain_unittest.cc
|
| index 75e54595422c24f005b07720c3294b0798d59723..d41305ac58d372ce54dd2c2bec37735e2f1004d8 100644
|
| --- a/components/scheduler/base/time_domain_unittest.cc
|
| +++ b/components/scheduler/base/time_domain_unittest.cc
|
| @@ -13,6 +13,7 @@
|
| #include "testing/gmock/include/gmock/gmock.h"
|
|
|
| using testing::_;
|
| +using testing::Mock;
|
|
|
| namespace scheduler {
|
|
|
| @@ -34,10 +35,12 @@ class MockTimeDomain : public TimeDomain {
|
| base::trace_event::TracedValue* state) const override {}
|
|
|
| bool MaybeAdvanceTime() override { return false; }
|
| -
|
| const char* GetName() const override { return "Test"; }
|
| + void OnRegisterWithTaskQueueManager(
|
| + TaskQueueManagerDelegate* task_queue_manager_delegate,
|
| + base::Closure do_work_closure) override {}
|
|
|
| - MOCK_METHOD1(RequestWakeup, void(base::TimeDelta delay));
|
| + MOCK_METHOD2(RequestWakeup, void(LazyNow* lazy_now, base::TimeDelta delay));
|
|
|
| void SetNow(base::TimeTicks now) { now_ = now; }
|
|
|
| @@ -67,7 +70,7 @@ class TimeDomainTest : public testing::Test {
|
| TEST_F(TimeDomainTest, ScheduleDelayedWork) {
|
| base::TimeDelta delay = base::TimeDelta::FromMilliseconds(10);
|
| base::TimeTicks delayed_runtime = time_domain_->Now() + delay;
|
| - EXPECT_CALL(*time_domain_.get(), RequestWakeup(delay));
|
| + EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay));
|
| LazyNow lazy_now = time_domain_->CreateLazyNow();
|
| time_domain_->ScheduleDelayedWork(task_queue_.get(),
|
| time_domain_->Now() + delay, &lazy_now);
|
| @@ -81,13 +84,41 @@ TEST_F(TimeDomainTest, ScheduleDelayedWork) {
|
| EXPECT_EQ(task_queue_.get(), next_task_queue);
|
| }
|
|
|
| +TEST_F(TimeDomainTest, RequestWakeup_OnlyCalledForEarlierTasks) {
|
| + base::TimeDelta delay1 = base::TimeDelta::FromMilliseconds(10);
|
| + base::TimeDelta delay2 = base::TimeDelta::FromMilliseconds(20);
|
| + base::TimeDelta delay3 = base::TimeDelta::FromMilliseconds(30);
|
| + base::TimeDelta delay4 = base::TimeDelta::FromMilliseconds(1);
|
| +
|
| + // RequestWakeup should always be called if there are no other wakeups.
|
| + EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay1));
|
| + LazyNow lazy_now = time_domain_->CreateLazyNow();
|
| + time_domain_->ScheduleDelayedWork(task_queue_.get(),
|
| + time_domain_->Now() + delay1, &lazy_now);
|
| +
|
| + Mock::VerifyAndClearExpectations(time_domain_.get());
|
| +
|
| + // RequestWakeup should not be called when scheduling later tasks.
|
| + EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, _)).Times(0);
|
| + time_domain_->ScheduleDelayedWork(task_queue_.get(),
|
| + time_domain_->Now() + delay2, &lazy_now);
|
| + time_domain_->ScheduleDelayedWork(task_queue_.get(),
|
| + time_domain_->Now() + delay3, &lazy_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(),
|
| + time_domain_->Now() + delay4, &lazy_now);
|
| +}
|
| +
|
| TEST_F(TimeDomainTest, UnregisterQueue) {
|
| scoped_refptr<internal::TaskQueueImpl> task_queue2_ =
|
| make_scoped_refptr(new internal::TaskQueueImpl(
|
| nullptr, time_domain_, TaskQueue::Spec("test_queue2"),
|
| "test.category", "test.category"));
|
|
|
| - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_)).Times(2);
|
| + EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, _)).Times(1);
|
| LazyNow lazy_now = time_domain_->CreateLazyNow();
|
| time_domain_->ScheduleDelayedWork(
|
| task_queue_.get(),
|
| @@ -132,7 +163,7 @@ TEST_F(TimeDomainTest, UpdateWorkQueues) {
|
| // MoveReadyDelayedTasksToIncomingQueue as expected.
|
| base::TimeDelta delay = base::TimeDelta::FromMilliseconds(50);
|
| base::TimeTicks delayed_runtime = time_domain_->Now() + delay;
|
| - EXPECT_CALL(*time_domain_.get(), RequestWakeup(delay));
|
| + EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay));
|
| LazyNow lazy_now = time_domain_->CreateLazyNow();
|
| time_domain_->ScheduleDelayedWork(dummy_queue.get(), delayed_runtime,
|
| &lazy_now);
|
|
|