| Index: cc/surfaces/compositor_frame_sink_support_unittest.cc
|
| diff --git a/cc/surfaces/compositor_frame_sink_support_unittest.cc b/cc/surfaces/compositor_frame_sink_support_unittest.cc
|
| index b16d8fa28ac77703ea9393b46336dc8264200033..c3e0b166df4736a5aca99a1a16e9bb101d27c62f 100644
|
| --- a/cc/surfaces/compositor_frame_sink_support_unittest.cc
|
| +++ b/cc/surfaces/compositor_frame_sink_support_unittest.cc
|
| @@ -101,10 +101,12 @@ class CompositorFrameSinkSupportTest : public testing::Test,
|
| kIsRoot,
|
| kHandlesFrameSinkIdInvalidation,
|
| kNeedsSyncPoints)),
|
| + begin_frame_source_(0.f, false),
|
| local_surface_id_(3, kArbitraryToken),
|
| frame_sync_token_(GenTestSyncToken(4)),
|
| consumer_sync_token_(GenTestSyncToken(5)) {
|
| manager_.AddObserver(this);
|
| + support_->SetBeginFrameSource(&begin_frame_source_);
|
| }
|
| ~CompositorFrameSinkSupportTest() override {
|
| manager_.RemoveObserver(this);
|
| @@ -120,10 +122,16 @@ class CompositorFrameSinkSupportTest : public testing::Test,
|
| last_created_surface_id_ = surface_info.id();
|
| last_surface_info_ = surface_info;
|
| }
|
| - void OnSurfaceDamaged(const SurfaceId& id, bool* changed) override {
|
| + void OnSurfaceDamaged(const SurfaceId& id,
|
| + const BeginFrameAck& ack,
|
| + bool* changed) override {
|
| + last_begin_frame_ack_ = ack;
|
| *changed = true;
|
| }
|
| void OnSurfaceDiscarded(const SurfaceId& surface_id) override {}
|
| + void OnSurfaceDestroyed(const SurfaceId& surface_id) override {}
|
| + void OnSurfaceDamageExpected(const SurfaceId& surface_id,
|
| + const BeginFrameArgs& args) override {}
|
|
|
| void SubmitCompositorFrameWithResources(ResourceId* resource_ids,
|
| size_t num_resource_ids) {
|
| @@ -179,9 +187,11 @@ class CompositorFrameSinkSupportTest : public testing::Test,
|
| SurfaceManager manager_;
|
| FakeCompositorFrameSinkSupportClient fake_support_client_;
|
| std::unique_ptr<CompositorFrameSinkSupport> support_;
|
| + FakeExternalBeginFrameSource begin_frame_source_;
|
| LocalSurfaceId local_surface_id_;
|
| SurfaceId last_created_surface_id_;
|
| SurfaceInfo last_surface_info_;
|
| + BeginFrameAck last_begin_frame_ack_;
|
|
|
| // This is the sync token submitted with the frame. It should never be
|
| // returned to the client.
|
| @@ -779,6 +789,36 @@ TEST_F(CompositorFrameSinkSupportTest, SurfaceInfo) {
|
| EXPECT_EQ(gfx::Size(7, 8), last_surface_info_.size_in_pixels());
|
| }
|
|
|
| +TEST_F(CompositorFrameSinkSupportTest, PassesOnBeginFrameAcks) {
|
| + // Request BeginFrames.
|
| + support_->SetNeedsBeginFrame(true);
|
| +
|
| + // Issue a BeginFrame.
|
| + BeginFrameArgs args =
|
| + CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 1);
|
| + begin_frame_source_.TestOnBeginFrame(args);
|
| +
|
| + // Check that the support and SurfaceManager forward the BeginFrameAck
|
| + // attached to a CompositorFrame to the SurfaceObserver.
|
| + BeginFrameAck ack(0, 1, 1, true);
|
| + CompositorFrame frame = MakeCompositorFrame();
|
| + frame.metadata.begin_frame_ack = ack;
|
| + support_->SubmitCompositorFrame(local_surface_id_, std::move(frame));
|
| + EXPECT_EQ(ack, last_begin_frame_ack_);
|
| +
|
| + // Issue another BeginFrame.
|
| + args = CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2);
|
| + begin_frame_source_.TestOnBeginFrame(args);
|
| +
|
| + // Check that the support and SurfaceManager forward a DidNotProduceFrame ack
|
| + // to the SurfaceObserver.
|
| + BeginFrameAck ack2(0, 2, 2, false);
|
| + support_->DidNotProduceFrame(ack2);
|
| + EXPECT_EQ(ack2, last_begin_frame_ack_);
|
| +
|
| + support_->SetNeedsBeginFrame(false);
|
| +}
|
| +
|
| } // namespace
|
|
|
| } // namespace test
|
|
|