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

Side by Side Diff: cc/surfaces/direct_compositor_frame_sink_unittest.cc

Issue 2789143002: [cc] Test that CFSSupport forwards BeginFrameAcks in CompositorFrames. (Closed)
Patch Set: fix use after move Created 3 years, 8 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/surfaces/direct_compositor_frame_sink.h" 5 #include "cc/surfaces/direct_compositor_frame_sink.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "cc/output/renderer_settings.h" 10 #include "cc/output/renderer_settings.h"
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 EXPECT_EQ(1u, display_output_surface_->num_sent_frames()); 179 EXPECT_EQ(1u, display_output_surface_->num_sent_frames());
180 180
181 SwapBuffersWithDamage(gfx::Rect()); 181 SwapBuffersWithDamage(gfx::Rect());
182 EXPECT_EQ(1u, display_output_surface_->num_sent_frames()); 182 EXPECT_EQ(1u, display_output_surface_->num_sent_frames());
183 task_runner_->RunUntilIdle(); 183 task_runner_->RunUntilIdle();
184 EXPECT_EQ(1u, display_output_surface_->num_sent_frames()); 184 EXPECT_EQ(1u, display_output_surface_->num_sent_frames());
185 } 185 }
186 186
187 class TestBeginFrameObserver : public BeginFrameObserverBase { 187 class TestBeginFrameObserver : public BeginFrameObserverBase {
188 public: 188 public:
189 explicit TestBeginFrameObserver(BeginFrameSource* source) : source_(source) {}
190
191 void FinishFrame() { source_->DidFinishFrame(this, ack()); }
192
193 const BeginFrameAck& ack() const { return ack_; } 189 const BeginFrameAck& ack() const { return ack_; }
194 190
195 private: 191 private:
196 bool OnBeginFrameDerivedImpl(const BeginFrameArgs& args) override { 192 bool OnBeginFrameDerivedImpl(const BeginFrameArgs& args) override {
197 ack_ = BeginFrameAck(args.source_id, args.sequence_number, 193 ack_ = BeginFrameAck(args.source_id, args.sequence_number,
198 args.sequence_number, false); 194 args.sequence_number, false);
199 return true; 195 return true;
200 } 196 }
201 197
202 void OnBeginFrameSourcePausedChanged(bool paused) override{}; 198 void OnBeginFrameSourcePausedChanged(bool paused) override{};
203 199
204 BeginFrameSource* source_;
205 BeginFrameAck ack_; 200 BeginFrameAck ack_;
206 }; 201 };
207 202
208 TEST_F(DirectCompositorFrameSinkTest, AcknowledgesBeginFramesWithDamage) { 203 TEST_F(DirectCompositorFrameSinkTest, AcknowledgesBeginFramesWithDamage) {
209 // Verify that the frame sink acknowledged the BeginFrame attached to 204 // Verify that the frame sink acknowledged the BeginFrame attached to
210 // CompositorFrame submitted during SetUp(). 205 // CompositorFrame submitted during SetUp().
211 EXPECT_EQ(BeginFrameAck(0, 1, 1, true), begin_frame_source_->last_ack()); 206 EXPECT_EQ(BeginFrameAck(0, 1, 1, true), begin_frame_source_->last_ack());
212 } 207 }
213 208
214 TEST_F(DirectCompositorFrameSinkTest, AcknowledgesBeginFramesWithoutDamage) { 209 TEST_F(DirectCompositorFrameSinkTest, AcknowledgesBeginFramesWithoutDamage) {
215 // Request a BeginFrame from the CompositorFrameSinkClient. 210 // Request a BeginFrame from the CompositorFrameSinkClient.
216 TestBeginFrameObserver observer(begin_frame_source_.get()); 211 TestBeginFrameObserver observer;
217 compositor_frame_sink_client_.begin_frame_source()->AddObserver(&observer); 212 compositor_frame_sink_client_.begin_frame_source()->AddObserver(&observer);
218 task_runner_->RunUntilIdle(); 213 task_runner_->RunUntilIdle();
219 observer.FinishFrame(); 214 EXPECT_LE(BeginFrameArgs::kStartingFrameNumber,
215 observer.ack().sequence_number);
216 compositor_frame_sink_client_.begin_frame_source()->DidFinishFrame(
217 &observer, observer.ack());
220 compositor_frame_sink_client_.begin_frame_source()->RemoveObserver(&observer); 218 compositor_frame_sink_client_.begin_frame_source()->RemoveObserver(&observer);
221 219
222 // Verify that the frame sink acknowledged the last BeginFrame. 220 // Verify that the frame sink acknowledged the last BeginFrame.
223 EXPECT_EQ(observer.ack(), begin_frame_source_->last_ack()); 221 EXPECT_EQ(observer.ack(), begin_frame_source_->last_ack());
224 } 222 }
225 223
226 } // namespace 224 } // namespace
227 } // namespace cc 225 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698