| Index: mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc
|
| diff --git a/mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc b/mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc
|
| index 6ce1b20746e9592a3ce84f0f3efc2073eb8fc91b..51a65d8c83ecaa4d151974555e5b1a85b5026dbb 100644
|
| --- a/mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc
|
| +++ b/mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc
|
| @@ -23,8 +23,8 @@ namespace mojo {
|
| namespace view_manager {
|
| namespace {
|
|
|
| -const char kTestServiceURL[] = "mojo:test_url";
|
| -const char kTestServiceURL2[] = "mojo:test_url2";
|
| +const char kWindowManagerURL[] = "mojo:window_manager";
|
| +const char kEmbeddedApp1URL[] = "mojo:embedded_app_1";
|
|
|
| base::RunLoop* current_run_loop = NULL;
|
|
|
| @@ -304,7 +304,7 @@ class ViewManagerTest : public testing::Test {
|
| // Embeds another version of the test app @ node.
|
| ViewManager* Embed(ViewManager* view_manager, ViewTreeNode* node) {
|
| DCHECK_EQ(view_manager, ViewTreeNodePrivate(node).view_manager());
|
| - view_manager->Embed(kTestServiceURL2, node);
|
| + node->Embed(kEmbeddedApp1URL);
|
| RunRunLoop();
|
| return GetLoadedViewManager();
|
| }
|
| @@ -327,23 +327,22 @@ class ViewManagerTest : public testing::Test {
|
| private:
|
| // Overridden from testing::Test:
|
| virtual void SetUp() OVERRIDE {
|
| + base::Callback<void(ViewManager*)> ready_callback =
|
| + base::Bind(&ViewManagerTest::OnViewManagerLoaded,
|
| + base::Unretained(this));
|
| test_helper_.Init();
|
| test_helper_.SetLoaderForURL(
|
| - scoped_ptr<ServiceLoader>(new ConnectServiceLoader(
|
| - base::Bind(&ViewManagerTest::OnViewManagerLoaded,
|
| - base::Unretained(this)))),
|
| - GURL(kTestServiceURL));
|
| + scoped_ptr<ServiceLoader>(new ConnectServiceLoader(ready_callback)),
|
| + GURL(kWindowManagerURL));
|
| test_helper_.SetLoaderForURL(
|
| - scoped_ptr<ServiceLoader>(new ConnectServiceLoader(
|
| - base::Bind(&ViewManagerTest::OnViewManagerLoaded,
|
| - base::Unretained(this)))),
|
| - GURL(kTestServiceURL2));
|
| + scoped_ptr<ServiceLoader>(new ConnectServiceLoader(ready_callback)),
|
| + GURL(kEmbeddedApp1URL));
|
|
|
| ConnectToService(test_helper_.service_provider(),
|
| "mojo:mojo_view_manager",
|
| &view_manager_init_);
|
| ASSERT_TRUE(ViewManagerInitConnect(view_manager_init_.get(),
|
| - kTestServiceURL));
|
| + kWindowManagerURL));
|
| }
|
|
|
| void ViewManagerInitConnectCallback(bool* result_cache,
|
| @@ -393,9 +392,13 @@ TEST_F(ViewManagerTest, SetUp) {}
|
|
|
| TEST_F(ViewManagerTest, Embed) {
|
| ViewTreeNode* node = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node);
|
| + window_manager()->roots().front()->AddChild(node);
|
| ViewManager* embedded = Embed(window_manager(), node);
|
| EXPECT_TRUE(NULL != embedded);
|
| +
|
| + ViewTreeNode* node_in_embedded = embedded->roots().front();
|
| + EXPECT_EQ(node->parent(), window_manager()->roots().front());
|
| + EXPECT_EQ(NULL, node_in_embedded->parent());
|
| }
|
|
|
| // When Window Manager embeds A @ N, then creates N2 and parents to N, N becomes
|
| @@ -403,12 +406,12 @@ TEST_F(ViewManagerTest, Embed) {
|
| // TODO(beng): verify whether or not this is a policy we like.
|
| TEST_F(ViewManagerTest, HierarchyChanged_NodeAdded) {
|
| ViewTreeNode* node = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node);
|
| + window_manager()->roots().front()->AddChild(node);
|
| ViewManager* embedded = Embed(window_manager(), node);
|
| ViewTreeNode* nested = ViewTreeNode::Create(window_manager());
|
| node->AddChild(nested);
|
| - WaitForTreeSizeToMatch(embedded->tree(), 2);
|
| - EXPECT_EQ(embedded->tree()->children().front()->id(), nested->id());
|
| + WaitForTreeSizeToMatch(embedded->roots().front(), 2);
|
| + EXPECT_EQ(embedded->roots().front()->children().front()->id(), nested->id());
|
| }
|
|
|
| // Window manager has two nodes, N1 & N2. Embeds A at N1. Creates node N21,
|
| @@ -416,25 +419,25 @@ TEST_F(ViewManagerTest, HierarchyChanged_NodeAdded) {
|
| // TODO(beng): verify whether or not this is a policy we like.
|
| TEST_F(ViewManagerTest, HierarchyChanged_NodeMoved) {
|
| ViewTreeNode* node1 = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node1);
|
| + window_manager()->roots().front()->AddChild(node1);
|
| ViewManager* embedded = Embed(window_manager(), node1);
|
| - WaitForTreeSizeToMatch(embedded->tree(), 1);
|
| + WaitForTreeSizeToMatch(embedded->roots().front(), 1);
|
|
|
| ViewTreeNode* node2 = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node2);
|
| - WaitForTreeSizeToMatch(embedded->tree(), 1);
|
| - EXPECT_TRUE(embedded->tree()->children().empty());
|
| + window_manager()->roots().front()->AddChild(node2);
|
| + WaitForTreeSizeToMatch(embedded->roots().front(), 1);
|
| + EXPECT_TRUE(embedded->roots().front()->children().empty());
|
|
|
| ViewTreeNode* node21 = ViewTreeNode::Create(window_manager());
|
| node2->AddChild(node21);
|
| - WaitForTreeSizeToMatch(embedded->tree(), 1);
|
| - EXPECT_TRUE(embedded->tree()->children().empty());
|
| + WaitForTreeSizeToMatch(embedded->roots().front(), 1);
|
| + EXPECT_TRUE(embedded->roots().front()->children().empty());
|
|
|
| // Makes node21 visible to |embedded|.
|
| node1->AddChild(node21);
|
| - WaitForTreeSizeToMatch(embedded->tree(), 2);
|
| - EXPECT_FALSE(embedded->tree()->children().empty());
|
| - EXPECT_EQ(embedded->tree()->children().front()->id(), node21->id());
|
| + WaitForTreeSizeToMatch(embedded->roots().front(), 2);
|
| + EXPECT_FALSE(embedded->roots().front()->children().empty());
|
| + EXPECT_EQ(embedded->roots().front()->children().front()->id(), node21->id());
|
| }
|
|
|
| // Window manager has two nodes, N1 and N11. Embeds A at N1. Removes N11 from
|
| @@ -442,16 +445,16 @@ TEST_F(ViewManagerTest, HierarchyChanged_NodeMoved) {
|
| // TODO(beng): verify whether or not this is a policy we like.
|
| TEST_F(ViewManagerTest, HierarchyChanged_NodeRemoved) {
|
| ViewTreeNode* node = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node);
|
| + window_manager()->roots().front()->AddChild(node);
|
| ViewTreeNode* nested = ViewTreeNode::Create(window_manager());
|
| node->AddChild(nested);
|
|
|
| ViewManager* embedded = Embed(window_manager(), node);
|
| - EXPECT_EQ(embedded->tree()->children().front()->id(), nested->id());
|
| + EXPECT_EQ(embedded->roots().front()->children().front()->id(), nested->id());
|
|
|
| node->RemoveChild(nested);
|
| - WaitForTreeSizeToMatch(embedded->tree(), 1);
|
| - EXPECT_TRUE(embedded->tree()->children().empty());
|
| + WaitForTreeSizeToMatch(embedded->roots().front(), 1);
|
| + EXPECT_TRUE(embedded->roots().front()->children().empty());
|
| }
|
|
|
| // Window manager has two nodes, N1 and N11. Embeds A at N1. Destroys N11.
|
| @@ -459,12 +462,12 @@ TEST_F(ViewManagerTest, HierarchyChanged_NodeRemoved) {
|
| // TODO(beng): verify whether or not this is a policy we like.
|
| TEST_F(ViewManagerTest, NodeDestroyed) {
|
| ViewTreeNode* node = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node);
|
| + window_manager()->roots().front()->AddChild(node);
|
| ViewTreeNode* nested = ViewTreeNode::Create(window_manager());
|
| node->AddChild(nested);
|
|
|
| ViewManager* embedded = Embed(window_manager(), node);
|
| - EXPECT_EQ(embedded->tree()->children().front()->id(), nested->id());
|
| + EXPECT_EQ(embedded->roots().front()->children().front()->id(), nested->id());
|
|
|
| // |nested| will be deleted after calling Destroy() below.
|
| TransportNodeId id = nested->id();
|
| @@ -474,29 +477,29 @@ TEST_F(ViewManagerTest, NodeDestroyed) {
|
| nodes.insert(id);
|
| WaitForDestruction(embedded, &nodes, NULL);
|
|
|
| - EXPECT_TRUE(embedded->tree()->children().empty());
|
| + EXPECT_TRUE(embedded->roots().front()->children().empty());
|
| EXPECT_EQ(NULL, embedded->GetNodeById(id));
|
| }
|
|
|
| TEST_F(ViewManagerTest, ViewManagerDestroyed_CleanupNode) {
|
| ViewTreeNode* node = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node);
|
| + window_manager()->roots().front()->AddChild(node);
|
| ViewManager* embedded = Embed(window_manager(), node);
|
|
|
| TransportNodeId node_id = node->id();
|
|
|
| - UnloadApplication(GURL(kTestServiceURL));
|
| + UnloadApplication(GURL(kWindowManagerURL));
|
|
|
| std::set<TransportNodeId> nodes;
|
| nodes.insert(node_id);
|
| WaitForDestruction(embedded, &nodes, NULL);
|
|
|
| - EXPECT_EQ(NULL, embedded->tree());
|
| + EXPECT_TRUE(embedded->roots().empty());
|
| }
|
|
|
| TEST_F(ViewManagerTest, SetActiveView) {
|
| ViewTreeNode* node = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node);
|
| + window_manager()->roots().front()->AddChild(node);
|
| ViewManager* embedded = Embed(window_manager(), node);
|
|
|
| View* view = View::Create(window_manager());
|
| @@ -510,7 +513,7 @@ TEST_F(ViewManagerTest, SetActiveView) {
|
|
|
| TEST_F(ViewManagerTest, DestroyView) {
|
| ViewTreeNode* node = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node);
|
| + window_manager()->roots().front()->AddChild(node);
|
| ViewManager* embedded = Embed(window_manager(), node);
|
|
|
| View* view = View::Create(window_manager());
|
| @@ -535,7 +538,7 @@ TEST_F(ViewManagerTest, DestroyView) {
|
| // node and view disappearing from all connections that see them.
|
| TEST_F(ViewManagerTest, ViewManagerDestroyed_CleanupNodeAndView) {
|
| ViewTreeNode* node = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node);
|
| + window_manager()->roots().front()->AddChild(node);
|
| View* view = View::Create(window_manager());
|
| node->SetActiveView(view);
|
| ViewManager* embedded = Embed(window_manager(), node);
|
| @@ -543,7 +546,7 @@ TEST_F(ViewManagerTest, ViewManagerDestroyed_CleanupNodeAndView) {
|
| TransportNodeId node_id = node->id();
|
| TransportViewId view_id = view->id();
|
|
|
| - UnloadApplication(GURL(kTestServiceURL));
|
| + UnloadApplication(GURL(kWindowManagerURL));
|
|
|
| std::set<TransportNodeId> observed_nodes;
|
| observed_nodes.insert(node_id);
|
| @@ -551,7 +554,7 @@ TEST_F(ViewManagerTest, ViewManagerDestroyed_CleanupNodeAndView) {
|
| observed_views.insert(view_id);
|
| WaitForDestruction(embedded, &observed_nodes, &observed_views);
|
|
|
| - EXPECT_EQ(NULL, embedded->tree());
|
| + EXPECT_TRUE(embedded->roots().empty());
|
| EXPECT_EQ(NULL, embedded->GetNodeById(node_id));
|
| EXPECT_EQ(NULL, embedded->GetViewById(view_id));
|
| }
|
| @@ -565,7 +568,7 @@ TEST_F(ViewManagerTest, ViewManagerDestroyed_CleanupNodeAndView) {
|
| TEST_F(ViewManagerTest,
|
| ViewManagerDestroyed_CleanupNodeAndViewFromDifferentConnections) {
|
| ViewTreeNode* node = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node);
|
| + window_manager()->roots().front()->AddChild(node);
|
| ViewManager* embedded = Embed(window_manager(), node);
|
| View* view_in_embedded = View::Create(embedded);
|
| ViewTreeNode* node_in_embedded = embedded->GetNodeById(node->id());
|
| @@ -576,12 +579,12 @@ TEST_F(ViewManagerTest,
|
| TransportNodeId node_id = node->id();
|
| TransportViewId view_id = view_in_embedded->id();
|
|
|
| - UnloadApplication(GURL(kTestServiceURL));
|
| + UnloadApplication(GURL(kWindowManagerURL));
|
| std::set<TransportNodeId> nodes;
|
| nodes.insert(node_id);
|
| WaitForDestruction(embedded, &nodes, NULL);
|
|
|
| - EXPECT_EQ(NULL, embedded->tree());
|
| + EXPECT_TRUE(embedded->roots().empty());
|
| // node was owned by the window manager, so it should be gone.
|
| EXPECT_EQ(NULL, embedded->GetNodeById(node_id));
|
| // view_in_embedded was owned by the embedded app, so it should still exist,
|
| @@ -596,7 +599,7 @@ TEST_F(ViewManagerTest,
|
| // Contains().
|
| TEST_F(ViewManagerTest, SetActiveViewAcrossConnection) {
|
| ViewTreeNode* node = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node);
|
| + window_manager()->roots().front()->AddChild(node);
|
| ViewManager* embedded = Embed(window_manager(), node);
|
|
|
| View* view_in_embedded = View::Create(embedded);
|
| @@ -608,7 +611,7 @@ TEST_F(ViewManagerTest, SetActiveViewAcrossConnection) {
|
| // attached.
|
| TEST_F(ViewManagerTest, MapSubtreeOnAttach) {
|
| ViewTreeNode* node = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node);
|
| + window_manager()->roots().front()->AddChild(node);
|
| ViewManager* embedded = Embed(window_manager(), node);
|
|
|
| // Create a subtree private to the window manager and make some changes to it.
|
| @@ -624,7 +627,7 @@ TEST_F(ViewManagerTest, MapSubtreeOnAttach) {
|
| // When added to the shared node, the entire hierarchy and all property
|
| // changes should become visible to the embedded app.
|
| node->AddChild(child1);
|
| - WaitForTreeSizeToMatch(embedded->tree(), 3);
|
| + WaitForTreeSizeToMatch(embedded->roots().front(), 3);
|
|
|
| ViewTreeNode* child11_in_embedded = embedded->GetNodeById(child11->id());
|
| View* view11_in_embedded = embedded->GetViewById(view11->id());
|
| @@ -637,7 +640,7 @@ TEST_F(ViewManagerTest, MapSubtreeOnAttach) {
|
| // are reflected to another.
|
| TEST_F(ViewManagerTest, SetBounds) {
|
| ViewTreeNode* node = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node);
|
| + window_manager()->roots().front()->AddChild(node);
|
| ViewManager* embedded = Embed(window_manager(), node);
|
|
|
| ViewTreeNode* node_in_embedded = embedded->GetNodeById(node->id());
|
| @@ -653,7 +656,7 @@ TEST_F(ViewManagerTest, SetBounds) {
|
| // connection are refused.
|
| TEST_F(ViewManagerTest, SetBoundsSecurity) {
|
| ViewTreeNode* node = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node);
|
| + window_manager()->roots().front()->AddChild(node);
|
| ViewManager* embedded = Embed(window_manager(), node);
|
|
|
| ViewTreeNode* node_in_embedded = embedded->GetNodeById(node->id());
|
| @@ -668,7 +671,7 @@ TEST_F(ViewManagerTest, SetBoundsSecurity) {
|
| // Verifies that a node can only be destroyed by the connection that created it.
|
| TEST_F(ViewManagerTest, DestroySecurity) {
|
| ViewTreeNode* node = ViewTreeNode::Create(window_manager());
|
| - window_manager()->tree()->AddChild(node);
|
| + window_manager()->roots().front()->AddChild(node);
|
| ViewManager* embedded = Embed(window_manager(), node);
|
|
|
| ViewTreeNode* node_in_embedded = embedded->GetNodeById(node->id());
|
| @@ -683,5 +686,15 @@ TEST_F(ViewManagerTest, DestroySecurity) {
|
| EXPECT_FALSE(tracker1.is_valid());
|
| }
|
|
|
| +TEST_F(ViewManagerTest, MultiRoots) {
|
| + ViewTreeNode* node1 = ViewTreeNode::Create(window_manager());
|
| + window_manager()->roots().front()->AddChild(node1);
|
| + ViewTreeNode* node2 = ViewTreeNode::Create(window_manager());
|
| + window_manager()->roots().front()->AddChild(node2);
|
| + ViewManager* embedded1 = Embed(window_manager(), node1);
|
| + ViewManager* embedded2 = Embed(window_manager(), node2);
|
| + EXPECT_EQ(embedded1, embedded2);
|
| +}
|
| +
|
| } // namespace view_manager
|
| } // namespace mojo
|
|
|