| Index: mojo/services/view_manager/view_manager_connection_unittest.cc
|
| diff --git a/mojo/services/view_manager/view_manager_connection_unittest.cc b/mojo/services/view_manager/view_manager_connection_unittest.cc
|
| index 4f5d1c92dd02bdad92afaebbb57c0c287d169d0a..d9280d8ca3c6d894d17ff743fab9598a98a63a6b 100644
|
| --- a/mojo/services/view_manager/view_manager_connection_unittest.cc
|
| +++ b/mojo/services/view_manager/view_manager_connection_unittest.cc
|
| @@ -22,6 +22,7 @@
|
| #include "mojo/services/public/cpp/view_manager/util.h"
|
| #include "mojo/services/public/cpp/view_manager/view_manager_types.h"
|
| #include "mojo/services/public/interfaces/view_manager/view_manager.mojom.h"
|
| +#include "mojo/services/view_manager/ids.h"
|
| #include "mojo/services/view_manager/test_change_tracker.h"
|
| #include "mojo/shell/shell_test_helper.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -112,6 +113,19 @@ class ViewManagerProxy : public TestChangeTracker::Delegate {
|
| RunMainLoop();
|
| return result;
|
| }
|
| + bool ReorderNode(Id node_id,
|
| + Id relative_node_id,
|
| + OrderDirection direction,
|
| + Id server_change_id) {
|
| + changes_.clear();
|
| + bool result = false;
|
| + view_manager_->ReorderNode(node_id, relative_node_id, direction,
|
| + server_change_id,
|
| + base::Bind(&ViewManagerProxy::GotResult,
|
| + base::Unretained(this), &result));
|
| + RunMainLoop();
|
| + return result;
|
| + }
|
| bool SetView(Id node_id, Id view_id) {
|
| changes_.clear();
|
| bool result = false;
|
| @@ -305,6 +319,13 @@ class TestViewManagerClientConnection
|
| tracker_.OnNodeHierarchyChanged(node, new_parent, old_parent,
|
| server_change_id, nodes.Pass());
|
| }
|
| + virtual void OnNodeReordered(Id node_id,
|
| + Id relative_node_id,
|
| + OrderDirection direction,
|
| + Id server_change_id) OVERRIDE {
|
| + tracker_.OnNodeReordered(node_id, relative_node_id, direction,
|
| + server_change_id);
|
| + }
|
| virtual void OnNodeDeleted(Id node, Id server_change_id) OVERRIDE {
|
| tracker_.OnNodeDeleted(node, server_change_id);
|
| }
|
| @@ -758,6 +779,84 @@ TEST_F(ViewManagerConnectionTest, NodeHierarchyChangedAddingKnownToUnknown) {
|
| }
|
| }
|
|
|
| +TEST_F(ViewManagerConnectionTest, ReorderNode) {
|
| + Id node1_id = BuildNodeId(1, 1);
|
| + Id node2_id = BuildNodeId(1, 2);
|
| + Id node3_id = BuildNodeId(1, 3);
|
| + Id node4_id = BuildNodeId(1, 4); // Peer to 1,1
|
| + Id node5_id = BuildNodeId(1, 5); // Peer to 1,1
|
| + Id node6_id = BuildNodeId(1, 6); // Child of 1,2.
|
| + Id node7_id = BuildNodeId(1, 7); // Unparented.
|
| + Id node8_id = BuildNodeId(1, 8); // Unparented.
|
| + ASSERT_TRUE(connection_->CreateNode(node1_id));
|
| + ASSERT_TRUE(connection_->CreateNode(node2_id));
|
| + ASSERT_TRUE(connection_->CreateNode(node3_id));
|
| + ASSERT_TRUE(connection_->CreateNode(node4_id));
|
| + ASSERT_TRUE(connection_->CreateNode(node5_id));
|
| + ASSERT_TRUE(connection_->CreateNode(node6_id));
|
| + ASSERT_TRUE(connection_->CreateNode(node7_id));
|
| + ASSERT_TRUE(connection_->CreateNode(node8_id));
|
| + ASSERT_TRUE(connection_->AddNode(node1_id, node2_id, 1));
|
| + ASSERT_TRUE(connection_->AddNode(node2_id, node6_id, 2));
|
| + ASSERT_TRUE(connection_->AddNode(node1_id, node3_id, 3));
|
| + ASSERT_TRUE(connection_->AddNode(
|
| + NodeIdToTransportId(RootNodeId()), node4_id, 4));
|
| + ASSERT_TRUE(connection_->AddNode(
|
| + NodeIdToTransportId(RootNodeId()), node5_id, 5));
|
| +
|
| + ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false));
|
| +
|
| + {
|
| + connection_->ReorderNode(node2_id, node3_id, ORDER_ABOVE, 6);
|
| +
|
| + connection2_->DoRunLoopUntilChangesCount(1);
|
| + const Changes changes(ChangesToDescription1(connection2_->changes()));
|
| + ASSERT_EQ(1u, changes.size());
|
| + EXPECT_EQ(
|
| + "Reordered change_id=6 node=1,2 relative=1,3 direction=above",
|
| + changes[0]);
|
| + }
|
| +
|
| + {
|
| + connection_->ReorderNode(node2_id, node3_id, ORDER_BELOW, 7);
|
| +
|
| + connection2_->DoRunLoopUntilChangesCount(1);
|
| + const Changes changes(ChangesToDescription1(connection2_->changes()));
|
| + ASSERT_EQ(1u, changes.size());
|
| + EXPECT_EQ(
|
| + "Reordered change_id=7 node=1,2 relative=1,3 direction=below",
|
| + changes[0]);
|
| + }
|
| +
|
| + {
|
| + // node2 is already below node3.
|
| + EXPECT_FALSE(connection_->ReorderNode(node2_id, node3_id, ORDER_BELOW, 8));
|
| + }
|
| +
|
| + {
|
| + // node4 & 5 are unknown to connection2_.
|
| + EXPECT_FALSE(connection2_->ReorderNode(node4_id, node5_id, ORDER_ABOVE, 8));
|
| + }
|
| +
|
| + {
|
| + // node6 & node3 have different parents.
|
| + EXPECT_FALSE(connection_->ReorderNode(node3_id, node6_id, ORDER_ABOVE, 8));
|
| + }
|
| +
|
| + {
|
| + // Non-existent node-ids
|
| + EXPECT_FALSE(connection_->ReorderNode(BuildNodeId(1, 27),
|
| + BuildNodeId(1, 28),
|
| + ORDER_ABOVE,
|
| + 8));
|
| + }
|
| +
|
| + {
|
| + // node7 & node8 are un-parented.
|
| + EXPECT_FALSE(connection_->ReorderNode(node7_id, node8_id, ORDER_ABOVE, 8));
|
| + }
|
| +}
|
| +
|
| // Verifies DeleteNode works.
|
| TEST_F(ViewManagerConnectionTest, DeleteNode) {
|
| ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2)));
|
|
|