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 void FakeBeginFrameSource::DidFinishFrame(size_t remaining_frames) { |
| 38 remaining_frames_ = remaining_frames; |
| 39 } |
| 40 void FakeBeginFrameSource::AsValueInto(base::debug::TracedValue* dict) const { |
| 41 dict->SetString("type", "FakeBeginFrameSource"); |
| 42 BeginFrameSourceMixIn::AsValueInto(dict); |
| 43 } |
| 44 |
| 45 TestBackToBackBeginFrameSource::TestBackToBackBeginFrameSource( |
| 46 scoped_refptr<TestNowSource> now_src, |
| 47 base::SingleThreadTaskRunner* task_runner) |
| 48 : BackToBackBeginFrameSource(task_runner), now_src_(now_src) { |
| 49 } |
| 50 |
| 51 TestBackToBackBeginFrameSource::~TestBackToBackBeginFrameSource() { |
| 52 } |
| 53 |
| 54 base::TimeTicks TestBackToBackBeginFrameSource::Now() { |
| 55 return now_src_->Now(); |
| 56 } |
| 57 |
| 58 TestSyntheticBeginFrameSource::TestSyntheticBeginFrameSource( |
| 59 scoped_refptr<DelayBasedTimeSource> time_source) |
| 60 : SyntheticBeginFrameSource(time_source) { |
| 61 } |
| 62 |
| 63 TestSyntheticBeginFrameSource::~TestSyntheticBeginFrameSource() { |
| 64 } |
| 65 |
| 66 TestSchedulerFrameSourcesConstructor::TestSchedulerFrameSourcesConstructor( |
| 67 OrderedSimpleTaskRunner* test_task_runner, |
| 68 TestNowSource* now_src) |
| 69 : test_task_runner_(test_task_runner), now_src_(now_src) { |
| 70 } |
| 71 TestSchedulerFrameSourcesConstructor::~TestSchedulerFrameSourcesConstructor() { |
| 72 } |
| 73 |
| 74 BeginFrameSource* |
| 75 TestSchedulerFrameSourcesConstructor::ConstructPrimaryFrameSource( |
| 76 Scheduler* scheduler) { |
| 77 if (!scheduler->settings_.throttle_frame_production) { |
| 78 TRACE_EVENT1( |
| 79 "cc", |
| 80 "TestSchedulerFrameSourcesConstructor::ConstructPrimaryFrameSource", |
| 81 "source", |
| 82 "TestBackToBackBeginFrameSource"); |
| 83 DCHECK(!scheduler->primary_frame_source_internal_); |
| 84 scheduler->primary_frame_source_internal_ = |
| 85 TestBackToBackBeginFrameSource::Create(now_src_, test_task_runner_); |
| 86 return scheduler->primary_frame_source_internal_.get(); |
| 87 } else if (scheduler->settings_.begin_frame_scheduling_enabled) { |
| 88 return SchedulerFrameSourcesConstructor::ConstructPrimaryFrameSource( |
| 89 scheduler); |
| 90 } else { |
| 91 TRACE_EVENT1( |
| 92 "cc", |
| 93 "TestSchedulerFrameSourcesConstructor::ConstructPrimaryFrameSource", |
| 94 "source", |
| 95 "TestSyntheticBeginFrameSource"); |
| 96 scoped_ptr<TestSyntheticBeginFrameSource> synthetic_source = |
| 97 TestSyntheticBeginFrameSource::Create( |
| 98 now_src_, test_task_runner_, BeginFrameArgs::DefaultInterval()); |
| 99 |
| 100 DCHECK(!scheduler->vsync_observer_); |
| 101 scheduler->vsync_observer_ = synthetic_source.get(); |
| 102 |
| 103 DCHECK(!scheduler->primary_frame_source_internal_); |
| 104 scheduler->primary_frame_source_internal_ = synthetic_source.Pass(); |
| 105 return scheduler->primary_frame_source_internal_.get(); |
| 106 } |
| 107 } |
| 108 |
| 109 BeginFrameSource* |
| 110 TestSchedulerFrameSourcesConstructor::ConstructBackgroundFrameSource( |
| 111 Scheduler* scheduler) { |
| 112 TRACE_EVENT1( |
| 113 "cc", |
| 114 "TestSchedulerFrameSourcesConstructor::ConstructBackgroundFrameSource", |
| 115 "source", |
| 116 "TestSyntheticBeginFrameSource"); |
| 117 DCHECK(!(scheduler->background_frame_source_internal_)); |
| 118 scheduler->background_frame_source_internal_ = |
| 119 TestSyntheticBeginFrameSource::Create( |
| 120 now_src_, test_task_runner_, base::TimeDelta::FromSeconds(1)); |
| 121 return scheduler->background_frame_source_internal_.get(); |
| 122 } |
| 123 |
37 TestScheduler::TestScheduler( | 124 TestScheduler::TestScheduler( |
38 scoped_refptr<TestNowSource> now_src, | 125 scoped_refptr<TestNowSource> now_src, |
39 SchedulerClient* client, | 126 SchedulerClient* client, |
40 const SchedulerSettings& scheduler_settings, | 127 const SchedulerSettings& scheduler_settings, |
41 int layer_tree_host_id, | 128 int layer_tree_host_id, |
42 const scoped_refptr<OrderedSimpleTaskRunner>& test_task_runner) | 129 const scoped_refptr<OrderedSimpleTaskRunner>& test_task_runner, |
| 130 TestSchedulerFrameSourcesConstructor* frame_sources_constructor) |
43 : Scheduler(client, | 131 : Scheduler(client, |
44 scheduler_settings, | 132 scheduler_settings, |
45 layer_tree_host_id, | 133 layer_tree_host_id, |
46 test_task_runner), | 134 test_task_runner, |
| 135 frame_sources_constructor), |
47 now_src_(now_src), | 136 now_src_(now_src), |
48 test_task_runner_(test_task_runner.get()) { | 137 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 } | 138 } |
57 | 139 |
58 base::TimeTicks TestScheduler::Now() const { | 140 base::TimeTicks TestScheduler::Now() const { |
59 return now_src_->Now(); | 141 return now_src_->Now(); |
60 } | 142 } |
61 | 143 |
62 TestScheduler::~TestScheduler() { | 144 TestScheduler::~TestScheduler() { |
63 } | 145 } |
64 | 146 |
65 } // namespace cc | 147 } // namespace cc |
OLD | NEW |