Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(579)

Side by Side Diff: components/scheduler/renderer/renderer_scheduler_impl_unittest.cc

Issue 1424053002: Adds a flag to support "Virtual Time" to the blink scheduler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added a test Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/scheduler/renderer/renderer_scheduler_impl.h" 5 #include "components/scheduler/renderer/renderer_scheduler_impl.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/test/simple_test_tick_clock.h" 8 #include "base/test/simple_test_tick_clock.h"
9 #include "cc/output/begin_frame_args.h" 9 #include "cc/output/begin_frame_args.h"
10 #include "cc/test/ordered_simple_task_runner.h" 10 #include "cc/test/ordered_simple_task_runner.h"
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 172
173 }; // namespace 173 }; // namespace
174 174
175 class RendererSchedulerImplForTest : public RendererSchedulerImpl { 175 class RendererSchedulerImplForTest : public RendererSchedulerImpl {
176 public: 176 public:
177 using RendererSchedulerImpl::OnIdlePeriodEnded; 177 using RendererSchedulerImpl::OnIdlePeriodEnded;
178 using RendererSchedulerImpl::OnIdlePeriodStarted; 178 using RendererSchedulerImpl::OnIdlePeriodStarted;
179 179
180 RendererSchedulerImplForTest( 180 RendererSchedulerImplForTest(
181 scoped_refptr<SchedulerTaskRunnerDelegate> main_task_runner) 181 scoped_refptr<SchedulerTaskRunnerDelegate> main_task_runner)
182 : RendererSchedulerImpl(main_task_runner), update_policy_count_(0) {} 182 : RendererSchedulerImpl(main_task_runner,
183 RendererSchedulerImpl::TimeSource::NORMAL),
184 update_policy_count_(0) {}
183 185
184 void UpdatePolicyLocked(UpdateType update_type) override { 186 void UpdatePolicyLocked(UpdateType update_type) override {
185 update_policy_count_++; 187 update_policy_count_++;
186 RendererSchedulerImpl::UpdatePolicyLocked(update_type); 188 RendererSchedulerImpl::UpdatePolicyLocked(update_type);
187 189
188 std::string use_case = 190 std::string use_case =
189 RendererScheduler::UseCaseToString(MainThreadOnly().current_use_case); 191 RendererScheduler::UseCaseToString(MainThreadOnly().current_use_case);
190 if (MainThreadOnly().touchstart_expected_soon) { 192 if (MainThreadOnly().touchstart_expected_soon) {
191 use_cases_.push_back(use_case + " scroll expected"); 193 use_cases_.push_back(use_case + " scroll expected");
192 } else { 194 } else {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 231
230 RendererSchedulerImplTest(base::MessageLoop* message_loop) 232 RendererSchedulerImplTest(base::MessageLoop* message_loop)
231 : clock_(new base::SimpleTestTickClock()), message_loop_(message_loop) { 233 : clock_(new base::SimpleTestTickClock()), message_loop_(message_loop) {
232 clock_->Advance(base::TimeDelta::FromMicroseconds(5000)); 234 clock_->Advance(base::TimeDelta::FromMicroseconds(5000));
233 } 235 }
234 236
235 ~RendererSchedulerImplTest() override {} 237 ~RendererSchedulerImplTest() override {}
236 238
237 void SetUp() override { 239 void SetUp() override {
238 if (message_loop_) { 240 if (message_loop_) {
239 main_task_runner_ = 241 main_task_runner_ = SchedulerTaskRunnerDelegateImpl::Create(
240 SchedulerTaskRunnerDelegateImpl::Create(message_loop_.get()); 242 message_loop_.get(),
243 make_scoped_ptr(new TestTimeSource(clock_.get())));
241 } else { 244 } else {
242 mock_task_runner_ = make_scoped_refptr( 245 mock_task_runner_ = make_scoped_refptr(
243 new cc::OrderedSimpleTaskRunner(clock_.get(), false)); 246 new cc::OrderedSimpleTaskRunner(clock_.get(), false));
244 main_task_runner_ = 247 main_task_runner_ = SchedulerTaskRunnerDelegateForTest::Create(
245 SchedulerTaskRunnerDelegateForTest::Create(mock_task_runner_); 248 mock_task_runner_, make_scoped_ptr(new TestTimeSource(clock_.get())));
246 } 249 }
247 Initialize( 250 Initialize(
248 make_scoped_ptr(new RendererSchedulerImplForTest(main_task_runner_))); 251 make_scoped_ptr(new RendererSchedulerImplForTest(main_task_runner_)));
249 } 252 }
250 253
251 void Initialize(scoped_ptr<RendererSchedulerImplForTest> scheduler) { 254 void Initialize(scoped_ptr<RendererSchedulerImplForTest> scheduler) {
252 scheduler_ = scheduler.Pass(); 255 scheduler_ = scheduler.Pass();
253 default_task_runner_ = scheduler_->DefaultTaskRunner(); 256 default_task_runner_ = scheduler_->DefaultTaskRunner();
254 compositor_task_runner_ = scheduler_->CompositorTaskRunner(); 257 compositor_task_runner_ = scheduler_->CompositorTaskRunner();
255 loading_task_runner_ = scheduler_->LoadingTaskRunner(); 258 loading_task_runner_ = scheduler_->LoadingTaskRunner();
256 idle_task_runner_ = scheduler_->IdleTaskRunner(); 259 idle_task_runner_ = scheduler_->IdleTaskRunner();
257 timer_task_runner_ = scheduler_->TimerTaskRunner(); 260 timer_task_runner_ = scheduler_->TimerTaskRunner();
258 scheduler_->GetSchedulerHelperForTesting()->SetTimeSourceForTesting(
259 make_scoped_ptr(new TestTimeSource(clock_.get())));
260 scheduler_->GetSchedulerHelperForTesting()
261 ->GetTaskQueueManagerForTesting()
262 ->SetTimeSourceForTesting(
263 make_scoped_ptr(new TestTimeSource(clock_.get())));
264 scheduler_->GetLoadingTaskCostEstimatorForTesting()
265 ->SetTimeSourceForTesting(
266 make_scoped_ptr(new TestTimeSource(clock_.get())));
267 scheduler_->GetTimerTaskCostEstimatorForTesting()->SetTimeSourceForTesting(
268 make_scoped_ptr(new TestTimeSource(clock_.get())));
269 scheduler_->GetIdleTimeEstimatorForTesting()->SetTimeSourceForTesting(
270 make_scoped_ptr(new TestTimeSource(clock_.get())));
271 } 261 }
272 262
273 void TearDown() override { 263 void TearDown() override {
274 DCHECK(!mock_task_runner_.get() || !message_loop_.get()); 264 DCHECK(!mock_task_runner_.get() || !message_loop_.get());
275 scheduler_->Shutdown(); 265 scheduler_->Shutdown();
276 if (mock_task_runner_.get()) { 266 if (mock_task_runner_.get()) {
277 // Check that all tests stop posting tasks. 267 // Check that all tests stop posting tasks.
278 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true); 268 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true);
279 while (mock_task_runner_->RunUntilIdle()) { 269 while (mock_task_runner_->RunUntilIdle()) {
280 } 270 }
(...skipping 1080 matching lines...) Expand 10 before | Expand all | Expand 10 after
1361 RunUntilIdle(); 1351 RunUntilIdle();
1362 EXPECT_EQ(UseCase::NONE, CurrentUseCase()); 1352 EXPECT_EQ(UseCase::NONE, CurrentUseCase());
1363 } 1353 }
1364 1354
1365 class RendererSchedulerImplWithMockSchedulerTest 1355 class RendererSchedulerImplWithMockSchedulerTest
1366 : public RendererSchedulerImplTest { 1356 : public RendererSchedulerImplTest {
1367 public: 1357 public:
1368 void SetUp() override { 1358 void SetUp() override {
1369 mock_task_runner_ = make_scoped_refptr( 1359 mock_task_runner_ = make_scoped_refptr(
1370 new cc::OrderedSimpleTaskRunner(clock_.get(), false)); 1360 new cc::OrderedSimpleTaskRunner(clock_.get(), false));
1371 main_task_runner_ = 1361 main_task_runner_ = SchedulerTaskRunnerDelegateForTest::Create(
1372 SchedulerTaskRunnerDelegateForTest::Create(mock_task_runner_); 1362 mock_task_runner_, make_scoped_ptr(new TestTimeSource(clock_.get())));
1373 mock_scheduler_ = new RendererSchedulerImplForTest(main_task_runner_); 1363 mock_scheduler_ = new RendererSchedulerImplForTest(main_task_runner_);
1374 Initialize(make_scoped_ptr(mock_scheduler_)); 1364 Initialize(make_scoped_ptr(mock_scheduler_));
1375 } 1365 }
1376 1366
1377 protected: 1367 protected:
1378 RendererSchedulerImplForTest* mock_scheduler_; 1368 RendererSchedulerImplForTest* mock_scheduler_;
1379 }; 1369 };
1380 1370
1381 TEST_F(RendererSchedulerImplWithMockSchedulerTest, 1371 TEST_F(RendererSchedulerImplWithMockSchedulerTest,
1382 OnlyOnePendingUrgentPolicyUpdatey) { 1372 OnlyOnePendingUrgentPolicyUpdatey) {
(...skipping 822 matching lines...) Expand 10 before | Expand all | Expand 10 after
2205 } 2195 }
2206 2196
2207 base::TimeDelta time_till_next_frame = 2197 base::TimeDelta time_till_next_frame =
2208 EstimatedNextFrameBegin() - clock_->NowTicks(); 2198 EstimatedNextFrameBegin() - clock_->NowTicks();
2209 if (time_till_next_frame > base::TimeDelta()) 2199 if (time_till_next_frame > base::TimeDelta())
2210 clock_->Advance(time_till_next_frame); 2200 clock_->Advance(time_till_next_frame);
2211 } 2201 }
2212 } 2202 }
2213 2203
2214 } // namespace scheduler 2204 } // namespace scheduler
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698