| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 "cc/scheduler/scheduler.h" | 5 #include "cc/scheduler/scheduler.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 // to be > BeginFrameArgs::DefaultInterval() | 251 // to be > BeginFrameArgs::DefaultInterval() |
| 252 now_src_->Advance(base::TimeDelta::FromMilliseconds(100)); | 252 now_src_->Advance(base::TimeDelta::FromMilliseconds(100)); |
| 253 // Fail if we need to run 100 tasks in a row. | 253 // Fail if we need to run 100 tasks in a row. |
| 254 task_runner_->SetRunTaskLimit(100); | 254 task_runner_->SetRunTaskLimit(100); |
| 255 } | 255 } |
| 256 | 256 |
| 257 ~SchedulerTest() override {} | 257 ~SchedulerTest() override {} |
| 258 | 258 |
| 259 protected: | 259 protected: |
| 260 TestScheduler* CreateScheduler() { | 260 TestScheduler* CreateScheduler() { |
| 261 scoped_ptr<FakeExternalBeginFrameSource> fake_external_begin_frame_source; | |
| 262 if (scheduler_settings_.use_external_begin_frame_source) { | 261 if (scheduler_settings_.use_external_begin_frame_source) { |
| 263 fake_external_begin_frame_source.reset( | 262 fake_external_begin_frame_source_.reset( |
| 264 new FakeExternalBeginFrameSource(client_.get())); | 263 new FakeExternalBeginFrameSource(client_.get())); |
| 265 fake_external_begin_frame_source_ = | |
| 266 fake_external_begin_frame_source.get(); | |
| 267 } | 264 } |
| 268 scheduler_ = TestScheduler::Create(now_src_.get(), client_.get(), | 265 scheduler_ = TestScheduler::Create(now_src_.get(), client_.get(), |
| 269 scheduler_settings_, 0, task_runner_, | 266 scheduler_settings_, 0, task_runner_, |
| 270 fake_external_begin_frame_source.Pass()); | 267 fake_external_begin_frame_source_.get()); |
| 271 DCHECK(scheduler_); | 268 DCHECK(scheduler_); |
| 272 client_->set_scheduler(scheduler_.get()); | 269 client_->set_scheduler(scheduler_.get()); |
| 273 return scheduler_.get(); | 270 return scheduler_.get(); |
| 274 } | 271 } |
| 275 | 272 |
| 276 void CreateSchedulerAndInitSurface() { | 273 void CreateSchedulerAndInitSurface() { |
| 277 CreateScheduler(); | 274 CreateScheduler(); |
| 278 EXPECT_SCOPED(InitializeOutputSurfaceAndFirstCommit()); | 275 EXPECT_SCOPED(InitializeOutputSurfaceAndFirstCommit()); |
| 279 } | 276 } |
| 280 | 277 |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 // Creep the time forward so that any BeginFrameArgs is not equal to the | 395 // Creep the time forward so that any BeginFrameArgs is not equal to the |
| 399 // last one otherwise we violate the BeginFrameSource contract. | 396 // last one otherwise we violate the BeginFrameSource contract. |
| 400 now_src_->Advance(BeginFrameArgs::DefaultInterval()); | 397 now_src_->Advance(BeginFrameArgs::DefaultInterval()); |
| 401 BeginFrameArgs args = | 398 BeginFrameArgs args = |
| 402 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, now_src()); | 399 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, now_src()); |
| 403 fake_external_begin_frame_source_->TestOnBeginFrame(args); | 400 fake_external_begin_frame_source_->TestOnBeginFrame(args); |
| 404 return args; | 401 return args; |
| 405 } | 402 } |
| 406 | 403 |
| 407 FakeExternalBeginFrameSource* fake_external_begin_frame_source() const { | 404 FakeExternalBeginFrameSource* fake_external_begin_frame_source() const { |
| 408 return fake_external_begin_frame_source_; | 405 return fake_external_begin_frame_source_.get(); |
| 409 } | 406 } |
| 410 | 407 |
| 411 void MainFrameInHighLatencyMode( | 408 void MainFrameInHighLatencyMode( |
| 412 int64 begin_main_frame_to_commit_estimate_in_ms, | 409 int64 begin_main_frame_to_commit_estimate_in_ms, |
| 413 int64 commit_to_activate_estimate_in_ms, | 410 int64 commit_to_activate_estimate_in_ms, |
| 414 bool impl_latency_takes_priority, | 411 bool impl_latency_takes_priority, |
| 415 bool should_send_begin_main_frame); | 412 bool should_send_begin_main_frame); |
| 416 void BeginFramesNotFromClient(bool use_external_begin_frame_source, | 413 void BeginFramesNotFromClient(bool use_external_begin_frame_source, |
| 417 bool throttle_frame_production); | 414 bool throttle_frame_production); |
| 418 void BeginFramesNotFromClient_SwapThrottled( | 415 void BeginFramesNotFromClient_SwapThrottled( |
| 419 bool use_external_begin_frame_source, | 416 bool use_external_begin_frame_source, |
| 420 bool throttle_frame_production); | 417 bool throttle_frame_production); |
| 421 | 418 |
| 422 scoped_ptr<base::SimpleTestTickClock> now_src_; | 419 scoped_ptr<base::SimpleTestTickClock> now_src_; |
| 423 scoped_refptr<OrderedSimpleTaskRunner> task_runner_; | 420 scoped_refptr<OrderedSimpleTaskRunner> task_runner_; |
| 424 FakeExternalBeginFrameSource* fake_external_begin_frame_source_; | 421 scoped_ptr<FakeExternalBeginFrameSource> fake_external_begin_frame_source_; |
| 425 SchedulerSettings scheduler_settings_; | 422 SchedulerSettings scheduler_settings_; |
| 426 scoped_ptr<FakeSchedulerClient> client_; | 423 scoped_ptr<FakeSchedulerClient> client_; |
| 427 scoped_ptr<TestScheduler> scheduler_; | 424 scoped_ptr<TestScheduler> scheduler_; |
| 428 }; | 425 }; |
| 429 | 426 |
| 430 TEST_F(SchedulerTest, InitializeOutputSurfaceDoesNotBeginImplFrame) { | 427 TEST_F(SchedulerTest, InitializeOutputSurfaceDoesNotBeginImplFrame) { |
| 431 scheduler_settings_.use_external_begin_frame_source = true; | 428 scheduler_settings_.use_external_begin_frame_source = true; |
| 432 SetUpScheduler(false); | 429 SetUpScheduler(false); |
| 433 scheduler_->SetCanStart(); | 430 scheduler_->SetCanStart(); |
| 434 scheduler_->SetVisible(true); | 431 scheduler_->SetVisible(true); |
| (...skipping 2546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2981 scheduler_->SetImplLatencyTakesPriority(true); | 2978 scheduler_->SetImplLatencyTakesPriority(true); |
| 2982 scheduler_->SetChildrenNeedBeginFrames(true); | 2979 scheduler_->SetChildrenNeedBeginFrames(true); |
| 2983 | 2980 |
| 2984 EXPECT_SCOPED(AdvanceFrame()); | 2981 EXPECT_SCOPED(AdvanceFrame()); |
| 2985 EXPECT_TRUE(client_->begin_frame_is_sent_to_children()); | 2982 EXPECT_TRUE(client_->begin_frame_is_sent_to_children()); |
| 2986 EXPECT_FALSE(client_->begin_frame_args_sent_to_children().on_critical_path); | 2983 EXPECT_FALSE(client_->begin_frame_args_sent_to_children().on_critical_path); |
| 2987 } | 2984 } |
| 2988 | 2985 |
| 2989 } // namespace | 2986 } // namespace |
| 2990 } // namespace cc | 2987 } // namespace cc |
| OLD | NEW |