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

Unified Diff: cc/surfaces/compositor_frame_sink_support_unittest.cc

Issue 2854163003: [cc] Plumb BeginFrameAcks through SurfaceManager to DisplayScheduler. (Closed)
Patch Set: fix clang compile error 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
« no previous file with comments | « cc/surfaces/compositor_frame_sink_support.cc ('k') | cc/surfaces/direct_compositor_frame_sink_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 62e2cbe653281674f233dbb289e90e092913f500..52da6a41c80580f8da4beec34db93b9d3abc149f 100644
--- a/cc/surfaces/compositor_frame_sink_support_unittest.cc
+++ b/cc/surfaces/compositor_frame_sink_support_unittest.cc
@@ -17,6 +17,7 @@
#include "cc/test/begin_frame_args_test.h"
#include "cc/test/compositor_frame_helpers.h"
#include "cc/test/fake_external_begin_frame_source.h"
+#include "cc/test/fake_surface_observer.h"
#include "cc/test/mock_compositor_frame_sink_support_client.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -90,8 +91,7 @@ class FakeCompositorFrameSinkSupportClient
DISALLOW_COPY_AND_ASSIGN(FakeCompositorFrameSinkSupportClient);
};
-class CompositorFrameSinkSupportTest : public testing::Test,
- public SurfaceObserver {
+class CompositorFrameSinkSupportTest : public testing::Test {
public:
CompositorFrameSinkSupportTest()
: support_(
@@ -101,30 +101,18 @@ 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);
+ manager_.AddObserver(&surface_observer_);
+ support_->SetBeginFrameSource(&begin_frame_source_);
}
~CompositorFrameSinkSupportTest() override {
- manager_.RemoveObserver(this);
+ manager_.RemoveObserver(&surface_observer_);
support_->EvictCurrentSurface();
}
- const SurfaceId& last_created_surface_id() const {
- return last_created_surface_id_;
- }
-
- // SurfaceObserver implementation.
- void OnSurfaceCreated(const SurfaceInfo& surface_info) override {
- last_created_surface_id_ = surface_info.id();
- last_surface_info_ = surface_info;
- }
- void OnSurfaceDamaged(const SurfaceId& id, bool* changed) override {
- *changed = true;
- }
- void OnSurfaceDiscarded(const SurfaceId& surface_id) override {}
-
void SubmitCompositorFrameWithResources(ResourceId* resource_ids,
size_t num_resource_ids) {
CompositorFrame frame = MakeCompositorFrame();
@@ -136,7 +124,8 @@ class CompositorFrameSinkSupportTest : public testing::Test,
frame.resource_list.push_back(resource);
}
support_->SubmitCompositorFrame(local_surface_id_, std::move(frame));
- EXPECT_EQ(last_created_surface_id_.local_surface_id(), local_surface_id_);
+ EXPECT_EQ(surface_observer_.last_created_surface_id().local_surface_id(),
+ local_surface_id_);
}
void UnrefResources(ResourceId* ids_to_unref,
@@ -179,9 +168,9 @@ 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_;
+ FakeSurfaceObserver surface_observer_;
// This is the sync token submitted with the frame. It should never be
// returned to the client.
@@ -526,7 +515,8 @@ TEST_F(CompositorFrameSinkSupportTest, EvictCurrentSurface) {
CompositorFrame frame = MakeCompositorFrame();
frame.resource_list.push_back(resource);
support->SubmitCompositorFrame(local_surface_id, std::move(frame));
- EXPECT_EQ(last_created_surface_id().local_surface_id(), local_surface_id);
+ EXPECT_EQ(surface_observer_.last_created_surface_id().local_surface_id(),
+ local_surface_id);
local_surface_id_ = LocalSurfaceId();
ReturnedResourceArray returned_resources = {resource.ToReturnedResource()};
@@ -553,7 +543,8 @@ TEST_F(CompositorFrameSinkSupportTest,
CompositorFrame frame = MakeCompositorFrame();
frame.resource_list.push_back(resource);
support->SubmitCompositorFrame(local_surface_id, std::move(frame));
- EXPECT_EQ(last_created_surface_id().local_surface_id(), local_surface_id);
+ EXPECT_EQ(surface_observer_.last_created_surface_id().local_surface_id(),
+ local_surface_id);
local_surface_id_ = LocalSurfaceId();
SurfaceId surface_id(kAnotherArbitraryFrameSinkId, local_surface_id);
@@ -587,7 +578,8 @@ TEST_F(CompositorFrameSinkSupportTest,
frame.resource_list.push_back(resource);
uint32_t execute_count = 0;
support->SubmitCompositorFrame(local_surface_id, std::move(frame));
- EXPECT_EQ(last_created_surface_id().local_surface_id(), local_surface_id);
+ EXPECT_EQ(surface_observer_.last_created_surface_id().local_surface_id(),
+ local_surface_id);
local_surface_id_ = LocalSurfaceId();
manager_.RegisterFrameSinkId(kYetAnotherArbitraryFrameSinkId);
@@ -677,7 +669,8 @@ TEST_F(CompositorFrameSinkSupportTest, DestroyCycle) {
frame.metadata.referenced_surfaces.push_back(
SurfaceId(support_->frame_sink_id(), local_surface_id_));
support2->SubmitCompositorFrame(local_surface_id2, std::move(frame));
- EXPECT_EQ(last_created_surface_id().local_surface_id(), local_surface_id2);
+ EXPECT_EQ(surface_observer_.last_created_surface_id().local_surface_id(),
+ local_surface_id2);
}
manager_.GetSurfaceForId(id2)->AddDestructionDependency(
SurfaceSequence(kAnotherArbitraryFrameSinkId, 4));
@@ -717,7 +710,8 @@ TEST_F(CompositorFrameSinkSupportTest, DuplicateCopyRequest) {
frame.metadata.referenced_surfaces.push_back(
SurfaceId(support_->frame_sink_id(), local_surface_id_));
support_->SubmitCompositorFrame(local_surface_id_, std::move(frame));
- EXPECT_EQ(last_created_surface_id().local_surface_id(), local_surface_id_);
+ EXPECT_EQ(surface_observer_.last_created_surface_id().local_surface_id(),
+ local_surface_id_);
}
bool called1 = false;
@@ -774,9 +768,10 @@ TEST_F(CompositorFrameSinkSupportTest, SurfaceInfo) {
support_->SubmitCompositorFrame(local_surface_id_, std::move(frame));
SurfaceId expected_surface_id(support_->frame_sink_id(), local_surface_id_);
- EXPECT_EQ(expected_surface_id, last_surface_info_.id());
- EXPECT_EQ(2.5f, last_surface_info_.device_scale_factor());
- EXPECT_EQ(gfx::Size(7, 8), last_surface_info_.size_in_pixels());
+ EXPECT_EQ(expected_surface_id, surface_observer_.last_surface_info().id());
+ EXPECT_EQ(2.5f, surface_observer_.last_surface_info().device_scale_factor());
+ EXPECT_EQ(gfx::Size(7, 8),
+ surface_observer_.last_surface_info().size_in_pixels());
}
// Check that if a CompositorFrame is received with size zero, we don't create
@@ -848,6 +843,36 @@ TEST_F(CompositorFrameSinkSupportTest, DeviceScaleFactorMismatch) {
EXPECT_FALSE(manager_.GetSurfaceForId(id));
}
+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, surface_observer_.last_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, surface_observer_.last_ack());
+
+ support_->SetNeedsBeginFrame(false);
+}
+
} // namespace
} // namespace test
« no previous file with comments | « cc/surfaces/compositor_frame_sink_support.cc ('k') | cc/surfaces/direct_compositor_frame_sink_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698