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

Unified Diff: cc/surfaces/surface_synchronization_unittest.cc

Issue 2802023002: Remove SurfaceFactory And SurfaceFactoryClient (Closed)
Patch Set: Rebase SurfaceSynchronizationTest 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/surface_resource_holder.cc ('k') | cc/test/compositor_frame_helpers.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/surfaces/surface_synchronization_unittest.cc
diff --git a/cc/surfaces/compositor_frame_sink_support_unittest.cc b/cc/surfaces/surface_synchronization_unittest.cc
similarity index 85%
copy from cc/surfaces/compositor_frame_sink_support_unittest.cc
copy to cc/surfaces/surface_synchronization_unittest.cc
index 7451f8cb5d7c68e4c5dbdf52f8848ab3f38738ad..8c2148682c945b097de4f07abdd5e96f181f0a85 100644
--- a/cc/surfaces/compositor_frame_sink_support_unittest.cc
+++ b/cc/surfaces/surface_synchronization_unittest.cc
@@ -3,68 +3,35 @@
// found in the LICENSE file.
#include "cc/surfaces/compositor_frame_sink_support.h"
-
-#include "base/macros.h"
-#include "cc/output/compositor_frame.h"
-#include "cc/surfaces/compositor_frame_sink_support_client.h"
-#include "cc/surfaces/frame_sink_id.h"
#include "cc/surfaces/surface_id.h"
#include "cc/surfaces/surface_manager.h"
+#include "cc/surfaces/surface_observer.h"
#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/mock_compositor_frame_sink_support_client.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
-using testing::UnorderedElementsAre;
-using testing::IsEmpty;
-using testing::SizeIs;
-using testing::Invoke;
using testing::_;
using testing::Eq;
+using testing::IsEmpty;
+using testing::UnorderedElementsAre;
namespace cc {
+namespace test {
namespace {
+constexpr bool kIsRoot = true;
+constexpr bool kIsChildRoot = false;
+constexpr bool kHandlesFrameSinkIdInvalidation = true;
+constexpr bool kNeedsSyncPoints = true;
constexpr FrameSinkId kDisplayFrameSink(2, 0);
constexpr FrameSinkId kParentFrameSink(3, 0);
constexpr FrameSinkId kChildFrameSink1(65563, 0);
constexpr FrameSinkId kChildFrameSink2(65564, 0);
constexpr FrameSinkId kArbitraryFrameSink(1337, 7331);
-class MockCompositorFrameSinkSupportClient
- : public CompositorFrameSinkSupportClient {
- public:
- MockCompositorFrameSinkSupportClient() {
- ON_CALL(*this, ReclaimResources(_))
- .WillByDefault(Invoke(
- this,
- &MockCompositorFrameSinkSupportClient::ReclaimResourcesInternal));
- ON_CALL(*this, DidReceiveCompositorFrameAck(_))
- .WillByDefault(Invoke(
- this,
- &MockCompositorFrameSinkSupportClient::ReclaimResourcesInternal));
- }
-
- ReturnedResourceArray& last_returned_resources() {
- return last_returned_resources_;
- }
-
- // CompositorFrameSinkSupportClient implementation.
- MOCK_METHOD1(DidReceiveCompositorFrameAck,
- void(const ReturnedResourceArray&));
- MOCK_METHOD1(OnBeginFrame, void(const BeginFrameArgs&));
- MOCK_METHOD1(ReclaimResources, void(const ReturnedResourceArray&));
- MOCK_METHOD2(WillDrawSurface, void(const LocalSurfaceId&, const gfx::Rect&));
-
- private:
- void ReclaimResourcesInternal(const ReturnedResourceArray& resources) {
- last_returned_resources_ = resources;
- }
-
- ReturnedResourceArray last_returned_resources_;
-};
-
std::vector<SurfaceId> empty_surface_ids() {
return std::vector<SurfaceId>();
}
@@ -75,66 +42,14 @@ SurfaceId MakeSurfaceId(const FrameSinkId& frame_sink_id, uint32_t local_id) {
LocalSurfaceId(local_id, base::UnguessableToken::Deserialize(0, 1u)));
}
-CompositorFrame MakeCompositorFrame(
- std::vector<SurfaceId> activation_dependencies,
- std::vector<SurfaceId> referenced_surfaces,
- TransferableResourceArray resource_list) {
- CompositorFrame compositor_frame = test::MakeCompositorFrame();
- compositor_frame.metadata.begin_frame_ack = BeginFrameAck(0, 1, 1, true);
- compositor_frame.metadata.activation_dependencies =
- std::move(activation_dependencies);
- compositor_frame.metadata.referenced_surfaces =
- std::move(referenced_surfaces);
- compositor_frame.resource_list = std::move(resource_list);
- return compositor_frame;
-}
-
-CompositorFrame MakeCompositorFrame() {
- return MakeCompositorFrame(empty_surface_ids(), empty_surface_ids(),
- TransferableResourceArray());
-}
-
-CompositorFrame MakeCompositorFrame(
- std::vector<SurfaceId> activation_dependencies) {
- return MakeCompositorFrame(activation_dependencies, activation_dependencies,
- TransferableResourceArray());
-}
-
-CompositorFrame MakeCompositorFrame(
- std::vector<SurfaceId> activation_dependencies,
- std::vector<SurfaceId> referenced_surfaces) {
- return MakeCompositorFrame(std::move(activation_dependencies),
- std::move(referenced_surfaces),
- TransferableResourceArray());
-}
-
-CompositorFrame MakeCompositorFrameWithResources(
- std::vector<SurfaceId> activation_dependencies,
- TransferableResourceArray resource_list) {
- return MakeCompositorFrame(activation_dependencies, empty_surface_ids(),
- std::move(resource_list));
-}
-
-TransferableResource MakeResource(ResourceId id,
- ResourceFormat format,
- uint32_t filter,
- const gfx::Size& size) {
- TransferableResource resource;
- resource.id = id;
- resource.format = format;
- resource.filter = filter;
- resource.size = size;
- return resource;
-}
-
} // namespace
-class CompositorFrameSinkSupportTest : public testing::Test,
- public SurfaceObserver {
+class SurfaceSynchronizationTest : public testing::Test,
+ public SurfaceObserver {
public:
- CompositorFrameSinkSupportTest()
+ SurfaceSynchronizationTest()
: surface_manager_(SurfaceManager::LifetimeType::REFERENCES) {}
- ~CompositorFrameSinkSupportTest() override {}
+ ~SurfaceSynchronizationTest() override {}
CompositorFrameSinkSupport& display_support() { return *supports_[0]; }
Surface* display_surface() {
@@ -188,10 +103,7 @@ class CompositorFrameSinkSupportTest : public testing::Test,
// testing::Test:
void SetUp() override {
testing::Test::SetUp();
- constexpr bool is_root = true;
- constexpr bool is_child_root = false;
- constexpr bool handles_frame_sink_id_invalidation = true;
- constexpr bool needs_sync_points = true;
+
begin_frame_source_ =
base::MakeUnique<FakeExternalBeginFrameSource>(0.f, false);
surface_manager_.SetDependencyTracker(
@@ -199,17 +111,17 @@ class CompositorFrameSinkSupportTest : public testing::Test,
begin_frame_source_.get()));
surface_manager_.AddObserver(this);
supports_.push_back(CompositorFrameSinkSupport::Create(
- &support_client_, &surface_manager_, kDisplayFrameSink, is_root,
- handles_frame_sink_id_invalidation, needs_sync_points));
+ &support_client_, &surface_manager_, kDisplayFrameSink, kIsRoot,
+ kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints));
supports_.push_back(CompositorFrameSinkSupport::Create(
- &support_client_, &surface_manager_, kParentFrameSink, is_child_root,
- handles_frame_sink_id_invalidation, needs_sync_points));
+ &support_client_, &surface_manager_, kParentFrameSink, kIsChildRoot,
+ kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints));
supports_.push_back(CompositorFrameSinkSupport::Create(
- &support_client_, &surface_manager_, kChildFrameSink1, is_child_root,
- handles_frame_sink_id_invalidation, needs_sync_points));
+ &support_client_, &surface_manager_, kChildFrameSink1, kIsChildRoot,
+ kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints));
supports_.push_back(CompositorFrameSinkSupport::Create(
- &support_client_, &surface_manager_, kChildFrameSink2, is_child_root,
- handles_frame_sink_id_invalidation, needs_sync_points));
+ &support_client_, &surface_manager_, kChildFrameSink2, kIsChildRoot,
+ kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints));
// Normally, the BeginFrameSource would be registered by the Display. We
// register it here so that BeginFrames are received by the display support,
@@ -252,12 +164,12 @@ class CompositorFrameSinkSupportTest : public testing::Test,
std::unique_ptr<FakeExternalBeginFrameSource> begin_frame_source_;
std::vector<std::unique_ptr<CompositorFrameSinkSupport>> supports_;
- DISALLOW_COPY_AND_ASSIGN(CompositorFrameSinkSupportTest);
+ DISALLOW_COPY_AND_ASSIGN(SurfaceSynchronizationTest);
};
// The display root surface should have a surface reference from the top-level
// root added/removed when a CompositorFrame is submitted with a new SurfaceId.
-TEST_F(CompositorFrameSinkSupportTest, RootSurfaceReceivesReferences) {
+TEST_F(SurfaceSynchronizationTest, RootSurfaceReceivesReferences) {
const SurfaceId display_id_first = MakeSurfaceId(kDisplayFrameSink, 1);
const SurfaceId display_id_second = MakeSurfaceId(kDisplayFrameSink, 2);
@@ -286,14 +198,15 @@ TEST_F(CompositorFrameSinkSupportTest, RootSurfaceReceivesReferences) {
}
// The parent Surface is blocked on |child_id1| and |child_id2|.
-TEST_F(CompositorFrameSinkSupportTest, DisplayCompositorLockingBlockedOnTwo) {
+TEST_F(SurfaceSynchronizationTest, BlockedOnTwo) {
const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId child_id1 = MakeSurfaceId(kChildFrameSink1, 1);
const SurfaceId child_id2 = MakeSurfaceId(kChildFrameSink2, 1);
parent_support().SubmitCompositorFrame(
parent_id.local_surface_id(),
- MakeCompositorFrame({child_id1, child_id2}, empty_surface_ids()));
+ MakeCompositorFrame({child_id1, child_id2}, empty_surface_ids(),
+ TransferableResourceArray()));
// parent_support is blocked on |child_id1| and |child_id2|.
EXPECT_TRUE(dependency_tracker().has_deadline());
@@ -325,14 +238,15 @@ TEST_F(CompositorFrameSinkSupportTest, DisplayCompositorLockingBlockedOnTwo) {
}
// The parent Surface is blocked on |child_id2| which is blocked on |child_id3|.
-TEST_F(CompositorFrameSinkSupportTest, DisplayCompositorLockingBlockedChain) {
+TEST_F(SurfaceSynchronizationTest, BlockedChain) {
const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId child_id1 = MakeSurfaceId(kChildFrameSink1, 1);
const SurfaceId child_id2 = MakeSurfaceId(kChildFrameSink2, 1);
parent_support().SubmitCompositorFrame(
parent_id.local_surface_id(),
- MakeCompositorFrame({child_id1}, empty_surface_ids()));
+ MakeCompositorFrame({child_id1}, empty_surface_ids(),
+ TransferableResourceArray()));
// parent_support is blocked on |child_id1|.
EXPECT_TRUE(dependency_tracker().has_deadline());
@@ -345,7 +259,8 @@ TEST_F(CompositorFrameSinkSupportTest, DisplayCompositorLockingBlockedChain) {
child_support1().SubmitCompositorFrame(
child_id1.local_surface_id(),
- MakeCompositorFrame({child_id2}, empty_surface_ids()));
+ MakeCompositorFrame({child_id2}, empty_surface_ids(),
+ TransferableResourceArray()));
// child_support1 should now be blocked on |child_id2|.
EXPECT_TRUE(dependency_tracker().has_deadline());
@@ -364,7 +279,9 @@ TEST_F(CompositorFrameSinkSupportTest, DisplayCompositorLockingBlockedChain) {
// Submit a CompositorFrame without any dependencies to |child_id2|.
// parent_support should be activated.
child_support2().SubmitCompositorFrame(
- child_id2.local_surface_id(), MakeCompositorFrame(empty_surface_ids()));
+ child_id2.local_surface_id(),
+ MakeCompositorFrame(empty_surface_ids(), empty_surface_ids(),
+ TransferableResourceArray()));
EXPECT_FALSE(dependency_tracker().has_deadline());
@@ -386,15 +303,15 @@ TEST_F(CompositorFrameSinkSupportTest, DisplayCompositorLockingBlockedChain) {
}
// parent_surface and child_surface1 are blocked on |child_id2|.
-TEST_F(CompositorFrameSinkSupportTest,
- DisplayCompositorLockingTwoBlockedOnOne) {
+TEST_F(SurfaceSynchronizationTest, TwoBlockedOnOne) {
const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId child_id1 = MakeSurfaceId(kChildFrameSink1, 1);
const SurfaceId child_id2 = MakeSurfaceId(kChildFrameSink2, 1);
parent_support().SubmitCompositorFrame(
parent_id.local_surface_id(),
- MakeCompositorFrame({child_id2}, empty_surface_ids()));
+ MakeCompositorFrame({child_id2}, empty_surface_ids(),
+ TransferableResourceArray()));
// parent_support is blocked on |child_id2|.
EXPECT_TRUE(dependency_tracker().has_deadline());
@@ -406,7 +323,8 @@ TEST_F(CompositorFrameSinkSupportTest,
// child_support1 should now be blocked on |child_id2|.
child_support1().SubmitCompositorFrame(
child_id1.local_surface_id(),
- MakeCompositorFrame({child_id2}, empty_surface_ids()));
+ MakeCompositorFrame({child_id2}, empty_surface_ids(),
+ TransferableResourceArray()));
EXPECT_TRUE(dependency_tracker().has_deadline());
EXPECT_FALSE(child_surface1()->HasActiveFrame());
@@ -438,14 +356,15 @@ TEST_F(CompositorFrameSinkSupportTest,
// parent_surface is blocked on |child_id1|, and child_surface2 is blocked on
// |child_id2| until the deadline hits.
-TEST_F(CompositorFrameSinkSupportTest, DisplayCompositorLockingDeadlineHits) {
+TEST_F(SurfaceSynchronizationTest, DeadlineHits) {
const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId child_id1 = MakeSurfaceId(kChildFrameSink1, 1);
const SurfaceId child_id2 = MakeSurfaceId(kChildFrameSink2, 1);
parent_support().SubmitCompositorFrame(
parent_id.local_surface_id(),
- MakeCompositorFrame({child_id1}, empty_surface_ids()));
+ MakeCompositorFrame({child_id1}, empty_surface_ids(),
+ TransferableResourceArray()));
// parent_support is blocked on |child_id1|.
EXPECT_TRUE(dependency_tracker().has_deadline());
@@ -456,7 +375,8 @@ TEST_F(CompositorFrameSinkSupportTest, DisplayCompositorLockingDeadlineHits) {
child_support1().SubmitCompositorFrame(
child_id1.local_surface_id(),
- MakeCompositorFrame({child_id2}, empty_surface_ids()));
+ MakeCompositorFrame({child_id2}, empty_surface_ids(),
+ TransferableResourceArray()));
// child_support1 should now be blocked on |child_id2|.
EXPECT_TRUE(dependency_tracker().has_deadline());
@@ -508,8 +428,7 @@ TEST_F(CompositorFrameSinkSupportTest, DisplayCompositorLockingDeadlineHits) {
// Verifies that the deadline does not reset if we submit CompositorFrames
// to new Surfaces with unresolved dependencies.
-TEST_F(CompositorFrameSinkSupportTest,
- DisplayCompositorLockingFramesSubmittedAfterDeadlineSet) {
+TEST_F(SurfaceSynchronizationTest, FramesSubmittedAfterDeadlineSet) {
const SurfaceId arbitrary_id = MakeSurfaceId(kArbitraryFrameSink, 1);
BeginFrameArgs args =
CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 1);
@@ -517,7 +436,8 @@ TEST_F(CompositorFrameSinkSupportTest,
LocalSurfaceId local_surface_id(1, base::UnguessableToken::Create());
support(i).SubmitCompositorFrame(
local_surface_id,
- MakeCompositorFrame({arbitrary_id}, empty_surface_ids()));
+ MakeCompositorFrame({arbitrary_id}, empty_surface_ids(),
+ TransferableResourceArray()));
// The deadline has been set.
EXPECT_TRUE(dependency_tracker().has_deadline());
@@ -542,15 +462,15 @@ TEST_F(CompositorFrameSinkSupportTest,
// This test verifies at the Surface activates once a CompositorFrame is
// submitted that has no unresolved dependencies.
-TEST_F(CompositorFrameSinkSupportTest,
- DisplayCompositorLockingNewFrameOverridesOldDependencies) {
+TEST_F(SurfaceSynchronizationTest, NewFrameOverridesOldDependencies) {
const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId arbitrary_id = MakeSurfaceId(kArbitraryFrameSink, 1);
// Submit a CompositorFrame that depends on |arbitrary_id|.
parent_support().SubmitCompositorFrame(
parent_id.local_surface_id(),
- MakeCompositorFrame({arbitrary_id}, empty_surface_ids()));
+ MakeCompositorFrame({arbitrary_id}, empty_surface_ids(),
+ TransferableResourceArray()));
// Verify that the CompositorFrame is blocked on |arbitrary_id|.
EXPECT_FALSE(parent_surface()->HasActiveFrame());
@@ -571,8 +491,7 @@ TEST_F(CompositorFrameSinkSupportTest,
// This test verifies that a pending CompositorFrame does not affect surface
// references. A new surface from a child will continue to exist as a temporary
// reference until the parent's frame activates.
-TEST_F(CompositorFrameSinkSupportTest,
- OnlyActiveFramesAffectSurfaceReferences) {
+TEST_F(SurfaceSynchronizationTest, OnlyActiveFramesAffectSurfaceReferences) {
const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId child_id1 = MakeSurfaceId(kChildFrameSink1, 1);
const SurfaceId child_id2 = MakeSurfaceId(kChildFrameSink2, 1);
@@ -600,7 +519,8 @@ TEST_F(CompositorFrameSinkSupportTest,
EXPECT_CALL(support_client_, DidReceiveCompositorFrameAck(_)).Times(0);
parent_support().SubmitCompositorFrame(
parent_id.local_surface_id(),
- MakeCompositorFrame({child_id2}, {child_id1}));
+ MakeCompositorFrame({child_id2}, {child_id1},
+ TransferableResourceArray()));
EXPECT_FALSE(parent_surface()->HasActiveFrame());
EXPECT_TRUE(parent_surface()->HasPendingFrame());
EXPECT_THAT(parent_surface()->blocking_surfaces(),
@@ -637,21 +557,22 @@ TEST_F(CompositorFrameSinkSupportTest,
// This test verifies that we do not double count returned resources when a
// CompositorFrame starts out as pending, then becomes active, and then is
// replaced with another active CompositorFrame.
-TEST_F(CompositorFrameSinkSupportTest,
- DisplayCompositorLockingResourcesOnlyReturnedOnce) {
+TEST_F(SurfaceSynchronizationTest, ResourcesOnlyReturnedOnce) {
const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId child_id = MakeSurfaceId(kChildFrameSink1, 1);
// The parent submits a CompositorFrame that depends on |child_id| before the
// child submits a CompositorFrame. The CompositorFrame also has resources in
// its resource list.
- TransferableResource resource =
- MakeResource(1337 /* id */, ALPHA_8 /* format */, 1234 /* filter */,
- gfx::Size(1234, 5678));
+ TransferableResource resource;
+ resource.id = 1337;
+ resource.format = ALPHA_8;
+ resource.filter = 1234;
+ resource.size = gfx::Size(1234, 5678);
TransferableResourceArray resource_list = {resource};
parent_support().SubmitCompositorFrame(
parent_id.local_surface_id(),
- MakeCompositorFrameWithResources({child_id}, resource_list));
+ MakeCompositorFrame({child_id}, empty_surface_ids(), resource_list));
// Verify that the CompositorFrame is blocked on |child_id|.
EXPECT_FALSE(parent_surface()->HasActiveFrame());
@@ -660,7 +581,9 @@ TEST_F(CompositorFrameSinkSupportTest,
UnorderedElementsAre(child_id));
child_support1().SubmitCompositorFrame(
- child_id.local_surface_id(), MakeCompositorFrame(empty_surface_ids()));
+ child_id.local_surface_id(),
+ MakeCompositorFrame(empty_surface_ids(), empty_surface_ids(),
+ TransferableResourceArray()));
// Verify that the child CompositorFrame activates immediately.
EXPECT_TRUE(child_surface1()->HasActiveFrame());
@@ -672,23 +595,26 @@ TEST_F(CompositorFrameSinkSupportTest,
EXPECT_FALSE(parent_surface()->HasPendingFrame());
EXPECT_THAT(parent_surface()->blocking_surfaces(), IsEmpty());
+ ReturnedResourceArray returned_resources = {resource.ToReturnedResource()};
+ EXPECT_CALL(support_client_,
+ DidReceiveCompositorFrameAck(returned_resources));
+
// The parent submits a CompositorFrame without any dependencies. That frame
// should activate immediately, replacing the earlier frame. The resource from
// the earlier frame should be returned to the client.
parent_support().SubmitCompositorFrame(
- parent_id.local_surface_id(), MakeCompositorFrame({empty_surface_ids()}));
+ parent_id.local_surface_id(),
+ MakeCompositorFrame({empty_surface_ids()}, {empty_surface_ids()},
+ TransferableResourceArray()));
EXPECT_TRUE(parent_surface()->HasActiveFrame());
EXPECT_FALSE(parent_surface()->HasPendingFrame());
EXPECT_THAT(parent_surface()->blocking_surfaces(), IsEmpty());
- ReturnedResource returned_resource = resource.ToReturnedResource();
- EXPECT_THAT(support_client_.last_returned_resources(),
- UnorderedElementsAre(returned_resource));
}
// The parent Surface is blocked on |child_id2| which is blocked on |child_id3|.
// child_support1 evicts its blocked Surface. The parent surface should
// activate.
-TEST_F(CompositorFrameSinkSupportTest, EvictSurfaceWithPendingFrame) {
+TEST_F(SurfaceSynchronizationTest, EvictSurfaceWithPendingFrame) {
const SurfaceId parent_id1 = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId child_id1 = MakeSurfaceId(kChildFrameSink1, 1);
const SurfaceId child_id2 = MakeSurfaceId(kChildFrameSink2, 1);
@@ -696,7 +622,8 @@ TEST_F(CompositorFrameSinkSupportTest, EvictSurfaceWithPendingFrame) {
// Submit a CompositorFrame that depends on |child_id1|.
parent_support().SubmitCompositorFrame(
parent_id1.local_surface_id(),
- MakeCompositorFrame({child_id1}, empty_surface_ids()));
+ MakeCompositorFrame({child_id1}, empty_surface_ids(),
+ TransferableResourceArray()));
// Verify that the CompositorFrame is blocked on |child_id1|.
EXPECT_FALSE(parent_surface()->HasActiveFrame());
@@ -707,7 +634,8 @@ TEST_F(CompositorFrameSinkSupportTest, EvictSurfaceWithPendingFrame) {
// Submit a CompositorFrame that depends on |child_id2|.
child_support1().SubmitCompositorFrame(
child_id1.local_surface_id(),
- MakeCompositorFrame({child_id2}, empty_surface_ids()));
+ MakeCompositorFrame({child_id2}, empty_surface_ids(),
+ TransferableResourceArray()));
// Verify that the CompositorFrame is blocked on |child_id2|.
EXPECT_FALSE(child_surface1()->HasActiveFrame());
@@ -731,7 +659,7 @@ TEST_F(CompositorFrameSinkSupportTest, EvictSurfaceWithPendingFrame) {
// existing active CompositorFrame, then the surface reference hierarchy will be
// updated allowing garbage collection of surfaces that are no longer
// referenced.
-TEST_F(CompositorFrameSinkSupportTest, DropStaleReferencesAfterActivation) {
+TEST_F(SurfaceSynchronizationTest, DropStaleReferencesAfterActivation) {
const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId child_id1 = MakeSurfaceId(kChildFrameSink1, 1);
const SurfaceId child_id2 = MakeSurfaceId(kChildFrameSink2, 1);
@@ -741,7 +669,8 @@ TEST_F(CompositorFrameSinkSupportTest, DropStaleReferencesAfterActivation) {
EXPECT_CALL(support_client_, DidReceiveCompositorFrameAck(_)).Times(0);
parent_support().SubmitCompositorFrame(
parent_id.local_surface_id(),
- MakeCompositorFrame({child_id1}, empty_surface_ids()));
+ MakeCompositorFrame({child_id1}, empty_surface_ids(),
+ TransferableResourceArray()));
// Verify that the CompositorFrame is blocked on |child_id|.
EXPECT_FALSE(parent_surface()->HasActiveFrame());
@@ -773,7 +702,8 @@ TEST_F(CompositorFrameSinkSupportTest, DropStaleReferencesAfterActivation) {
// Submit a new parent CompositorFrame to add a reference.
parent_support().SubmitCompositorFrame(
parent_id.local_surface_id(),
- MakeCompositorFrame(empty_surface_ids(), {child_id1}));
+ MakeCompositorFrame(empty_surface_ids(), {child_id1},
+ TransferableResourceArray()));
// Verify that the parent Surface has activated.
EXPECT_TRUE(parent_surface()->HasActiveFrame());
@@ -790,7 +720,8 @@ TEST_F(CompositorFrameSinkSupportTest, DropStaleReferencesAfterActivation) {
EXPECT_CALL(support_client_, DidReceiveCompositorFrameAck(_)).Times(0);
parent_support().SubmitCompositorFrame(
parent_id.local_surface_id(),
- MakeCompositorFrame({child_id2}, empty_surface_ids()));
+ MakeCompositorFrame({child_id2}, empty_surface_ids(),
+ TransferableResourceArray()));
testing::Mock::VerifyAndClearExpectations(&support_client_);
// The parent surface should now have both a pending and activate
@@ -818,7 +749,7 @@ TEST_F(CompositorFrameSinkSupportTest, DropStaleReferencesAfterActivation) {
// Checks whether the latency info are moved to the new surface from the old
// one when LocalSurfaceId changes. No frame has unresolved dependencies.
-TEST_F(CompositorFrameSinkSupportTest,
+TEST_F(SurfaceSynchronizationTest,
LatencyInfoCarriedOverOnResize_NoUnresolvedDependencies) {
const SurfaceId parent_id1 = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId parent_id2 = MakeSurfaceId(kParentFrameSink, 2);
@@ -888,7 +819,7 @@ TEST_F(CompositorFrameSinkSupportTest,
// Checks whether the latency info are moved to the new surface from the old
// one when LocalSurfaceId changes. Old surface has unresolved dependencies.
-TEST_F(CompositorFrameSinkSupportTest,
+TEST_F(SurfaceSynchronizationTest,
LatencyInfoCarriedOverOnResize_OldSurfaceHasPendingAndActiveFrame) {
const SurfaceId parent_id1 = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId parent_id2 = MakeSurfaceId(kParentFrameSink, 2);
@@ -916,7 +847,8 @@ TEST_F(CompositorFrameSinkSupportTest,
ui::LatencyInfo info2;
info2.AddLatencyNumber(latency_type2, latency_id2, latency_sequence_number2);
- CompositorFrame frame2 = MakeCompositorFrame({child_id}, empty_surface_ids());
+ CompositorFrame frame2 = MakeCompositorFrame({child_id}, empty_surface_ids(),
+ TransferableResourceArray());
frame2.metadata.latency_info.push_back(info2);
parent_support().SubmitCompositorFrame(parent_id1.local_surface_id(),
@@ -964,7 +896,7 @@ TEST_F(CompositorFrameSinkSupportTest,
// Checks whether the latency info are moved to the new surface from the old
// one when LocalSurfaceId changes. The new surface has unresolved dependencies.
-TEST_F(CompositorFrameSinkSupportTest,
+TEST_F(SurfaceSynchronizationTest,
LatencyInfoCarriedOverOnResize_NewSurfaceHasPendingFrame) {
const SurfaceId parent_id1 = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId parent_id2 = MakeSurfaceId(kParentFrameSink, 2);
@@ -999,7 +931,8 @@ TEST_F(CompositorFrameSinkSupportTest,
ui::LatencyInfo info2;
info2.AddLatencyNumber(latency_type2, latency_id2, latency_sequence_number2);
- CompositorFrame frame2 = MakeCompositorFrame({child_id}, empty_surface_ids());
+ CompositorFrame frame2 = MakeCompositorFrame({child_id}, empty_surface_ids(),
+ TransferableResourceArray());
frame2.metadata.latency_info.push_back(info2);
parent_support().SubmitCompositorFrame(parent_id2.local_surface_id(),
@@ -1041,7 +974,7 @@ TEST_F(CompositorFrameSinkSupportTest,
ui::DISPLAY_COMPOSITOR_RECEIVED_FRAME_COMPONENT, nullptr));
}
-TEST_F(CompositorFrameSinkSupportTest, PassesOnBeginFrameAcks) {
+TEST_F(SurfaceSynchronizationTest, PassesOnBeginFrameAcks) {
const SurfaceId display_id = MakeSurfaceId(kDisplayFrameSink, 1);
// Request BeginFrames.
@@ -1073,13 +1006,14 @@ TEST_F(CompositorFrameSinkSupportTest, PassesOnBeginFrameAcks) {
}
// Checks that resources and ack are sent together if possible.
-TEST_F(CompositorFrameSinkSupportTest, ReturnResourcesWithAck) {
+TEST_F(SurfaceSynchronizationTest, ReturnResourcesWithAck) {
const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
TransferableResource resource;
resource.id = 1234;
parent_support().SubmitCompositorFrame(
parent_id.local_surface_id(),
- MakeCompositorFrameWithResources(empty_surface_ids(), {resource}));
+ MakeCompositorFrame(empty_surface_ids(), empty_surface_ids(),
+ {resource}));
ReturnedResourceArray returned_resources;
TransferableResource::ReturnResources({resource}, &returned_resources);
EXPECT_CALL(support_client_, ReclaimResources(_)).Times(0);
@@ -1091,7 +1025,7 @@ TEST_F(CompositorFrameSinkSupportTest, ReturnResourcesWithAck) {
// Verifies that if a surface is marked destroyed and a new frame arrives for
// it, it will be recovered.
-TEST_F(CompositorFrameSinkSupportTest, SurfaceResurrection) {
+TEST_F(SurfaceSynchronizationTest, SurfaceResurrection) {
const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId child_id = MakeSurfaceId(kChildFrameSink1, 3);
@@ -1105,8 +1039,9 @@ TEST_F(CompositorFrameSinkSupportTest, SurfaceResurrection) {
EXPECT_NE(nullptr, surface);
// Add a reference from the parent to the child.
- parent_support().SubmitCompositorFrame(parent_id.local_surface_id(),
- MakeCompositorFrame({child_id}));
+ parent_support().SubmitCompositorFrame(
+ parent_id.local_surface_id(),
+ MakeCompositorFrame({child_id}, {child_id}, TransferableResourceArray()));
// Attempt to destroy the child surface. The surface must still exist since
// the parent needs it but it will be marked as destroyed.
@@ -1129,7 +1064,7 @@ TEST_F(CompositorFrameSinkSupportTest, SurfaceResurrection) {
// Verifies that if a LocalSurfaceId belonged to a surface that doesn't exist
// anymore, it can still be reused for new surfaces.
-TEST_F(CompositorFrameSinkSupportTest, LocalSurfaceIdIsReusable) {
+TEST_F(SurfaceSynchronizationTest, LocalSurfaceIdIsReusable) {
const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId child_id = MakeSurfaceId(kChildFrameSink1, 3);
@@ -1139,8 +1074,9 @@ TEST_F(CompositorFrameSinkSupportTest, LocalSurfaceIdIsReusable) {
EXPECT_NE(nullptr, surface_manager().GetSurfaceForId(child_id));
// Add a reference from parent.
- parent_support().SubmitCompositorFrame(parent_id.local_surface_id(),
- MakeCompositorFrame({child_id}));
+ parent_support().SubmitCompositorFrame(
+ parent_id.local_surface_id(),
+ MakeCompositorFrame({child_id}, {child_id}, TransferableResourceArray()));
// Remove the reference from parant. This allows us to destroy the surface.
parent_support().SubmitCompositorFrame(parent_id.local_surface_id(),
@@ -1164,7 +1100,7 @@ TEST_F(CompositorFrameSinkSupportTest, LocalSurfaceIdIsReusable) {
// activated subtree refer to the same dependency. The old subtree was activated
// by deadline, and the new subtree was activated by a dependency finally
// resolving.
-TEST_F(CompositorFrameSinkSupportTest, DependencyTrackingGarbageCollection) {
+TEST_F(SurfaceSynchronizationTest, DependencyTrackingGarbageCollection) {
const SurfaceId display_id = MakeSurfaceId(kDisplayFrameSink, 1);
const SurfaceId parent_id1 = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId parent_id2 = MakeSurfaceId(kParentFrameSink, 2);
@@ -1172,10 +1108,12 @@ TEST_F(CompositorFrameSinkSupportTest, DependencyTrackingGarbageCollection) {
parent_support().SubmitCompositorFrame(
parent_id1.local_surface_id(),
- MakeCompositorFrame({child_id}, empty_surface_ids()));
+ MakeCompositorFrame({child_id}, empty_surface_ids(),
+ TransferableResourceArray()));
display_support().SubmitCompositorFrame(
display_id.local_surface_id(),
- MakeCompositorFrame({parent_id1}, empty_surface_ids()));
+ MakeCompositorFrame({parent_id1}, empty_surface_ids(),
+ TransferableResourceArray()));
EXPECT_TRUE(dependency_tracker().has_deadline());
@@ -1197,10 +1135,12 @@ TEST_F(CompositorFrameSinkSupportTest, DependencyTrackingGarbageCollection) {
parent_support().SubmitCompositorFrame(
parent_id2.local_surface_id(),
- MakeCompositorFrame({child_id}, empty_surface_ids()));
+ MakeCompositorFrame({child_id}, empty_surface_ids(),
+ TransferableResourceArray()));
display_support().SubmitCompositorFrame(
display_id.local_surface_id(),
- MakeCompositorFrame({parent_id2}, empty_surface_ids()));
+ MakeCompositorFrame({parent_id2}, empty_surface_ids(),
+ TransferableResourceArray()));
// The display surface now has two CompositorFrames. One that is pending,
// indirectly blocked on child_id and one that is active, also indirectly
@@ -1222,7 +1162,7 @@ TEST_F(CompositorFrameSinkSupportTest, DependencyTrackingGarbageCollection) {
// deadline activation. SurfaceDependencyTracker is also tracking a surface
// from that subtree due to an unresolved dependency. This test verifies that
// this dependency resolution does not crash.
-TEST_F(CompositorFrameSinkSupportTest, GarbageCollectionOnDeadline) {
+TEST_F(SurfaceSynchronizationTest, GarbageCollectionOnDeadline) {
const SurfaceId display_id = MakeSurfaceId(kDisplayFrameSink, 1);
const SurfaceId parent_id1 = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId parent_id2 = MakeSurfaceId(kParentFrameSink, 2);
@@ -1231,10 +1171,13 @@ TEST_F(CompositorFrameSinkSupportTest, GarbageCollectionOnDeadline) {
// |parent_id1| is blocked on |child_id|.
parent_support().SubmitCompositorFrame(
parent_id1.local_surface_id(),
- MakeCompositorFrame({child_id}, empty_surface_ids()));
+ MakeCompositorFrame({child_id}, empty_surface_ids(),
+ TransferableResourceArray()));
- display_support().SubmitCompositorFrame(display_id.local_surface_id(),
- MakeCompositorFrame({parent_id1}));
+ display_support().SubmitCompositorFrame(
+ display_id.local_surface_id(),
+ MakeCompositorFrame({parent_id1}, {parent_id1},
+ TransferableResourceArray()));
EXPECT_TRUE(dependency_tracker().has_deadline());
EXPECT_TRUE(display_surface()->HasPendingFrame());
@@ -1258,12 +1201,14 @@ TEST_F(CompositorFrameSinkSupportTest, GarbageCollectionOnDeadline) {
// a candidate for garbage collection.
display_support().SubmitCompositorFrame(
display_id.local_surface_id(),
- MakeCompositorFrame({parent_id2}, empty_surface_ids()));
+ MakeCompositorFrame({parent_id2}, empty_surface_ids(),
+ TransferableResourceArray()));
// Now |parent_id1| is only kept alive by the active |display_id| frame.
parent_support().SubmitCompositorFrame(
parent_id2.local_surface_id(),
- MakeCompositorFrame({child_id}, empty_surface_ids()));
+ MakeCompositorFrame({child_id}, empty_surface_ids(),
+ TransferableResourceArray()));
// SurfaceDependencyTracker should now be tracking |display_id|, |parent_id1|
// and |parent_id2|. By activating the pending |display_id| frame by deadline,
@@ -1280,7 +1225,7 @@ TEST_F(CompositorFrameSinkSupportTest, GarbageCollectionOnDeadline) {
// This test verifies that a CompositorFrame will only blocked on embedded
// surfaces but not on other retained surface IDs in the CompositorFrame.
-TEST_F(CompositorFrameSinkSupportTest, OnlyBlockOnEmbeddedSurfaces) {
+TEST_F(SurfaceSynchronizationTest, OnlyBlockOnEmbeddedSurfaces) {
const SurfaceId display_id = MakeSurfaceId(kDisplayFrameSink, 1);
const SurfaceId parent_id1 = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId parent_id2 = MakeSurfaceId(kParentFrameSink, 2);
@@ -1292,7 +1237,8 @@ TEST_F(CompositorFrameSinkSupportTest, OnlyBlockOnEmbeddedSurfaces) {
display_support().SubmitCompositorFrame(
display_id.local_surface_id(),
- MakeCompositorFrame({parent_id1}, {parent_id2}));
+ MakeCompositorFrame({parent_id1}, {parent_id2},
+ TransferableResourceArray()));
EXPECT_TRUE(display_surface()->HasPendingFrame());
EXPECT_FALSE(display_surface()->HasActiveFrame());
@@ -1319,14 +1265,15 @@ TEST_F(CompositorFrameSinkSupportTest, OnlyBlockOnEmbeddedSurfaces) {
// This test verifies that a late arriving CompositorFrame activates immediately
// and does not trigger a new deadline.
-TEST_F(CompositorFrameSinkSupportTest, LateArrivingDependency) {
+TEST_F(SurfaceSynchronizationTest, LateArrivingDependency) {
const SurfaceId display_id = MakeSurfaceId(kDisplayFrameSink, 1);
const SurfaceId parent_id1 = MakeSurfaceId(kParentFrameSink, 1);
const SurfaceId child_id1 = MakeSurfaceId(kChildFrameSink1, 1);
display_support().SubmitCompositorFrame(
display_id.local_surface_id(),
- MakeCompositorFrame({parent_id1}, empty_surface_ids()));
+ MakeCompositorFrame({parent_id1}, empty_surface_ids(),
+ TransferableResourceArray()));
EXPECT_TRUE(display_surface()->HasPendingFrame());
EXPECT_FALSE(display_surface()->HasActiveFrame());
@@ -1349,7 +1296,8 @@ TEST_F(CompositorFrameSinkSupportTest, LateArrivingDependency) {
// scheduling a deadline and without waiting for dependencies to resolve.
parent_support().SubmitCompositorFrame(
parent_id1.local_surface_id(),
- MakeCompositorFrame({child_id1}, empty_surface_ids()));
+ MakeCompositorFrame({child_id1}, empty_surface_ids(),
+ TransferableResourceArray()));
EXPECT_FALSE(dependency_tracker().has_deadline());
EXPECT_FALSE(parent_surface()->HasPendingFrame());
EXPECT_TRUE(parent_surface()->HasActiveFrame());
@@ -1358,7 +1306,7 @@ TEST_F(CompositorFrameSinkSupportTest, LateArrivingDependency) {
// This test verifies that CompositorFrames submitted to a surface referenced
// by a parent CompositorFrame as a fallback will be rejected and ACK'ed
// immediately.
-TEST_F(CompositorFrameSinkSupportTest, FallbackSurfacesClosed) {
+TEST_F(SurfaceSynchronizationTest, FallbackSurfacesClosed) {
const SurfaceId parent_id1 = MakeSurfaceId(kParentFrameSink, 1);
// This is the fallback child surface that the parent holds a reference to.
const SurfaceId child_id1 = MakeSurfaceId(kChildFrameSink1, 1);
@@ -1369,9 +1317,11 @@ TEST_F(CompositorFrameSinkSupportTest, FallbackSurfacesClosed) {
// DidReceiveCompositorFrameAck should call on immediate activation.
// However, resources will not be returned because this frame is a candidate
// for display.
- TransferableResource resource =
- MakeResource(1337 /* id */, ALPHA_8 /* format */, 1234 /* filter */,
- gfx::Size(1234, 5678));
+ TransferableResource resource;
+ resource.id = 1337;
+ resource.format = ALPHA_8;
+ resource.filter = 1234;
+ resource.size = gfx::Size(1234, 5678);
ReturnedResourceArray returned_resources;
TransferableResource::ReturnResources({resource}, &returned_resources);
@@ -1379,7 +1329,8 @@ TEST_F(CompositorFrameSinkSupportTest, FallbackSurfacesClosed) {
DidReceiveCompositorFrameAck(Eq(ReturnedResourceArray())));
child_support1().SubmitCompositorFrame(
child_id1.local_surface_id(),
- MakeCompositorFrameWithResources(empty_surface_ids(), {resource}));
+ MakeCompositorFrame(empty_surface_ids(), empty_surface_ids(),
+ {resource}));
testing::Mock::VerifyAndClearExpectations(&support_client_);
// The parent is blocked on |child_id2| and references |child_id1|. The
@@ -1387,23 +1338,27 @@ TEST_F(CompositorFrameSinkSupportTest, FallbackSurfacesClosed) {
// while the parent CompositorFrame is blocked.
parent_support().SubmitCompositorFrame(
parent_id1.local_surface_id(),
- MakeCompositorFrame({child_id2}, {child_id1}));
+ MakeCompositorFrame({child_id2}, {child_id1},
+ TransferableResourceArray()));
EXPECT_TRUE(dependency_tracker().has_deadline());
EXPECT_TRUE(parent_surface()->HasPendingFrame());
EXPECT_FALSE(parent_surface()->HasActiveFrame());
// Resources will be returned immediately because |child_id1|'s surface is
// closed.
- TransferableResource resource2 =
- MakeResource(1246 /* id */, ALPHA_8 /* format */, 1357 /* filter */,
- gfx::Size(8765, 4321));
+ TransferableResource resource2;
+ resource2.id = 1246;
+ resource2.format = ALPHA_8;
+ resource2.filter = 1357;
+ resource2.size = gfx::Size(8765, 4321);
ReturnedResourceArray returned_resources2;
TransferableResource::ReturnResources({resource2}, &returned_resources2);
EXPECT_CALL(support_client_,
DidReceiveCompositorFrameAck(Eq(returned_resources2)));
child_support1().SubmitCompositorFrame(
child_id1.local_surface_id(),
- MakeCompositorFrameWithResources(empty_surface_ids(), {resource2}));
+ MakeCompositorFrame(empty_surface_ids(), empty_surface_ids(),
+ {resource2}));
testing::Mock::VerifyAndClearExpectations(&support_client_);
// Advance BeginFrames to trigger a deadline. This activates the
@@ -1425,8 +1380,10 @@ TEST_F(CompositorFrameSinkSupportTest, FallbackSurfacesClosed) {
DidReceiveCompositorFrameAck(Eq(returned_resources2)));
child_support1().SubmitCompositorFrame(
child_id1.local_surface_id(),
- MakeCompositorFrameWithResources(empty_surface_ids(), {resource2}));
+ MakeCompositorFrame(empty_surface_ids(), empty_surface_ids(),
+ {resource2}));
testing::Mock::VerifyAndClearExpectations(&support_client_);
}
+} // namespace test
} // namespace cc
« no previous file with comments | « cc/surfaces/surface_resource_holder.cc ('k') | cc/test/compositor_frame_helpers.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698