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

Side by Side Diff: services/ui/ws/frame_generator_unittest.cc

Issue 2888043004: [cc] Add and plumb CFS::DidNotProduceFrame. (Closed)
Patch Set: Created 3 years, 7 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
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 "services/ui/ws/frame_generator.h" 5 #include "services/ui/ws/frame_generator.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "cc/output/compositor_frame_sink.h" 8 #include "cc/output/compositor_frame_sink.h"
9 #include "cc/scheduler/begin_frame_source.h" 9 #include "cc/scheduler/begin_frame_source.h"
10 #include "cc/test/begin_frame_args_test.h" 10 #include "cc/test/begin_frame_args_test.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 return true; 58 return true;
59 } 59 }
60 60
61 void DetachFromClient() override { 61 void DetachFromClient() override {
62 cc::CompositorFrameSink::DetachFromClient(); 62 cc::CompositorFrameSink::DetachFromClient();
63 } 63 }
64 64
65 void SubmitCompositorFrame(cc::CompositorFrame frame) override { 65 void SubmitCompositorFrame(cc::CompositorFrame frame) override {
66 ++number_frames_received_; 66 ++number_frames_received_;
67 last_frame_ = std::move(frame); 67 last_frame_ = std::move(frame);
68 last_begin_frame_ack_ = last_frame_.metadata.begin_frame_ack;
69 }
70
71 void BeginFrameDidNotProduceFrame(const cc::BeginFrameAck& ack) override {
72 last_begin_frame_ack_ = ack;
68 } 73 }
69 74
70 // cc::BeginFrameObserver implementation. 75 // cc::BeginFrameObserver implementation.
71 void OnBeginFrame(const cc::BeginFrameArgs& args) override { 76 void OnBeginFrame(const cc::BeginFrameArgs& args) override {
72 external_begin_frame_source_->OnBeginFrame(args); 77 external_begin_frame_source_->OnBeginFrame(args);
73 last_begin_frame_args_ = args; 78 last_begin_frame_args_ = args;
74 } 79 }
75 80
76 const cc::BeginFrameArgs& LastUsedBeginFrameArgs() const override { 81 const cc::BeginFrameArgs& LastUsedBeginFrameArgs() const override {
77 return last_begin_frame_args_; 82 return last_begin_frame_args_;
78 } 83 }
79 84
80 void OnBeginFrameSourcePausedChanged(bool paused) override {} 85 void OnBeginFrameSourcePausedChanged(bool paused) override {}
81 86
82 // cc::ExternalBeginFrameSourceClient implementation: 87 // cc::ExternalBeginFrameSourceClient implementation:
83 void OnNeedsBeginFrames(bool needs_begin_frames) override { 88 void OnNeedsBeginFrames(bool needs_begin_frames) override {
84 needs_begin_frames_ = needs_begin_frames; 89 needs_begin_frames_ = needs_begin_frames;
85 UpdateNeedsBeginFramesInternal(); 90 UpdateNeedsBeginFramesInternal();
86 } 91 }
87 92
88 void OnDidFinishFrame(const cc::BeginFrameAck& ack) override { 93 void OnDidFinishFrame(const cc::BeginFrameAck& ack) override {}
89 begin_frame_source_->DidFinishFrame(this, ack);
90 }
91 94
92 void SetBeginFrameSource(cc::BeginFrameSource* source) { 95 void SetBeginFrameSource(cc::BeginFrameSource* source) {
93 if (begin_frame_source_ && observing_begin_frames_) { 96 if (begin_frame_source_ && observing_begin_frames_) {
94 begin_frame_source_->RemoveObserver(this); 97 begin_frame_source_->RemoveObserver(this);
95 observing_begin_frames_ = false; 98 observing_begin_frames_ = false;
96 } 99 }
97 begin_frame_source_ = source; 100 begin_frame_source_ = source;
98 UpdateNeedsBeginFramesInternal(); 101 UpdateNeedsBeginFramesInternal();
99 } 102 }
100 103
101 const cc::CompositorFrameMetadata& last_metadata() const { 104 const cc::CompositorFrameMetadata& last_metadata() const {
102 return last_frame_.metadata; 105 return last_frame_.metadata;
103 } 106 }
104 107
105 const cc::RenderPassList& last_render_pass_list() const { 108 const cc::RenderPassList& last_render_pass_list() const {
106 return last_frame_.render_pass_list; 109 return last_frame_.render_pass_list;
107 } 110 }
108 111
109 int number_frames_received() { return number_frames_received_; } 112 int number_frames_received() { return number_frames_received_; }
110 113
114 const cc::BeginFrameAck& last_begin_frame_ack() {
sunnyps 2017/05/22 07:17:12 nit: const method
Eric Seckler 2017/05/22 11:29:58 Done.
115 return last_begin_frame_ack_;
116 }
117
111 private: 118 private:
112 void UpdateNeedsBeginFramesInternal() { 119 void UpdateNeedsBeginFramesInternal() {
113 if (!begin_frame_source_) 120 if (!begin_frame_source_)
114 return; 121 return;
115 122
116 if (needs_begin_frames_ == observing_begin_frames_) 123 if (needs_begin_frames_ == observing_begin_frames_)
117 return; 124 return;
118 125
119 observing_begin_frames_ = needs_begin_frames_; 126 observing_begin_frames_ = needs_begin_frames_;
120 if (needs_begin_frames_) { 127 if (needs_begin_frames_) {
121 begin_frame_source_->AddObserver(this); 128 begin_frame_source_->AddObserver(this);
122 } else { 129 } else {
123 begin_frame_source_->RemoveObserver(this); 130 begin_frame_source_->RemoveObserver(this);
124 } 131 }
125 } 132 }
126 133
127 int number_frames_received_ = 0; 134 int number_frames_received_ = 0;
128 std::unique_ptr<cc::ExternalBeginFrameSource> external_begin_frame_source_; 135 std::unique_ptr<cc::ExternalBeginFrameSource> external_begin_frame_source_;
129 cc::BeginFrameSource* begin_frame_source_ = nullptr; 136 cc::BeginFrameSource* begin_frame_source_ = nullptr;
130 cc::BeginFrameArgs last_begin_frame_args_; 137 cc::BeginFrameArgs last_begin_frame_args_;
131 bool observing_begin_frames_ = false; 138 bool observing_begin_frames_ = false;
132 bool needs_begin_frames_ = false; 139 bool needs_begin_frames_ = false;
133 cc::CompositorFrame last_frame_; 140 cc::CompositorFrame last_frame_;
141 cc::BeginFrameAck last_begin_frame_ack_;
134 142
135 DISALLOW_COPY_AND_ASSIGN(FakeCompositorFrameSink); 143 DISALLOW_COPY_AND_ASSIGN(FakeCompositorFrameSink);
136 }; 144 };
137 145
138 class FrameGeneratorTest : public testing::Test { 146 class FrameGeneratorTest : public testing::Test {
139 public: 147 public:
140 FrameGeneratorTest() {} 148 FrameGeneratorTest() {}
141 ~FrameGeneratorTest() override {} 149 ~FrameGeneratorTest() override {}
142 150
143 // testing::Test overrides: 151 // testing::Test overrides:
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 195
188 const cc::CompositorFrameMetadata& LastMetadata() const { 196 const cc::CompositorFrameMetadata& LastMetadata() const {
189 return compositor_frame_sink_->last_metadata(); 197 return compositor_frame_sink_->last_metadata();
190 } 198 }
191 199
192 const cc::RenderPassList& LastRenderPassList() const { 200 const cc::RenderPassList& LastRenderPassList() const {
193 return compositor_frame_sink_->last_render_pass_list(); 201 return compositor_frame_sink_->last_render_pass_list();
194 } 202 }
195 203
196 const cc::BeginFrameAck& LastBeginFrameAck() { 204 const cc::BeginFrameAck& LastBeginFrameAck() {
197 return begin_frame_source_->LastAckForObserver(compositor_frame_sink_); 205 return compositor_frame_sink_->last_begin_frame_ack();
198 } 206 }
199 207
200 private: 208 private:
201 FakeCompositorFrameSink* compositor_frame_sink_ = nullptr; 209 FakeCompositorFrameSink* compositor_frame_sink_ = nullptr;
202 std::unique_ptr<cc::FakeExternalBeginFrameSource> begin_frame_source_; 210 std::unique_ptr<cc::FakeExternalBeginFrameSource> begin_frame_source_;
203 std::unique_ptr<TestServerWindowDelegate> server_window_delegate_; 211 std::unique_ptr<TestServerWindowDelegate> server_window_delegate_;
204 std::unique_ptr<FrameGenerator> frame_generator_; 212 std::unique_ptr<FrameGenerator> frame_generator_;
205 int next_sequence_number_ = 1; 213 int next_sequence_number_ = 1;
206 214
207 DISALLOW_COPY_AND_ASSIGN(FrameGeneratorTest); 215 DISALLOW_COPY_AND_ASSIGN(FrameGeneratorTest);
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 InitWithSurfaceInfo(); 351 InitWithSurfaceInfo();
344 352
345 frame_generator()->OnWindowDamaged(); 353 frame_generator()->OnWindowDamaged();
346 IssueBeginFrame(); 354 IssueBeginFrame();
347 EXPECT_EQ(2, NumberOfFramesReceived()); 355 EXPECT_EQ(2, NumberOfFramesReceived());
348 } 356 }
349 357
350 } // namespace test 358 } // namespace test
351 } // namespace ws 359 } // namespace ws
352 } // namespace ui 360 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698