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 7c70b456993dd50566a4b124c6f19a0c547a172b..e69be9c6b13263b339c4efc4e229399ad2f32bea 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 |
@@ -4,6 +4,7 @@ |
#include "mojo/services/public/cpp/view_manager/view_manager.h" |
+#include "base/auto_reset.h" |
#include "base/bind.h" |
#include "base/logging.h" |
#include "mojo/public/cpp/application/application.h" |
@@ -23,6 +24,7 @@ namespace view_manager { |
namespace { |
const char kTestServiceURL[] = "mojo:test_url"; |
+const char kTestServiceURL2[] = "mojo:test_url2"; |
base::RunLoop* current_run_loop = NULL; |
@@ -150,8 +152,6 @@ class TreeSizeMatchesObserver : public ViewTreeNodeObserver { |
private: |
// Overridden from ViewTreeNodeObserver: |
virtual void OnTreeChange(const TreeChangeParams& params) OVERRIDE { |
- if (params.phase != ViewTreeNodeObserver::DISPOSITION_CHANGED) |
- return; |
if (IsTreeCorrectSize()) |
QuitRunLoop(); |
} |
@@ -166,6 +166,7 @@ class TreeSizeMatchesObserver : public ViewTreeNodeObserver { |
ViewTreeNode* tree_; |
size_t tree_size_; |
+ |
DISALLOW_COPY_AND_ASSIGN(TreeSizeMatchesObserver); |
}; |
@@ -286,11 +287,14 @@ class NodeTracker : public ViewTreeNodeObserver { |
class ViewManagerTest : public testing::Test { |
public: |
- ViewManagerTest() : commit_count_(0) {} |
+ ViewManagerTest() |
+ : connect_loop_(NULL), |
+ loaded_view_manager_(NULL), |
+ window_manager_(NULL), |
+ commit_count_(0) {} |
protected: |
- ViewManager* view_manager_1() { return view_manager_1_; } |
- ViewManager* view_manager_2() { return view_manager_2_; } |
+ ViewManager* window_manager() { return window_manager_; } |
ViewTreeNode* CreateNodeInParent(ViewTreeNode* parent) { |
ViewManager* parent_manager = ViewTreeNodePrivate(parent).view_manager(); |
@@ -299,21 +303,39 @@ class ViewManagerTest : public testing::Test { |
return node; |
} |
- void DestroyViewManager1() { |
- // view_manager_1_.reset(); |
+ // 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); |
+ RunRunLoop(); |
+ return GetLoadedViewManager(); |
+ } |
+ |
+ // TODO(beng): remove these methods once all the tests are migrated. |
+ void DestroyViewManager1() {} |
+ ViewManager* view_manager_1() { return NULL; } |
+ ViewManager* view_manager_2() { return NULL; } |
+ |
+ ViewManager* GetLoadedViewManager() { |
+ ViewManager* view_manager = loaded_view_manager_; |
+ loaded_view_manager_ = NULL; |
+ return view_manager; |
} |
private: |
// Overridden from testing::Test: |
virtual void SetUp() OVERRIDE { |
test_helper_.Init(); |
- ConnectServiceLoader* loader = |
- new ConnectServiceLoader( |
- base::Bind(&ViewManagerTest::OnViewManagerLoaded, |
- base::Unretained(this))); |
test_helper_.SetLoaderForURL( |
- scoped_ptr<ServiceLoader>(loader), |
+ scoped_ptr<ServiceLoader>(new ConnectServiceLoader( |
+ base::Bind(&ViewManagerTest::OnViewManagerLoaded, |
+ base::Unretained(this)))), |
GURL(kTestServiceURL)); |
+ test_helper_.SetLoaderForURL( |
+ scoped_ptr<ServiceLoader>(new ConnectServiceLoader( |
+ base::Bind(&ViewManagerTest::OnViewManagerLoaded, |
+ base::Unretained(this)))), |
+ GURL(kTestServiceURL2)); |
ConnectToService(test_helper_.service_provider(), |
"mojo:mojo_view_manager", |
@@ -334,187 +356,127 @@ class ViewManagerTest : public testing::Test { |
url, |
base::Bind(&ViewManagerTest::ViewManagerInitConnectCallback, |
base::Unretained(this), &result)); |
- init_loop_.Run(); |
+ RunRunLoop(); |
+ window_manager_ = GetLoadedViewManager(); |
return result; |
} |
void OnViewManagerLoaded(ViewManager* view_manager) { |
- init_loop_.Quit(); |
+ loaded_view_manager_ = view_manager; |
+ connect_loop_->Quit(); |
+ } |
+ |
+ void RunRunLoop() { |
+ base::RunLoop run_loop; |
+ connect_loop_ = &run_loop; |
+ connect_loop_->Run(); |
+ connect_loop_ = NULL; |
} |
base::MessageLoop loop_; |
- base::RunLoop init_loop_; |
+ base::RunLoop* connect_loop_; |
shell::ShellTestHelper test_helper_; |
IViewManagerInitPtr view_manager_init_; |
- ViewManager* view_manager_1_; |
- ViewManager* view_manager_2_; |
+ // Used to receive the most recent view manager loaded by an embed action. |
+ ViewManager* loaded_view_manager_; |
+ // The View Manager connection held by the window manager (app running at the |
+ // root node). |
+ ViewManager* window_manager_; |
int commit_count_; |
DISALLOW_COPY_AND_ASSIGN(ViewManagerTest); |
}; |
-// Base class for helpers that quit the current runloop after a specific tree |
-// change is observed by a view manager. |
-class TreeObserverBase : public ViewTreeNodeObserver { |
- public: |
- explicit TreeObserverBase(ViewManager* view_manager) |
- : view_manager_(view_manager) { |
- view_manager_->tree()->AddObserver(this); |
- } |
- virtual ~TreeObserverBase() { |
- view_manager_->tree()->RemoveObserver(this); |
- } |
- |
- protected: |
- virtual bool ShouldQuitRunLoop(const TreeChangeParams& params) = 0; |
- |
- ViewManager* view_manager() { return view_manager_; } |
- |
- private: |
- // Overridden from ViewTreeNodeObserver: |
- virtual void OnTreeChange(const TreeChangeParams& params) OVERRIDE { |
- if (ShouldQuitRunLoop(params)) |
- QuitRunLoop(); |
- } |
- |
- ViewManager* view_manager_; |
- DISALLOW_COPY_AND_ASSIGN(TreeObserverBase); |
-}; |
+TEST_F(ViewManagerTest, SetUp) {} |
-class HierarchyChanged_NodeCreatedObserver : public TreeObserverBase { |
- public: |
- explicit HierarchyChanged_NodeCreatedObserver(ViewManager* view_manager) |
- : TreeObserverBase(view_manager) {} |
- virtual ~HierarchyChanged_NodeCreatedObserver() {} |
- |
- private: |
- // Overridden from TreeObserverBase: |
- virtual bool ShouldQuitRunLoop(const TreeChangeParams& params) OVERRIDE { |
- if (params.phase != ViewTreeNodeObserver::DISPOSITION_CHANGED) |
- return false; |
- return params.receiver == view_manager()->tree() && |
- !params.old_parent && |
- params.new_parent == view_manager()->tree(); |
- } |
- |
- DISALLOW_COPY_AND_ASSIGN(HierarchyChanged_NodeCreatedObserver); |
-}; |
- |
-// TODO(beng): reenable these once converted to new way of connecting. |
- |
-TEST_F(ViewManagerTest, SetUp) { |
+TEST_F(ViewManagerTest, Embed) { |
+ ViewTreeNode* node = ViewTreeNode::Create(window_manager()); |
+ window_manager()->tree()->AddChild(node); |
+ ViewManager* embedded = Embed(window_manager(), node); |
+ EXPECT_TRUE(NULL != embedded); |
} |
-TEST_F(ViewManagerTest, DISABLED_HierarchyChanged_NodeCreated) { |
- HierarchyChanged_NodeCreatedObserver observer(view_manager_2()); |
- ViewTreeNode* node1 = ViewTreeNode::Create(view_manager_1()); |
- view_manager_1()->tree()->AddChild(node1); |
- DoRunLoop(); |
- |
- EXPECT_EQ(view_manager_2()->tree()->children().front()->id(), node1->id()); |
+// When Window Manager embeds A @ N, then creates N2 and parents to N, N becomes |
+// visible to A. |
+// 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); |
+ 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()); |
} |
-// Quits the current runloop when the root is notified about a node moved from |
-// |old_parent_id| to |new_parent_id|. |
-class HierarchyChanged_NodeMovedObserver : public TreeObserverBase { |
- public: |
- HierarchyChanged_NodeMovedObserver(ViewManager* view_manager, |
- TransportNodeId old_parent_id, |
- TransportNodeId new_parent_id) |
- : TreeObserverBase(view_manager), |
- old_parent_id_(old_parent_id), |
- new_parent_id_(new_parent_id) {} |
- virtual ~HierarchyChanged_NodeMovedObserver() {} |
- |
- private: |
- // Overridden from TreeObserverBase: |
- virtual bool ShouldQuitRunLoop(const TreeChangeParams& params) OVERRIDE { |
- if (params.phase != ViewTreeNodeObserver::DISPOSITION_CHANGED) |
- return false; |
- return params.receiver == view_manager()->tree() && |
- params.old_parent->id() == old_parent_id_&& |
- params.new_parent->id() == new_parent_id_; |
- } |
- |
- TransportNodeId old_parent_id_; |
- TransportNodeId new_parent_id_; |
- |
- DISALLOW_COPY_AND_ASSIGN(HierarchyChanged_NodeMovedObserver); |
-}; |
- |
-TEST_F(ViewManagerTest, DISABLED_HierarchyChanged_NodeMoved) { |
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); |
- ViewTreeNode* node2 = CreateNodeInParent(view_manager_1()->tree()); |
- ViewTreeNode* node21 = CreateNodeInParent(node2); |
- WaitForTreeSizeToMatch(view_manager_2()->tree(), 4); |
- |
- HierarchyChanged_NodeMovedObserver observer(view_manager_2(), |
- node2->id(), |
- node1->id()); |
- |
+// Window manager has two nodes, N1 & N2. Embeds A at N1. Creates node N21, |
+// a child of N2. Reparents N2 to N1. N1 should become visible to A. |
+// 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); |
+ ViewManager* embedded = Embed(window_manager(), node1); |
+ WaitForTreeSizeToMatch(embedded->tree(), 1); |
+ |
+ ViewTreeNode* node2 = ViewTreeNode::Create(window_manager()); |
+ window_manager()->tree()->AddChild(node2); |
+ WaitForTreeSizeToMatch(embedded->tree(), 1); |
+ EXPECT_TRUE(embedded->tree()->children().empty()); |
+ |
+ ViewTreeNode* node21 = ViewTreeNode::Create(window_manager()); |
+ node2->AddChild(node21); |
+ WaitForTreeSizeToMatch(embedded->tree(), 1); |
+ EXPECT_TRUE(embedded->tree()->children().empty()); |
+ |
+ // Makes node21 visible to |embedded|. |
node1->AddChild(node21); |
- DoRunLoop(); |
- |
- ViewTreeNode* tree2 = view_manager_2()->tree(); |
- |
- EXPECT_EQ(tree2->children().size(), 2u); |
- ViewTreeNode* tree2_node1 = tree2->GetChildById(node1->id()); |
- EXPECT_EQ(tree2_node1->children().size(), 1u); |
- ViewTreeNode* tree2_node2 = tree2->GetChildById(node2->id()); |
- EXPECT_TRUE(tree2_node2->children().empty()); |
- ViewTreeNode* tree2_node21 = tree2->GetChildById(node21->id()); |
- EXPECT_EQ(tree2_node21->parent(), tree2_node1); |
+ WaitForTreeSizeToMatch(embedded->tree(), 2); |
+ EXPECT_FALSE(embedded->tree()->children().empty()); |
+ EXPECT_EQ(embedded->tree()->children().front()->id(), node21->id()); |
} |
-class HierarchyChanged_NodeRemovedObserver : public TreeObserverBase { |
- public: |
- HierarchyChanged_NodeRemovedObserver(ViewManager* view_manager) |
- : TreeObserverBase(view_manager) {} |
- virtual ~HierarchyChanged_NodeRemovedObserver() {} |
- |
- private: |
- // Overridden from TreeObserverBase: |
- virtual bool ShouldQuitRunLoop(const TreeChangeParams& params) OVERRIDE { |
- if (params.phase != ViewTreeNodeObserver::DISPOSITION_CHANGING) |
- return false; |
- return params.receiver == view_manager()->tree() && |
- params.old_parent->id() == params.receiver->id() && |
- params.new_parent == 0; |
- } |
- |
- DISALLOW_COPY_AND_ASSIGN(HierarchyChanged_NodeRemovedObserver); |
-}; |
- |
-TEST_F(ViewManagerTest, DISABLED_HierarchyChanged_NodeRemoved) { |
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); |
- WaitForTreeSizeToMatch(view_manager_2()->tree(), 2); |
- |
- HierarchyChanged_NodeRemovedObserver observer(view_manager_2()); |
- |
- view_manager_1()->tree()->RemoveChild(node1); |
- DoRunLoop(); |
- |
- ViewTreeNode* tree2 = view_manager_2()->tree(); |
- |
- EXPECT_TRUE(tree2->children().empty()); |
+// Window manager has two nodes, N1 and N11. Embeds A at N1. Removes N11 from |
+// N1. N11 should disappear from A. |
+// 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); |
+ ViewTreeNode* nested = ViewTreeNode::Create(window_manager()); |
+ node->AddChild(nested); |
+ |
+ ViewManager* embedded = Embed(window_manager(), node); |
+ EXPECT_EQ(embedded->tree()->children().front()->id(), nested->id()); |
+ |
+ node->RemoveChild(nested); |
+ WaitForTreeSizeToMatch(embedded->tree(), 1); |
+ EXPECT_TRUE(embedded->tree()->children().empty()); |
} |
-TEST_F(ViewManagerTest, DISABLED_NodeDestroyed) { |
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); |
- WaitForTreeSizeToMatch(view_manager_2()->tree(), 2); |
+// Window manager has two nodes, N1 and N11. Embeds A at N1. Destroys N11. |
+// N11 should disappear from A. |
+// 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); |
+ ViewTreeNode* nested = ViewTreeNode::Create(window_manager()); |
+ node->AddChild(nested); |
- // |node1| will be deleted after calling Destroy() below. |
- TransportNodeId id = node1->id(); |
- node1->Destroy(); |
+ ViewManager* embedded = Embed(window_manager(), node); |
+ EXPECT_EQ(embedded->tree()->children().front()->id(), nested->id()); |
+ |
+ // |nested| will be deleted after calling Destroy() below. |
+ TransportNodeId id = nested->id(); |
+ nested->Destroy(); |
std::set<TransportNodeId> nodes; |
nodes.insert(id); |
- WaitForDestruction(view_manager_2(), &nodes, NULL); |
+ WaitForDestruction(embedded, &nodes, NULL); |
- EXPECT_TRUE(view_manager_2()->tree()->children().empty()); |
- EXPECT_EQ(NULL, view_manager_2()->GetNodeById(id)); |
+ EXPECT_TRUE(embedded->tree()->children().empty()); |
+ EXPECT_EQ(NULL, embedded->GetNodeById(id)); |
} |
+// TODO(beng): provide a way to terminate an application. |
TEST_F(ViewManagerTest, DISABLED_ViewManagerDestroyed_CleanupNode) { |
ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); |
WaitForTreeSizeToMatch(view_manager_2()->tree(), 2); |
@@ -529,37 +491,41 @@ TEST_F(ViewManagerTest, DISABLED_ViewManagerDestroyed_CleanupNode) { |
EXPECT_TRUE(view_manager_2()->tree()->children().empty()); |
} |
-TEST_F(ViewManagerTest, DISABLED_SetActiveView) { |
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); |
- WaitForTreeSizeToMatch(view_manager_2()->tree(), 2); |
+TEST_F(ViewManagerTest, SetActiveView) { |
+ ViewTreeNode* node = ViewTreeNode::Create(window_manager()); |
+ window_manager()->tree()->AddChild(node); |
+ ViewManager* embedded = Embed(window_manager(), node); |
- View* view1 = View::Create(view_manager_1()); |
- node1->SetActiveView(view1); |
+ View* view = View::Create(window_manager()); |
+ node->SetActiveView(view); |
- ViewTreeNode* node1_2 = view_manager_2()->tree()->GetChildById(node1->id()); |
- WaitForActiveViewToChange(node1_2); |
+ ViewTreeNode* node_in_embedded = embedded->GetNodeById(node->id()); |
+ WaitForActiveViewToChange(node_in_embedded); |
- EXPECT_EQ(node1_2->active_view()->id(), view1->id()); |
+ EXPECT_EQ(node_in_embedded->active_view()->id(), view->id()); |
} |
-TEST_F(ViewManagerTest, DISABLED_DestroyView) { |
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); |
- WaitForTreeSizeToMatch(view_manager_2()->tree(), 2); |
+TEST_F(ViewManagerTest, DestroyView) { |
+ ViewTreeNode* node = ViewTreeNode::Create(window_manager()); |
+ window_manager()->tree()->AddChild(node); |
+ ViewManager* embedded = Embed(window_manager(), node); |
- View* view1 = View::Create(view_manager_1()); |
- node1->SetActiveView(view1); |
+ View* view = View::Create(window_manager()); |
+ node->SetActiveView(view); |
- ViewTreeNode* node1_2 = view_manager_2()->tree()->GetChildById(node1->id()); |
- WaitForActiveViewToChange(node1_2); |
+ ViewTreeNode* node_in_embedded = embedded->GetNodeById(node->id()); |
+ WaitForActiveViewToChange(node_in_embedded); |
- TransportViewId view1_id = view1->id(); |
- view1->Destroy(); |
+ EXPECT_EQ(node_in_embedded->active_view()->id(), view->id()); |
+ |
+ TransportViewId view_id = view->id(); |
+ view->Destroy(); |
std::set<TransportViewId> views; |
- views.insert(view1_id); |
- WaitForDestruction(view_manager_2(), NULL, &views); |
- EXPECT_EQ(NULL, node1_2->active_view()); |
- EXPECT_EQ(NULL, view_manager_2()->GetViewById(view1_id)); |
+ views.insert(view_id); |
+ WaitForDestruction(embedded, NULL, &views); |
+ EXPECT_EQ(NULL, node_in_embedded->active_view()); |
+ EXPECT_EQ(NULL, embedded->GetViewById(view_id)); |
} |
// Destroying the connection that created a node and view should result in that |
@@ -629,78 +595,92 @@ TEST_F(ViewManagerTest, |
// defined in a different connection. |
// TODO(beng): write these tests for ViewTreeNode::AddChild(), RemoveChild() and |
// Contains(). |
-TEST_F(ViewManagerTest, DISABLED_SetActiveViewAcrossConnection) { |
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); |
- WaitForTreeSizeToMatch(view_manager_2()->tree(), 2); |
+TEST_F(ViewManagerTest, SetActiveViewAcrossConnection) { |
+ ViewTreeNode* node = ViewTreeNode::Create(window_manager()); |
+ window_manager()->tree()->AddChild(node); |
+ ViewManager* embedded = Embed(window_manager(), node); |
- View* view1_2 = View::Create(view_manager_2()); |
- EXPECT_DEATH(node1->SetActiveView(view1_2), ""); |
+ View* view_in_embedded = View::Create(embedded); |
+ EXPECT_DEATH(node->SetActiveView(view_in_embedded), ""); |
} |
// This test verifies that a node hierarchy constructed in one connection |
// becomes entirely visible to the second connection when the hierarchy is |
// attached. |
-TEST_F(ViewManagerTest, DISABLED_MapSubtreeOnAttach) { |
- ViewTreeNode* node1 = ViewTreeNode::Create(view_manager_1()); |
- ViewTreeNode* node11 = CreateNodeInParent(node1); |
- View* view11 = View::Create(view_manager_1()); |
- node11->SetActiveView(view11); |
- gfx::Rect node11_bounds(800, 600); |
- node11->SetBounds(node11_bounds); |
- WaitForAllChangesToBeAcked(view_manager_1()); |
- |
- // Now attach this node tree to the root & wait for it to show up in the |
- // second connection. |
- view_manager_1()->tree()->AddChild(node1); |
- WaitForTreeSizeToMatch(view_manager_2()->tree(), 3); |
- |
- ViewTreeNode* node11_2 = view_manager_2()->GetNodeById(node11->id()); |
- View* view11_2 = view_manager_2()->GetViewById(view11->id()); |
- EXPECT_TRUE(node11_2 != NULL); |
- EXPECT_EQ(view11_2, node11_2->active_view()); |
- EXPECT_EQ(node11_bounds, node11_2->bounds()); |
+TEST_F(ViewManagerTest, MapSubtreeOnAttach) { |
+ ViewTreeNode* node = ViewTreeNode::Create(window_manager()); |
+ window_manager()->tree()->AddChild(node); |
+ ViewManager* embedded = Embed(window_manager(), node); |
+ |
+ // Create a subtree private to the window manager and make some changes to it. |
+ ViewTreeNode* child1 = ViewTreeNode::Create(window_manager()); |
+ ViewTreeNode* child11 = ViewTreeNode::Create(window_manager()); |
+ child1->AddChild(child11); |
+ gfx::Rect child11_bounds(800, 600); |
+ child11->SetBounds(child11_bounds); |
+ View* view11 = View::Create(window_manager()); |
+ child11->SetActiveView(view11); |
+ WaitForAllChangesToBeAcked(window_manager()); |
+ |
+ // 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); |
+ |
+ ViewTreeNode* child11_in_embedded = embedded->GetNodeById(child11->id()); |
+ View* view11_in_embedded = embedded->GetViewById(view11->id()); |
+ EXPECT_TRUE(child11_in_embedded != NULL); |
+ EXPECT_EQ(view11_in_embedded, child11_in_embedded->active_view()); |
+ EXPECT_EQ(child11_bounds, child11_in_embedded->bounds()); |
} |
// Verifies that bounds changes applied to a node hierarchy in one connection |
// are reflected to another. |
-TEST_F(ViewManagerTest, DISABLED_SetBounds) { |
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); |
- WaitForTreeSizeToMatch(view_manager_2()->tree(), 2); |
- |
- ViewTreeNode* node1_2 = view_manager_2()->GetNodeById(node1->id()); |
- EXPECT_EQ(node1->bounds(), node1_2->bounds()); |
- |
- node1->SetBounds(gfx::Rect(0, 0, 100, 100)); |
- WaitForBoundsToChange(node1_2); |
- EXPECT_EQ(node1->bounds(), node1_2->bounds()); |
+TEST_F(ViewManagerTest, SetBounds) { |
+ ViewTreeNode* node = ViewTreeNode::Create(window_manager()); |
+ window_manager()->tree()->AddChild(node); |
+ ViewManager* embedded = Embed(window_manager(), node); |
+ |
+ ViewTreeNode* node_in_embedded = embedded->GetNodeById(node->id()); |
+ EXPECT_EQ(node->bounds(), node_in_embedded->bounds()); |
+ |
+ node->SetBounds(gfx::Rect(100, 100)); |
+ EXPECT_NE(node->bounds(), node_in_embedded->bounds()); |
+ WaitForBoundsToChange(node_in_embedded); |
+ EXPECT_EQ(node->bounds(), node_in_embedded->bounds()); |
} |
// Verifies that bounds changes applied to a node owned by a different |
// connection are refused. |
-TEST_F(ViewManagerTest, DISABLED_SetBoundsSecurity) { |
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); |
- node1->SetBounds(gfx::Rect(800, 600)); |
- WaitForTreeSizeToMatch(view_manager_2()->tree(), 2); |
+TEST_F(ViewManagerTest, SetBoundsSecurity) { |
+ ViewTreeNode* node = ViewTreeNode::Create(window_manager()); |
+ window_manager()->tree()->AddChild(node); |
+ ViewManager* embedded = Embed(window_manager(), node); |
+ |
+ ViewTreeNode* node_in_embedded = embedded->GetNodeById(node->id()); |
+ node->SetBounds(gfx::Rect(800, 600)); |
+ WaitForBoundsToChange(node_in_embedded); |
- ViewTreeNode* node1_2 = view_manager_2()->GetNodeById(node1->id()); |
- node1_2->SetBounds(gfx::Rect(1024, 768)); |
+ node_in_embedded->SetBounds(gfx::Rect(1024, 768)); |
// Bounds change should have been rejected. |
- EXPECT_EQ(node1->bounds(), node1_2->bounds()); |
+ EXPECT_EQ(node->bounds(), node_in_embedded->bounds()); |
} |
// Verifies that a node can only be destroyed by the connection that created it. |
-TEST_F(ViewManagerTest, DISABLED_DestroySecurity) { |
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); |
- WaitForTreeSizeToMatch(view_manager_2()->tree(), 2); |
+TEST_F(ViewManagerTest, DestroySecurity) { |
+ ViewTreeNode* node = ViewTreeNode::Create(window_manager()); |
+ window_manager()->tree()->AddChild(node); |
+ ViewManager* embedded = Embed(window_manager(), node); |
+ |
+ ViewTreeNode* node_in_embedded = embedded->GetNodeById(node->id()); |
- ViewTreeNode* node1_2 = view_manager_2()->GetNodeById(node1->id()); |
- NodeTracker tracker2(node1_2); |
- node1_2->Destroy(); |
+ NodeTracker tracker2(node_in_embedded); |
+ node_in_embedded->Destroy(); |
// Node should not have been destroyed. |
EXPECT_TRUE(tracker2.is_valid()); |
- NodeTracker tracker1(node1); |
- node1->Destroy(); |
+ NodeTracker tracker1(node); |
+ node->Destroy(); |
EXPECT_FALSE(tracker1.is_valid()); |
} |