| Index: cc/surfaces/surface_manager_unittest.cc
|
| diff --git a/cc/surfaces/surface_manager_unittest.cc b/cc/surfaces/surface_manager_unittest.cc
|
| index 9c290944d30b49ae7fe07f9371577dce6db4d91d..ebbf878205787dc473fdd8d948e32c9c151f7d35 100644
|
| --- a/cc/surfaces/surface_manager_unittest.cc
|
| +++ b/cc/surfaces/surface_manager_unittest.cc
|
| @@ -13,10 +13,10 @@ namespace cc {
|
|
|
| class FakeSurfaceFactoryClient : public SurfaceFactoryClient {
|
| public:
|
| - explicit FakeSurfaceFactoryClient(int id_namespace)
|
| - : source_(nullptr), manager_(nullptr), id_namespace_(id_namespace) {}
|
| - FakeSurfaceFactoryClient(int id_namespace, SurfaceManager* manager)
|
| - : source_(nullptr), manager_(nullptr), id_namespace_(id_namespace) {
|
| + explicit FakeSurfaceFactoryClient(int client_id)
|
| + : source_(nullptr), manager_(nullptr), client_id_(client_id) {}
|
| + FakeSurfaceFactoryClient(int client_id, SurfaceManager* manager)
|
| + : source_(nullptr), manager_(nullptr), client_id_(client_id) {
|
| DCHECK(manager);
|
| Register(manager);
|
| }
|
| @@ -29,17 +29,17 @@ class FakeSurfaceFactoryClient : public SurfaceFactoryClient {
|
| }
|
|
|
| BeginFrameSource* source() { return source_; }
|
| - uint32_t id_namespace() { return id_namespace_; }
|
| + uint32_t client_id() { return client_id_; }
|
|
|
| void Register(SurfaceManager* manager) {
|
| EXPECT_EQ(manager_, nullptr);
|
| manager_ = manager;
|
| - manager_->RegisterSurfaceFactoryClient(id_namespace_, this);
|
| + manager_->RegisterClient(client_id_, this);
|
| }
|
|
|
| void Unregister() {
|
| EXPECT_NE(manager_, nullptr);
|
| - manager_->UnregisterSurfaceFactoryClient(id_namespace_);
|
| + manager_->UnregisterClient(client_id_);
|
| manager_ = nullptr;
|
| }
|
|
|
| @@ -53,7 +53,7 @@ class FakeSurfaceFactoryClient : public SurfaceFactoryClient {
|
| private:
|
| BeginFrameSource* source_;
|
| SurfaceManager* manager_;
|
| - uint32_t id_namespace_;
|
| + uint32_t client_id_;
|
| };
|
|
|
| class EmptyBeginFrameSource : public BeginFrameSource {
|
| @@ -66,19 +66,10 @@ class EmptyBeginFrameSource : public BeginFrameSource {
|
|
|
| class SurfaceManagerTest : public testing::Test {
|
| public:
|
| - // These tests don't care about namespace registration, so just preregister
|
| - // a set of namespaces that tests can use freely without worrying if they're
|
| - // valid or not.
|
| - enum { MAX_NAMESPACE = 10 };
|
| -
|
| SurfaceManagerTest() {
|
| - for (size_t i = 0; i < MAX_NAMESPACE; ++i)
|
| - manager_.RegisterSurfaceClientId(i);
|
| }
|
|
|
| ~SurfaceManagerTest() override {
|
| - for (size_t i = 0; i < MAX_NAMESPACE; ++i)
|
| - manager_.InvalidateSurfaceClientId(i);
|
| }
|
|
|
| protected:
|
| @@ -98,7 +89,7 @@ TEST_F(SurfaceManagerTest, SingleClients) {
|
| EXPECT_EQ(other_client.source(), nullptr);
|
|
|
| // Test setting unsetting BFS
|
| - manager_.RegisterBeginFrameSource(&source, client.id_namespace());
|
| + manager_.RegisterBeginFrameSource(&source, client.client_id());
|
| EXPECT_EQ(client.source(), &source);
|
| EXPECT_EQ(other_client.source(), nullptr);
|
| manager_.UnregisterBeginFrameSource(&source);
|
| @@ -106,7 +97,7 @@ TEST_F(SurfaceManagerTest, SingleClients) {
|
| EXPECT_EQ(other_client.source(), nullptr);
|
|
|
| // Set BFS for other namespace
|
| - manager_.RegisterBeginFrameSource(&source, other_client.id_namespace());
|
| + manager_.RegisterBeginFrameSource(&source, other_client.client_id());
|
| EXPECT_EQ(other_client.source(), &source);
|
| EXPECT_EQ(client.source(), nullptr);
|
| manager_.UnregisterBeginFrameSource(&source);
|
| @@ -114,7 +105,7 @@ TEST_F(SurfaceManagerTest, SingleClients) {
|
| EXPECT_EQ(other_client.source(), nullptr);
|
|
|
| // Re-set BFS for original
|
| - manager_.RegisterBeginFrameSource(&source, client.id_namespace());
|
| + manager_.RegisterBeginFrameSource(&source, client.client_id());
|
| EXPECT_EQ(client.source(), &source);
|
| manager_.UnregisterBeginFrameSource(&source);
|
| EXPECT_EQ(client.source(), nullptr);
|
| @@ -132,27 +123,27 @@ TEST_F(SurfaceManagerTest, MultipleDisplays) {
|
| FakeSurfaceFactoryClient client_b(4, &manager_);
|
| FakeSurfaceFactoryClient client_c(5, &manager_);
|
|
|
| - manager_.RegisterBeginFrameSource(&root1_source, root1.id_namespace());
|
| - manager_.RegisterBeginFrameSource(&root2_source, root2.id_namespace());
|
| + manager_.RegisterBeginFrameSource(&root1_source, root1.client_id());
|
| + manager_.RegisterBeginFrameSource(&root2_source, root2.client_id());
|
| EXPECT_EQ(root1.source(), &root1_source);
|
| EXPECT_EQ(root2.source(), &root2_source);
|
|
|
| // Set up initial hierarchy.
|
| - manager_.RegisterSurfaceNamespaceHierarchy(root1.id_namespace(),
|
| - client_a.id_namespace());
|
| + manager_.RegisterSurfaceNamespaceHierarchy(root1.client_id(),
|
| + client_a.client_id());
|
| EXPECT_EQ(client_a.source(), root1.source());
|
| - manager_.RegisterSurfaceNamespaceHierarchy(client_a.id_namespace(),
|
| - client_b.id_namespace());
|
| + manager_.RegisterSurfaceNamespaceHierarchy(client_a.client_id(),
|
| + client_b.client_id());
|
| EXPECT_EQ(client_b.source(), root1.source());
|
| - manager_.RegisterSurfaceNamespaceHierarchy(root2.id_namespace(),
|
| - client_c.id_namespace());
|
| + manager_.RegisterSurfaceNamespaceHierarchy(root2.client_id(),
|
| + client_c.client_id());
|
| EXPECT_EQ(client_c.source(), root2.source());
|
|
|
| // Attach A into root2's subtree, like a window moving across displays.
|
| // root1 -> A -> B
|
| // root2 -> C -> A -> B
|
| - manager_.RegisterSurfaceNamespaceHierarchy(client_c.id_namespace(),
|
| - client_a.id_namespace());
|
| + manager_.RegisterSurfaceNamespaceHierarchy(client_c.client_id(),
|
| + client_a.client_id());
|
| // With the heuristic of just keeping existing BFS in the face of multiple,
|
| // no client sources should change.
|
| EXPECT_EQ(client_a.source(), root1.source());
|
| @@ -160,8 +151,8 @@ TEST_F(SurfaceManagerTest, MultipleDisplays) {
|
| EXPECT_EQ(client_c.source(), root2.source());
|
|
|
| // Detach A from root1. A and B should now be updated to root2.
|
| - manager_.UnregisterSurfaceNamespaceHierarchy(root1.id_namespace(),
|
| - client_a.id_namespace());
|
| + manager_.UnregisterSurfaceNamespaceHierarchy(root1.client_id(),
|
| + client_a.client_id());
|
| EXPECT_EQ(client_a.source(), root2.source());
|
| EXPECT_EQ(client_b.source(), root2.source());
|
| EXPECT_EQ(client_c.source(), root2.source());
|
| @@ -179,12 +170,12 @@ TEST_F(SurfaceManagerTest, MultipleDisplays) {
|
| EXPECT_EQ(root2.source(), nullptr);
|
|
|
| // Cleanup hierarchy.
|
| - manager_.UnregisterSurfaceNamespaceHierarchy(root2.id_namespace(),
|
| - client_c.id_namespace());
|
| - manager_.UnregisterSurfaceNamespaceHierarchy(client_c.id_namespace(),
|
| - client_a.id_namespace());
|
| - manager_.UnregisterSurfaceNamespaceHierarchy(client_a.id_namespace(),
|
| - client_b.id_namespace());
|
| + manager_.UnregisterSurfaceNamespaceHierarchy(root2.client_id(),
|
| + client_c.client_id());
|
| + manager_.UnregisterSurfaceNamespaceHierarchy(client_c.client_id(),
|
| + client_a.client_id());
|
| + manager_.UnregisterSurfaceNamespaceHierarchy(client_a.client_id(),
|
| + client_b.client_id());
|
| }
|
|
|
| // In practice, registering and unregistering both parent/child relationships
|
| @@ -215,19 +206,19 @@ class SurfaceManagerOrderingTest : public SurfaceManagerTest {
|
| void RegisterHierarchy() {
|
| DCHECK(!hierarchy_registered_);
|
| hierarchy_registered_ = true;
|
| - manager_.RegisterSurfaceNamespaceHierarchy(client_a_.id_namespace(),
|
| - client_b_.id_namespace());
|
| - manager_.RegisterSurfaceNamespaceHierarchy(client_b_.id_namespace(),
|
| - client_c_.id_namespace());
|
| + manager_.RegisterSurfaceNamespaceHierarchy(client_a_.client_id(),
|
| + client_b_.client_id());
|
| + manager_.RegisterSurfaceNamespaceHierarchy(client_b_.client_id(),
|
| + client_c_.client_id());
|
| AssertCorrectBFSState();
|
| }
|
| void UnregisterHierarchy() {
|
| DCHECK(hierarchy_registered_);
|
| hierarchy_registered_ = false;
|
| - manager_.UnregisterSurfaceNamespaceHierarchy(client_a_.id_namespace(),
|
| - client_b_.id_namespace());
|
| - manager_.UnregisterSurfaceNamespaceHierarchy(client_b_.id_namespace(),
|
| - client_c_.id_namespace());
|
| + manager_.UnregisterSurfaceNamespaceHierarchy(client_a_.client_id(),
|
| + client_b_.client_id());
|
| + manager_.UnregisterSurfaceNamespaceHierarchy(client_b_.client_id(),
|
| + client_c_.client_id());
|
| AssertCorrectBFSState();
|
| }
|
|
|
| @@ -252,7 +243,7 @@ class SurfaceManagerOrderingTest : public SurfaceManagerTest {
|
| void RegisterBFS() {
|
| DCHECK(!bfs_registered_);
|
| bfs_registered_ = true;
|
| - manager_.RegisterBeginFrameSource(&source_, client_a_.id_namespace());
|
| + manager_.RegisterBeginFrameSource(&source_, client_a_.client_id());
|
| AssertCorrectBFSState();
|
| }
|
| void UnregisterBFS() {
|
| @@ -302,80 +293,51 @@ class SurfaceManagerOrderingTest : public SurfaceManagerTest {
|
| bool bfs_registered_;
|
| };
|
|
|
| -enum RegisterOrder { REGISTER_HIERARCHY_FIRST, REGISTER_CLIENTS_FIRST };
|
| -enum UnregisterOrder { UNREGISTER_HIERARCHY_FIRST, UNREGISTER_CLIENTS_FIRST };
|
| -enum BFSOrder { BFS_FIRST, BFS_SECOND, BFS_THIRD };
|
| +enum BFSOrder { BFS_FIRST, BFS_SECOND };
|
|
|
| -static const RegisterOrder kRegisterOrderList[] = {REGISTER_HIERARCHY_FIRST,
|
| - REGISTER_CLIENTS_FIRST};
|
| -static const UnregisterOrder kUnregisterOrderList[] = {
|
| - UNREGISTER_HIERARCHY_FIRST, UNREGISTER_CLIENTS_FIRST};
|
| -static const BFSOrder kBFSOrderList[] = {BFS_FIRST, BFS_SECOND, BFS_THIRD};
|
| +static const BFSOrder kBFSOrderList[] = {BFS_FIRST, BFS_SECOND};
|
|
|
| class SurfaceManagerOrderingParamTest
|
| : public SurfaceManagerOrderingTest,
|
| - public ::testing::WithParamInterface<
|
| - std::tr1::tuple<RegisterOrder, UnregisterOrder, BFSOrder>> {};
|
| + public ::testing::WithParamInterface<BFSOrder> {};
|
|
|
| TEST_P(SurfaceManagerOrderingParamTest, Ordering) {
|
| // Test the four permutations of client/hierarchy setting/unsetting and test
|
| // each place the BFS can be added and removed. The BFS and the
|
| // client/hierarchy are less related, so BFS is tested independently instead
|
| // of every permutation of BFS setting and unsetting.
|
| - // The register/unregister functions themselves test most of the state.
|
| - RegisterOrder register_order = std::tr1::get<0>(GetParam());
|
| - UnregisterOrder unregister_order = std::tr1::get<1>(GetParam());
|
| - BFSOrder bfs_order = std::tr1::get<2>(GetParam());
|
| + // The register/unregister functions themselves test most of the stat;
|
| + BFSOrder bfs_order = GetParam();
|
| +
|
| + RegisterClients();
|
|
|
| // Attach everything up in the specified order.
|
| if (bfs_order == BFS_FIRST)
|
| RegisterBFS();
|
|
|
| - if (register_order == REGISTER_HIERARCHY_FIRST)
|
| - RegisterHierarchy();
|
| - else
|
| - RegisterClients();
|
| + RegisterHierarchy();
|
|
|
| if (bfs_order == BFS_SECOND)
|
| RegisterBFS();
|
|
|
| - if (register_order == REGISTER_HIERARCHY_FIRST)
|
| - RegisterClients();
|
| - else
|
| - RegisterHierarchy();
|
| -
|
| - if (bfs_order == BFS_THIRD)
|
| - RegisterBFS();
|
| -
|
| // Everything hooked up, so should be valid.
|
| AssertAllValidBFS();
|
|
|
| // Detach everything in the specified order.
|
| - if (bfs_order == BFS_THIRD)
|
| + if (bfs_order == BFS_SECOND)
|
| UnregisterBFS();
|
|
|
| - if (unregister_order == UNREGISTER_HIERARCHY_FIRST)
|
| UnregisterHierarchy();
|
| - else
|
| - UnregisterClients();
|
|
|
| - if (bfs_order == BFS_SECOND)
|
| - UnregisterBFS();
|
| + if (bfs_order == BFS_FIRST)
|
| + UnregisterBFS();
|
|
|
| - if (unregister_order == UNREGISTER_HIERARCHY_FIRST)
|
| UnregisterClients();
|
| - else
|
| - UnregisterHierarchy();
|
|
|
| - if (bfs_order == BFS_FIRST)
|
| - UnregisterBFS();
|
| }
|
|
|
| -INSTANTIATE_TEST_CASE_P(
|
| - SurfaceManagerOrderingParamTestInstantiation,
|
| - SurfaceManagerOrderingParamTest,
|
| - ::testing::Combine(::testing::ValuesIn(kRegisterOrderList),
|
| - ::testing::ValuesIn(kUnregisterOrderList),
|
| - ::testing::ValuesIn(kBFSOrderList)));
|
| +INSTANTIATE_TEST_CASE_P(SurfaceManagerOrderingParamTestInstantiation,
|
| + SurfaceManagerOrderingParamTest,
|
| + ::testing::ValuesIn(kBFSOrderList));
|
|
|
| } // namespace cc
|
|
|