| 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 d41305ac58d372ce54dd2c2bec37735e2f1004d8..e699e189e8e8a5ac615d3845cf9005114a2c0c99 100644
|
| --- a/components/scheduler/base/time_domain_unittest.cc
|
| +++ b/components/scheduler/base/time_domain_unittest.cc
|
| @@ -19,14 +19,18 @@ namespace scheduler {
|
|
|
| class MockTimeDomain : public TimeDomain {
|
| public:
|
| - MockTimeDomain()
|
| - : now_(base::TimeTicks() + base::TimeDelta::FromSeconds(1)) {}
|
| + explicit MockTimeDomain(TimeDomain::Observer* observer)
|
| + : TimeDomain(observer),
|
| + now_(base::TimeTicks() + base::TimeDelta::FromSeconds(1)) {}
|
| +
|
| + ~MockTimeDomain() override {}
|
|
|
| using TimeDomain::NextScheduledRunTime;
|
| using TimeDomain::NextScheduledTaskQueue;
|
| using TimeDomain::ScheduleDelayedWork;
|
| using TimeDomain::UnregisterQueue;
|
| using TimeDomain::UpdateWorkQueues;
|
| + using TimeDomain::RegisterAsUpdatableTaskQueue;
|
|
|
| // TimeSource implementation:
|
| LazyNow CreateLazyNow() override { return LazyNow(now_); }
|
| @@ -49,21 +53,23 @@ class MockTimeDomain : public TimeDomain {
|
| private:
|
| base::TimeTicks now_;
|
|
|
| - ~MockTimeDomain() override {}
|
| -
|
| DISALLOW_COPY_AND_ASSIGN(MockTimeDomain);
|
| };
|
|
|
| class TimeDomainTest : public testing::Test {
|
| public:
|
| void SetUp() final {
|
| - time_domain_ = make_scoped_refptr(new MockTimeDomain());
|
| + time_domain_ = make_scoped_ptr(CreateMockTimeDomain());
|
| task_queue_ = make_scoped_refptr(new internal::TaskQueueImpl(
|
| - nullptr, time_domain_, TaskQueue::Spec("test_queue"), "test.category",
|
| - "test.category"));
|
| + nullptr, time_domain_.get(), TaskQueue::Spec("test_queue"),
|
| + "test.category", "test.category"));
|
| + }
|
| +
|
| + virtual MockTimeDomain* CreateMockTimeDomain() {
|
| + return new MockTimeDomain(nullptr);
|
| }
|
|
|
| - scoped_refptr<MockTimeDomain> time_domain_;
|
| + scoped_ptr<MockTimeDomain> time_domain_;
|
| scoped_refptr<internal::TaskQueueImpl> task_queue_;
|
| };
|
|
|
| @@ -115,7 +121,7 @@ TEST_F(TimeDomainTest, RequestWakeup_OnlyCalledForEarlierTasks) {
|
| TEST_F(TimeDomainTest, UnregisterQueue) {
|
| scoped_refptr<internal::TaskQueueImpl> task_queue2_ =
|
| make_scoped_refptr(new internal::TaskQueueImpl(
|
| - nullptr, time_domain_, TaskQueue::Spec("test_queue2"),
|
| + nullptr, time_domain_.get(), TaskQueue::Spec("test_queue2"),
|
| "test.category", "test.category"));
|
|
|
| EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, _)).Times(1);
|
| @@ -140,7 +146,7 @@ TEST_F(TimeDomainTest, UnregisterQueue) {
|
| }
|
|
|
| TEST_F(TimeDomainTest, UpdateWorkQueues) {
|
| - scoped_refptr<MockTimeDomain> dummy_delegate(new MockTimeDomain());
|
| + scoped_ptr<MockTimeDomain> dummy_delegate(new MockTimeDomain(nullptr));
|
| base::SimpleTestTickClock dummy_time_source;
|
| scoped_refptr<cc::OrderedSimpleTaskRunner> dummy_task_runner(
|
| new cc::OrderedSimpleTaskRunner(&dummy_time_source, false));
|
| @@ -176,4 +182,38 @@ TEST_F(TimeDomainTest, UpdateWorkQueues) {
|
| EXPECT_EQ(1UL, dummy_queue->IncomingQueueSizeForTest());
|
| }
|
|
|
| +namespace {
|
| +class MockObserver : public TimeDomain::Observer {
|
| + public:
|
| + ~MockObserver() override {}
|
| +
|
| + MOCK_METHOD0(OnTimeDomainHasImmediateWork, void());
|
| + MOCK_METHOD0(OnTimeDomainHasDelayedWork, void());
|
| +};
|
| +} // namespace
|
| +
|
| +class TimeDomainWithObserverTest : public TimeDomainTest {
|
| + public:
|
| + MockTimeDomain* CreateMockTimeDomain() override {
|
| + observer_.reset(new MockObserver());
|
| + return new MockTimeDomain(observer_.get());
|
| + }
|
| +
|
| + scoped_ptr<MockObserver> observer_;
|
| +};
|
| +
|
| +TEST_F(TimeDomainWithObserverTest, OnTimeDomainHasImmediateWork) {
|
| + EXPECT_CALL(*observer_, OnTimeDomainHasImmediateWork());
|
| + time_domain_->RegisterAsUpdatableTaskQueue(task_queue_.get());
|
| +}
|
| +
|
| +TEST_F(TimeDomainWithObserverTest, OnTimeDomainHasDelayedWork) {
|
| + EXPECT_CALL(*observer_, OnTimeDomainHasDelayedWork());
|
| + EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, _));
|
| + LazyNow lazy_now = time_domain_->CreateLazyNow();
|
| + time_domain_->ScheduleDelayedWork(
|
| + task_queue_.get(),
|
| + time_domain_->Now() + base::TimeDelta::FromMilliseconds(10), &lazy_now);
|
| +}
|
| +
|
| } // namespace scheduler
|
|
|