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 #ifndef CC_TEST_SCHEDULER_TEST_COMMON_H_ | 5 #ifndef CC_TEST_SCHEDULER_TEST_COMMON_H_ |
6 #define CC_TEST_SCHEDULER_TEST_COMMON_H_ | 6 #define CC_TEST_SCHEDULER_TEST_COMMON_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 return make_scoped_ptr( | 126 return make_scoped_ptr( |
127 new TestSyntheticBeginFrameSource(TestDelayBasedTimeSource::Create( | 127 new TestSyntheticBeginFrameSource(TestDelayBasedTimeSource::Create( |
128 now_src, initial_interval, task_runner))); | 128 now_src, initial_interval, task_runner))); |
129 } | 129 } |
130 | 130 |
131 protected: | 131 protected: |
132 TestSyntheticBeginFrameSource( | 132 TestSyntheticBeginFrameSource( |
133 scoped_refptr<DelayBasedTimeSource> time_source); | 133 scoped_refptr<DelayBasedTimeSource> time_source); |
134 }; | 134 }; |
135 | 135 |
136 class TestScheduler; | |
137 class TestSchedulerFrameSourcesConstructor | |
138 : public SchedulerFrameSourcesConstructor { | |
139 public: | |
140 ~TestSchedulerFrameSourcesConstructor() override; | |
141 | |
142 protected: | |
143 BeginFrameSource* ConstructPrimaryFrameSource(Scheduler* scheduler) override; | |
144 BeginFrameSource* ConstructUnthrottledFrameSource( | |
145 Scheduler* scheduler) override; | |
146 | |
147 OrderedSimpleTaskRunner* test_task_runner_; | |
148 // Not owned. | |
149 base::SimpleTestTickClock* now_src_; | |
150 | |
151 protected: | |
152 explicit TestSchedulerFrameSourcesConstructor( | |
153 OrderedSimpleTaskRunner* test_task_runner, | |
154 base::SimpleTestTickClock* now_src); | |
155 friend class TestScheduler; | |
156 }; | |
157 | |
158 class TestScheduler : public Scheduler { | 136 class TestScheduler : public Scheduler { |
159 public: | 137 public: |
160 static scoped_ptr<TestScheduler> Create( | 138 static scoped_ptr<TestScheduler> Create( |
161 base::SimpleTestTickClock* now_src, | 139 base::SimpleTestTickClock* now_src, |
162 SchedulerClient* client, | 140 SchedulerClient* client, |
163 const SchedulerSettings& scheduler_settings, | 141 const SchedulerSettings& scheduler_settings, |
164 int layer_tree_host_id, | 142 int layer_tree_host_id, |
165 const scoped_refptr<OrderedSimpleTaskRunner>& task_runner, | 143 OrderedSimpleTaskRunner* task_runner, |
166 scoped_ptr<BeginFrameSource> external_begin_frame_source) { | 144 BeginFrameSource* external_frame_source); |
167 TestSchedulerFrameSourcesConstructor frame_sources_constructor( | |
168 task_runner.get(), now_src); | |
169 return make_scoped_ptr(new TestScheduler( | |
170 now_src, | |
171 client, | |
172 scheduler_settings, | |
173 layer_tree_host_id, | |
174 task_runner, | |
175 &frame_sources_constructor, | |
176 external_begin_frame_source.Pass())); | |
177 } | |
178 | 145 |
179 // Extra test helper functionality | 146 // Extra test helper functionality |
180 bool IsBeginRetroFrameArgsEmpty() const { | 147 bool IsBeginRetroFrameArgsEmpty() const { |
181 return begin_retro_frame_args_.empty(); | 148 return begin_retro_frame_args_.empty(); |
182 } | 149 } |
183 | 150 |
184 bool CanStart() const { return state_machine_.CanStartForTesting(); } | 151 bool CanStart() const { return state_machine_.CanStartForTesting(); } |
185 | 152 |
186 BeginFrameSource& frame_source() { return *frame_source_; } | 153 BeginFrameSource& frame_source() { return *frame_source_; } |
187 bool FrameProductionThrottled() { return throttle_frame_production_; } | 154 bool FrameProductionThrottled() { return throttle_frame_production_; } |
188 | 155 |
189 ~TestScheduler() override; | 156 ~TestScheduler() override; |
190 | 157 |
191 void NotifyReadyToCommitThenActivateIfNeeded() { | 158 void NotifyReadyToCommitThenActivateIfNeeded() { |
192 NotifyReadyToCommit(); | 159 NotifyReadyToCommit(); |
193 if (settings_.impl_side_painting) { | 160 if (settings_.impl_side_painting) { |
194 NotifyReadyToActivate(); | 161 NotifyReadyToActivate(); |
195 } | 162 } |
196 } | 163 } |
197 | 164 |
198 base::TimeDelta BeginImplFrameInterval() { | 165 base::TimeDelta BeginImplFrameInterval() { |
199 return begin_impl_frame_tracker_.Interval(); | 166 return begin_impl_frame_tracker_.Interval(); |
200 } | 167 } |
201 | 168 |
202 protected: | 169 protected: |
203 // Overridden from Scheduler. | 170 // Overridden from Scheduler. |
204 base::TimeTicks Now() const override; | 171 base::TimeTicks Now() const override; |
205 | 172 |
206 private: | 173 private: |
207 TestScheduler(base::SimpleTestTickClock* now_src, | 174 TestScheduler( |
208 SchedulerClient* client, | 175 base::SimpleTestTickClock* now_src, |
209 const SchedulerSettings& scheduler_settings, | 176 SchedulerClient* client, |
210 int layer_tree_host_id, | 177 const SchedulerSettings& scheduler_settings, |
211 const scoped_refptr<OrderedSimpleTaskRunner>& test_task_runner, | 178 int layer_tree_host_id, |
212 TestSchedulerFrameSourcesConstructor* frame_sources_constructor, | 179 OrderedSimpleTaskRunner* task_runner, |
213 scoped_ptr<BeginFrameSource> external_begin_frame_source); | 180 BeginFrameSource* external_frame_source, |
| 181 scoped_ptr<TestSyntheticBeginFrameSource> synthetic_frame_source, |
| 182 scoped_ptr<TestBackToBackBeginFrameSource> unthrottled_frame_source); |
214 | 183 |
215 // Not owned. | 184 // Not owned. |
216 base::SimpleTestTickClock* now_src_; | 185 base::SimpleTestTickClock* now_src_; |
217 }; | 186 }; |
218 | 187 |
219 } // namespace cc | 188 } // namespace cc |
220 | 189 |
221 #endif // CC_TEST_SCHEDULER_TEST_COMMON_H_ | 190 #endif // CC_TEST_SCHEDULER_TEST_COMMON_H_ |
OLD | NEW |