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: mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc

Issue 316083002: Add support for multiple roots to the client lib. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 6 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
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

Powered by Google App Engine
This is Rietveld 408576698