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

Unified Diff: cc/surfaces/compositor_frame_sink_support_unittest.cc

Issue 2854163003: [cc] Plumb BeginFrameAcks through SurfaceManager to DisplayScheduler. (Closed)
Patch Set: Pass ack via SurfaceDamaged, add back tests. 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698