OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "platform/scheduler/base/time_domain.h" | 5 #include "platform/scheduler/base/time_domain.h" |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "base/test/simple_test_tick_clock.h" | 9 #include "base/test/simple_test_tick_clock.h" |
10 #include "cc/test/ordered_simple_task_runner.h" | 10 #include "cc/test/ordered_simple_task_runner.h" |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 private: | 56 private: |
57 base::TimeTicks now_; | 57 base::TimeTicks now_; |
58 | 58 |
59 DISALLOW_COPY_AND_ASSIGN(MockTimeDomain); | 59 DISALLOW_COPY_AND_ASSIGN(MockTimeDomain); |
60 }; | 60 }; |
61 | 61 |
62 class TimeDomainTest : public testing::Test { | 62 class TimeDomainTest : public testing::Test { |
63 public: | 63 public: |
64 void SetUp() final { | 64 void SetUp() final { |
65 time_domain_ = base::WrapUnique(CreateMockTimeDomain()); | 65 time_domain_ = base::WrapUnique(CreateMockTimeDomain()); |
66 task_queue_ = make_scoped_refptr(new internal::TaskQueueImpl( | 66 task_queue_ = make_scoped_refptr( |
67 nullptr, time_domain_.get(), TaskQueue::Spec("test_queue"), | 67 new internal::TaskQueueImpl(nullptr, time_domain_.get(), |
68 "test.category", "test.category")); | 68 TaskQueue::Spec(TaskQueue::QueueType::TEST), |
| 69 "test.category", "test.category")); |
69 } | 70 } |
70 | 71 |
71 void TearDown() final { | 72 void TearDown() final { |
72 if (task_queue_) | 73 if (task_queue_) |
73 task_queue_->UnregisterTaskQueue(); | 74 task_queue_->UnregisterTaskQueue(); |
74 } | 75 } |
75 | 76 |
76 virtual MockTimeDomain* CreateMockTimeDomain() { | 77 virtual MockTimeDomain* CreateMockTimeDomain() { |
77 return new MockTimeDomain(nullptr); | 78 return new MockTimeDomain(nullptr); |
78 } | 79 } |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 // Now scheduler a later wakeup, which should replace the previously requested | 116 // Now scheduler a later wakeup, which should replace the previously requested |
116 // one. | 117 // one. |
117 EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay2)); | 118 EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay2)); |
118 time_domain_->ScheduleDelayedWork(task_queue_.get(), delayed_runtime2, now); | 119 time_domain_->ScheduleDelayedWork(task_queue_.get(), delayed_runtime2, now); |
119 | 120 |
120 EXPECT_TRUE(time_domain_->NextScheduledRunTime(&next_scheduled_runtime)); | 121 EXPECT_TRUE(time_domain_->NextScheduledRunTime(&next_scheduled_runtime)); |
121 EXPECT_EQ(delayed_runtime2, next_scheduled_runtime); | 122 EXPECT_EQ(delayed_runtime2, next_scheduled_runtime); |
122 } | 123 } |
123 | 124 |
124 TEST_F(TimeDomainTest, RequestWakeup_OnlyCalledForEarlierTasks) { | 125 TEST_F(TimeDomainTest, RequestWakeup_OnlyCalledForEarlierTasks) { |
125 scoped_refptr<internal::TaskQueueImpl> task_queue2 = | 126 scoped_refptr<internal::TaskQueueImpl> task_queue2 = make_scoped_refptr( |
126 make_scoped_refptr(new internal::TaskQueueImpl( | 127 new internal::TaskQueueImpl(nullptr, time_domain_.get(), |
127 nullptr, time_domain_.get(), TaskQueue::Spec("test_queue2"), | 128 TaskQueue::Spec(TaskQueue::QueueType::TEST), |
128 "test.category", "test.category")); | 129 "test.category", "test.category")); |
129 | 130 |
130 scoped_refptr<internal::TaskQueueImpl> task_queue3 = | 131 scoped_refptr<internal::TaskQueueImpl> task_queue3 = make_scoped_refptr( |
131 make_scoped_refptr(new internal::TaskQueueImpl( | 132 new internal::TaskQueueImpl(nullptr, time_domain_.get(), |
132 nullptr, time_domain_.get(), TaskQueue::Spec("test_queue3"), | 133 TaskQueue::Spec(TaskQueue::QueueType::TEST), |
133 "test.category", "test.category")); | 134 "test.category", "test.category")); |
134 | 135 |
135 scoped_refptr<internal::TaskQueueImpl> task_queue4 = | 136 scoped_refptr<internal::TaskQueueImpl> task_queue4 = make_scoped_refptr( |
136 make_scoped_refptr(new internal::TaskQueueImpl( | 137 new internal::TaskQueueImpl(nullptr, time_domain_.get(), |
137 nullptr, time_domain_.get(), TaskQueue::Spec("test_queue4"), | 138 TaskQueue::Spec(TaskQueue::QueueType::TEST), |
138 "test.category", "test.category")); | 139 "test.category", "test.category")); |
139 | 140 |
140 base::TimeDelta delay1 = base::TimeDelta::FromMilliseconds(10); | 141 base::TimeDelta delay1 = base::TimeDelta::FromMilliseconds(10); |
141 base::TimeDelta delay2 = base::TimeDelta::FromMilliseconds(20); | 142 base::TimeDelta delay2 = base::TimeDelta::FromMilliseconds(20); |
142 base::TimeDelta delay3 = base::TimeDelta::FromMilliseconds(30); | 143 base::TimeDelta delay3 = base::TimeDelta::FromMilliseconds(30); |
143 base::TimeDelta delay4 = base::TimeDelta::FromMilliseconds(1); | 144 base::TimeDelta delay4 = base::TimeDelta::FromMilliseconds(1); |
144 | 145 |
145 // RequestWakeup should always be called if there are no other wakeups. | 146 // RequestWakeup should always be called if there are no other wakeups. |
146 EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay1)); | 147 EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay1)); |
147 base::TimeTicks now = time_domain_->Now(); | 148 base::TimeTicks now = time_domain_->Now(); |
148 time_domain_->ScheduleDelayedWork(task_queue_.get(), now + delay1, now); | 149 time_domain_->ScheduleDelayedWork(task_queue_.get(), now + delay1, now); |
149 | 150 |
150 Mock::VerifyAndClearExpectations(time_domain_.get()); | 151 Mock::VerifyAndClearExpectations(time_domain_.get()); |
151 | 152 |
152 // RequestWakeup should not be called when scheduling later tasks. | 153 // RequestWakeup should not be called when scheduling later tasks. |
153 EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, _)).Times(0); | 154 EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, _)).Times(0); |
154 time_domain_->ScheduleDelayedWork(task_queue2.get(), now + delay2, now); | 155 time_domain_->ScheduleDelayedWork(task_queue2.get(), now + delay2, now); |
155 time_domain_->ScheduleDelayedWork(task_queue3.get(), now + delay3, now); | 156 time_domain_->ScheduleDelayedWork(task_queue3.get(), now + delay3, now); |
156 | 157 |
157 // RequestWakeup should be called when scheduling earlier tasks. | 158 // RequestWakeup should be called when scheduling earlier tasks. |
158 Mock::VerifyAndClearExpectations(time_domain_.get()); | 159 Mock::VerifyAndClearExpectations(time_domain_.get()); |
159 EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay4)); | 160 EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay4)); |
160 time_domain_->ScheduleDelayedWork(task_queue4.get(), now + delay4, now); | 161 time_domain_->ScheduleDelayedWork(task_queue4.get(), now + delay4, now); |
161 } | 162 } |
162 | 163 |
163 TEST_F(TimeDomainTest, UnregisterQueue) { | 164 TEST_F(TimeDomainTest, UnregisterQueue) { |
164 scoped_refptr<internal::TaskQueueImpl> task_queue2_ = | 165 scoped_refptr<internal::TaskQueueImpl> task_queue2_ = make_scoped_refptr( |
165 make_scoped_refptr(new internal::TaskQueueImpl( | 166 new internal::TaskQueueImpl(nullptr, time_domain_.get(), |
166 nullptr, time_domain_.get(), TaskQueue::Spec("test_queue2"), | 167 TaskQueue::Spec(TaskQueue::QueueType::TEST), |
167 "test.category", "test.category")); | 168 "test.category", "test.category")); |
168 | 169 |
169 EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, _)).Times(1); | 170 EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, _)).Times(1); |
170 base::TimeTicks now = time_domain_->Now(); | 171 base::TimeTicks now = time_domain_->Now(); |
171 time_domain_->ScheduleDelayedWork( | 172 time_domain_->ScheduleDelayedWork( |
172 task_queue_.get(), now + base::TimeDelta::FromMilliseconds(10), now); | 173 task_queue_.get(), now + base::TimeDelta::FromMilliseconds(10), now); |
173 time_domain_->ScheduleDelayedWork( | 174 time_domain_->ScheduleDelayedWork( |
174 task_queue2_.get(), now + base::TimeDelta::FromMilliseconds(100), now); | 175 task_queue2_.get(), now + base::TimeDelta::FromMilliseconds(100), now); |
175 | 176 |
176 TaskQueue* next_task_queue; | 177 TaskQueue* next_task_queue; |
177 EXPECT_TRUE(time_domain_->NextScheduledTaskQueue(&next_task_queue)); | 178 EXPECT_TRUE(time_domain_->NextScheduledTaskQueue(&next_task_queue)); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 TEST_F(TimeDomainWithObserverTest, OnTimeDomainHasDelayedWork) { | 237 TEST_F(TimeDomainWithObserverTest, OnTimeDomainHasDelayedWork) { |
237 EXPECT_CALL(*observer_, OnTimeDomainHasDelayedWork(task_queue_.get())); | 238 EXPECT_CALL(*observer_, OnTimeDomainHasDelayedWork(task_queue_.get())); |
238 EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, _)); | 239 EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, _)); |
239 base::TimeTicks now = time_domain_->Now(); | 240 base::TimeTicks now = time_domain_->Now(); |
240 time_domain_->ScheduleDelayedWork( | 241 time_domain_->ScheduleDelayedWork( |
241 task_queue_.get(), now + base::TimeDelta::FromMilliseconds(10), now); | 242 task_queue_.get(), now + base::TimeDelta::FromMilliseconds(10), now); |
242 } | 243 } |
243 | 244 |
244 } // namespace scheduler | 245 } // namespace scheduler |
245 } // namespace blink | 246 } // namespace blink |
OLD | NEW |