OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/test/scheduler_test_common.h" | 5 #include "cc/test/scheduler_test_common.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 | 10 |
(...skipping 16 matching lines...) Expand all Loading... |
27 return now_src_->Now(); | 27 return now_src_->Now(); |
28 } | 28 } |
29 | 29 |
30 std::string TestDelayBasedTimeSource::TypeString() const { | 30 std::string TestDelayBasedTimeSource::TypeString() const { |
31 return "TestDelayBasedTimeSource"; | 31 return "TestDelayBasedTimeSource"; |
32 } | 32 } |
33 | 33 |
34 TestDelayBasedTimeSource::~TestDelayBasedTimeSource() { | 34 TestDelayBasedTimeSource::~TestDelayBasedTimeSource() { |
35 } | 35 } |
36 | 36 |
| 37 bool FakeBeginFrameSource::NeedsBeginFrames() const { |
| 38 return needs_begin_frames_; |
| 39 } |
| 40 void FakeBeginFrameSource::SetNeedsBeginFrames(bool needs_begin_frames) { |
| 41 needs_begin_frames_ = needs_begin_frames; |
| 42 } |
| 43 void FakeBeginFrameSource::DidFinishFrame(size_t remaining_frames) { |
| 44 remaining_frames_ = remaining_frames; |
| 45 } |
| 46 void FakeBeginFrameSource::AsValueInto(base::debug::TracedValue* dict) const { |
| 47 dict->SetString("type", "FakeBeginFrameSource"); |
| 48 BeginFrameSource::AsValueInto(dict); |
| 49 } |
| 50 |
| 51 TestBackToBackBeginFrameSource::TestBackToBackBeginFrameSource( |
| 52 scoped_refptr<TestNowSource> now_src, |
| 53 base::SingleThreadTaskRunner* task_runner) |
| 54 : BackToBackBeginFrameSource(task_runner), now_src_(now_src) { |
| 55 } |
| 56 |
| 57 TestBackToBackBeginFrameSource::~TestBackToBackBeginFrameSource() { |
| 58 } |
| 59 |
| 60 base::TimeTicks TestBackToBackBeginFrameSource::Now() { |
| 61 return now_src_->Now(); |
| 62 } |
| 63 |
| 64 TestSyntheticBeginFrameSource::TestSyntheticBeginFrameSource( |
| 65 scoped_refptr<DelayBasedTimeSource> time_source) |
| 66 : SyntheticBeginFrameSource(time_source) { |
| 67 } |
| 68 |
| 69 TestSyntheticBeginFrameSource::~TestSyntheticBeginFrameSource() { |
| 70 } |
| 71 |
| 72 TestSchedulerFrameSourcesConstructor::TestSchedulerFrameSourcesConstructor( |
| 73 OrderedSimpleTaskRunner* test_task_runner, |
| 74 TestNowSource* now_src) |
| 75 : test_task_runner_(test_task_runner), now_src_(now_src) { |
| 76 } |
| 77 TestSchedulerFrameSourcesConstructor::~TestSchedulerFrameSourcesConstructor() { |
| 78 } |
| 79 |
| 80 BeginFrameSource* |
| 81 TestSchedulerFrameSourcesConstructor::ConstructPrimaryFrameSource( |
| 82 Scheduler* scheduler) { |
| 83 if (!scheduler->settings_.throttle_frame_production) { |
| 84 TRACE_EVENT1( |
| 85 "cc", |
| 86 "TestSchedulerFrameSourcesConstructor::ConstructPrimaryFrameSource", |
| 87 "source", |
| 88 "TestBackToBackBeginFrameSource"); |
| 89 DCHECK(!scheduler->primary_frame_source_internal_); |
| 90 scheduler->primary_frame_source_internal_ = |
| 91 TestBackToBackBeginFrameSource::Create(now_src_, test_task_runner_); |
| 92 return scheduler->primary_frame_source_internal_.get(); |
| 93 } else if (scheduler->settings_.begin_frame_scheduling_enabled) { |
| 94 return SchedulerFrameSourcesConstructor::ConstructPrimaryFrameSource( |
| 95 scheduler); |
| 96 } else { |
| 97 TRACE_EVENT1( |
| 98 "cc", |
| 99 "TestSchedulerFrameSourcesConstructor::ConstructPrimaryFrameSource", |
| 100 "source", |
| 101 "TestSyntheticBeginFrameSource"); |
| 102 scoped_ptr<TestSyntheticBeginFrameSource> synthetic_source = |
| 103 TestSyntheticBeginFrameSource::Create( |
| 104 now_src_, test_task_runner_, BeginFrameArgs::DefaultInterval()); |
| 105 |
| 106 DCHECK(!scheduler->vsync_observer_); |
| 107 scheduler->vsync_observer_ = synthetic_source.get(); |
| 108 |
| 109 DCHECK(!scheduler->primary_frame_source_internal_); |
| 110 scheduler->primary_frame_source_internal_ = synthetic_source.Pass(); |
| 111 return scheduler->primary_frame_source_internal_.get(); |
| 112 } |
| 113 } |
| 114 |
| 115 BeginFrameSource* |
| 116 TestSchedulerFrameSourcesConstructor::ConstructBackgroundFrameSource( |
| 117 Scheduler* scheduler) { |
| 118 TRACE_EVENT1( |
| 119 "cc", |
| 120 "TestSchedulerFrameSourcesConstructor::ConstructBackgroundFrameSource", |
| 121 "source", |
| 122 "TestSyntheticBeginFrameSource"); |
| 123 DCHECK(!(scheduler->background_frame_source_internal_)); |
| 124 scheduler->background_frame_source_internal_ = |
| 125 TestSyntheticBeginFrameSource::Create( |
| 126 now_src_, test_task_runner_, base::TimeDelta::FromSeconds(1)); |
| 127 return scheduler->background_frame_source_internal_.get(); |
| 128 } |
| 129 |
37 TestScheduler::TestScheduler( | 130 TestScheduler::TestScheduler( |
38 scoped_refptr<TestNowSource> now_src, | 131 scoped_refptr<TestNowSource> now_src, |
39 SchedulerClient* client, | 132 SchedulerClient* client, |
40 const SchedulerSettings& scheduler_settings, | 133 const SchedulerSettings& scheduler_settings, |
41 int layer_tree_host_id, | 134 int layer_tree_host_id, |
42 const scoped_refptr<OrderedSimpleTaskRunner>& test_task_runner) | 135 const scoped_refptr<OrderedSimpleTaskRunner>& test_task_runner, |
| 136 TestSchedulerFrameSourcesConstructor* frame_sources_constructor) |
43 : Scheduler(client, | 137 : Scheduler(client, |
44 scheduler_settings, | 138 scheduler_settings, |
45 layer_tree_host_id, | 139 layer_tree_host_id, |
46 test_task_runner), | 140 test_task_runner, |
| 141 frame_sources_constructor), |
47 now_src_(now_src), | 142 now_src_(now_src), |
48 test_task_runner_(test_task_runner.get()) { | 143 test_task_runner_(test_task_runner.get()) { |
49 if (!settings_.begin_frame_scheduling_enabled) { | |
50 scoped_refptr<DelayBasedTimeSource> time_source = | |
51 TestDelayBasedTimeSource::Create( | |
52 now_src, VSyncInterval(), test_task_runner_); | |
53 synthetic_begin_frame_source_.reset( | |
54 new SyntheticBeginFrameSource(this, time_source)); | |
55 } | |
56 } | 144 } |
57 | 145 |
58 base::TimeTicks TestScheduler::Now() const { | 146 base::TimeTicks TestScheduler::Now() const { |
59 return now_src_->Now(); | 147 return now_src_->Now(); |
60 } | 148 } |
61 | 149 |
62 TestScheduler::~TestScheduler() { | 150 TestScheduler::~TestScheduler() { |
63 } | 151 } |
64 | 152 |
65 } // namespace cc | 153 } // namespace cc |
OLD | NEW |