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

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

Issue 2888043004: [cc] Add and plumb CFS::DidNotProduceFrame. (Closed)
Patch Set: remove ExternalBFS::OnDidFinishFrame and related ack tracking. 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 {
89 begin_frame_source_->DidFinishFrame(this, ack);
90 }
91
92 void SetBeginFrameSource(cc::BeginFrameSource* source) { 93 void SetBeginFrameSource(cc::BeginFrameSource* source) {
93 if (begin_frame_source_ && observing_begin_frames_) { 94 if (begin_frame_source_ && observing_begin_frames_) {
94 begin_frame_source_->RemoveObserver(this); 95 begin_frame_source_->RemoveObserver(this);
95 observing_begin_frames_ = false; 96 observing_begin_frames_ = false;
96 } 97 }
97 begin_frame_source_ = source; 98 begin_frame_source_ = source;
98 UpdateNeedsBeginFramesInternal(); 99 UpdateNeedsBeginFramesInternal();
99 } 100 }
100 101
101 const cc::CompositorFrameMetadata& last_metadata() const { 102 const cc::CompositorFrameMetadata& last_metadata() const {
102 return last_frame_.metadata; 103 return last_frame_.metadata;
103 } 104 }
104 105
105 const cc::RenderPassList& last_render_pass_list() const { 106 const cc::RenderPassList& last_render_pass_list() const {
106 return last_frame_.render_pass_list; 107 return last_frame_.render_pass_list;
107 } 108 }
108 109
109 int number_frames_received() { return number_frames_received_; } 110 int number_frames_received() { return number_frames_received_; }
110 111
112 const cc::BeginFrameAck& last_begin_frame_ack() {
113 return last_begin_frame_ack_;
114 }
115
111 private: 116 private:
112 void UpdateNeedsBeginFramesInternal() { 117 void UpdateNeedsBeginFramesInternal() {
113 if (!begin_frame_source_) 118 if (!begin_frame_source_)
114 return; 119 return;
115 120
116 if (needs_begin_frames_ == observing_begin_frames_) 121 if (needs_begin_frames_ == observing_begin_frames_)
117 return; 122 return;
118 123
119 observing_begin_frames_ = needs_begin_frames_; 124 observing_begin_frames_ = needs_begin_frames_;
120 if (needs_begin_frames_) { 125 if (needs_begin_frames_) {
121 begin_frame_source_->AddObserver(this); 126 begin_frame_source_->AddObserver(this);
122 } else { 127 } else {
123 begin_frame_source_->RemoveObserver(this); 128 begin_frame_source_->RemoveObserver(this);
124 } 129 }
125 } 130 }
126 131
127 int number_frames_received_ = 0; 132 int number_frames_received_ = 0;
128 std::unique_ptr<cc::ExternalBeginFrameSource> external_begin_frame_source_; 133 std::unique_ptr<cc::ExternalBeginFrameSource> external_begin_frame_source_;
129 cc::BeginFrameSource* begin_frame_source_ = nullptr; 134 cc::BeginFrameSource* begin_frame_source_ = nullptr;
130 cc::BeginFrameArgs last_begin_frame_args_; 135 cc::BeginFrameArgs last_begin_frame_args_;
131 bool observing_begin_frames_ = false; 136 bool observing_begin_frames_ = false;
132 bool needs_begin_frames_ = false; 137 bool needs_begin_frames_ = false;
133 cc::CompositorFrame last_frame_; 138 cc::CompositorFrame last_frame_;
139 cc::BeginFrameAck last_begin_frame_ack_;
134 140
135 DISALLOW_COPY_AND_ASSIGN(FakeCompositorFrameSink); 141 DISALLOW_COPY_AND_ASSIGN(FakeCompositorFrameSink);
136 }; 142 };
137 143
138 class FrameGeneratorTest : public testing::Test { 144 class FrameGeneratorTest : public testing::Test {
139 public: 145 public:
140 FrameGeneratorTest() {} 146 FrameGeneratorTest() {}
141 ~FrameGeneratorTest() override {} 147 ~FrameGeneratorTest() override {}
142 148
143 // testing::Test overrides: 149 // testing::Test overrides:
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 193
188 const cc::CompositorFrameMetadata& LastMetadata() const { 194 const cc::CompositorFrameMetadata& LastMetadata() const {
189 return compositor_frame_sink_->last_metadata(); 195 return compositor_frame_sink_->last_metadata();
190 } 196 }
191 197
192 const cc::RenderPassList& LastRenderPassList() const { 198 const cc::RenderPassList& LastRenderPassList() const {
193 return compositor_frame_sink_->last_render_pass_list(); 199 return compositor_frame_sink_->last_render_pass_list();
194 } 200 }
195 201
196 const cc::BeginFrameAck& LastBeginFrameAck() { 202 const cc::BeginFrameAck& LastBeginFrameAck() {
197 return begin_frame_source_->LastAckForObserver(compositor_frame_sink_); 203 return compositor_frame_sink_->last_begin_frame_ack();
198 } 204 }
199 205
200 private: 206 private:
201 FakeCompositorFrameSink* compositor_frame_sink_ = nullptr; 207 FakeCompositorFrameSink* compositor_frame_sink_ = nullptr;
202 std::unique_ptr<cc::FakeExternalBeginFrameSource> begin_frame_source_; 208 std::unique_ptr<cc::FakeExternalBeginFrameSource> begin_frame_source_;
203 std::unique_ptr<TestServerWindowDelegate> server_window_delegate_; 209 std::unique_ptr<TestServerWindowDelegate> server_window_delegate_;
204 std::unique_ptr<FrameGenerator> frame_generator_; 210 std::unique_ptr<FrameGenerator> frame_generator_;
205 int next_sequence_number_ = 1; 211 int next_sequence_number_ = 1;
206 212
207 DISALLOW_COPY_AND_ASSIGN(FrameGeneratorTest); 213 DISALLOW_COPY_AND_ASSIGN(FrameGeneratorTest);
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 InitWithSurfaceInfo(); 349 InitWithSurfaceInfo();
344 350
345 frame_generator()->OnWindowDamaged(); 351 frame_generator()->OnWindowDamaged();
346 IssueBeginFrame(); 352 IssueBeginFrame();
347 EXPECT_EQ(2, NumberOfFramesReceived()); 353 EXPECT_EQ(2, NumberOfFramesReceived());
348 } 354 }
349 355
350 } // namespace test 356 } // namespace test
351 } // namespace ws 357 } // namespace ws
352 } // namespace ui 358 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698