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

Side by Side Diff: cc/test/scheduler_test_common.cc

Issue 267783004: Refactoring the way begin frame sources inside scheduler work. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixing as per Brian's comments. Created 6 years, 3 months 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 | Annotate | Revision Log
OLDNEW
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
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 "SyntheticBeginFrameSource");
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)
43 : Scheduler(client, 136 : Scheduler(client,
44 scheduler_settings, 137 scheduler_settings,
45 layer_tree_host_id, 138 layer_tree_host_id,
46 test_task_runner), 139 test_task_runner,
140 TestSchedulerFrameSourcesConstructor(test_task_runner.get(),
141 now_src.get())),
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698