Index: trunk/src/mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc |
=================================================================== |
--- trunk/src/mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc (revision 269420) |
+++ trunk/src/mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc (working copy) |
@@ -31,9 +31,6 @@ |
// ViewManager ----------------------------------------------------------------- |
-// These tests model synchronization of two peer connections to the view manager |
-// service, that are given access to some root node. |
- |
class ViewManagerTest : public testing::Test { |
public: |
ViewManagerTest() : commit_count_(0) {} |
@@ -42,17 +39,13 @@ |
ViewManager* view_manager_1() { return view_manager_1_.get(); } |
ViewManager* view_manager_2() { return view_manager_2_.get(); } |
- ViewTreeNode* CreateNodeInParent(ViewTreeNode* parent) { |
+ scoped_ptr<ViewTreeNode> CreateNodeInParent(ViewTreeNode* parent) { |
ViewManager* parent_manager = ViewTreeNodePrivate(parent).view_manager(); |
- ViewTreeNode* node = ViewTreeNode::Create(parent_manager); |
- parent->AddChild(node); |
- return node; |
+ scoped_ptr<ViewTreeNode> node(new ViewTreeNode(parent_manager)); |
+ parent->AddChild(node.get()); |
+ return node.Pass(); |
} |
- void DestroyViewManager1() { |
- view_manager_1_.reset(); |
- } |
- |
private: |
// Overridden from testing::Test: |
virtual void SetUp() OVERRIDE { |
@@ -92,6 +85,8 @@ |
private: |
// Overridden from ViewTreeNodeObserver: |
virtual void OnTreeChange(const TreeChangeParams& params) OVERRIDE { |
+ if (params.phase != ViewTreeNodeObserver::DISPOSITION_CHANGED) |
+ return; |
if (ShouldQuitRunLoop(params)) |
QuitRunLoop(); |
} |
@@ -114,8 +109,6 @@ |
private: |
// Overridden from TreeObserverBase: |
virtual bool ShouldQuitRunLoop(const TreeChangeParams& params) OVERRIDE { |
- if (params.phase != ViewTreeNodeObserver::DISPOSITION_CHANGED) |
- return false; |
return CountNodes(view_manager()->tree()) == tree_size_; |
} |
@@ -141,8 +134,6 @@ |
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(); |
@@ -153,8 +144,8 @@ |
TEST_F(ViewManagerTest, HierarchyChanged_NodeCreated) { |
HierarchyChanged_NodeCreatedObserver observer(view_manager_2()); |
- ViewTreeNode* node1 = ViewTreeNode::Create(view_manager_1()); |
- view_manager_1()->tree()->AddChild(node1); |
+ scoped_ptr<ViewTreeNode> node1(new ViewTreeNode(view_manager_1())); |
+ view_manager_1()->tree()->AddChild(node1.get()); |
DoRunLoop(); |
EXPECT_EQ(view_manager_2()->tree()->children().front()->id(), node1->id()); |
@@ -175,8 +166,6 @@ |
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_; |
@@ -189,16 +178,16 @@ |
}; |
TEST_F(ViewManagerTest, HierarchyChanged_NodeMoved) { |
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); |
- ViewTreeNode* node2 = CreateNodeInParent(view_manager_1()->tree()); |
- ViewTreeNode* node21 = CreateNodeInParent(node2); |
+ scoped_ptr<ViewTreeNode> node1(CreateNodeInParent(view_manager_1()->tree())); |
+ scoped_ptr<ViewTreeNode> node2(CreateNodeInParent(view_manager_1()->tree())); |
+ scoped_ptr<ViewTreeNode> node21(CreateNodeInParent(node2.get())); |
TreeSizeMatchesWaiter waiter(view_manager_2(), 4); |
HierarchyChanged_NodeMovedObserver observer(view_manager_2(), |
node2->id(), |
node1->id()); |
- node1->AddChild(node21); |
+ node1->AddChild(node21.get()); |
DoRunLoop(); |
ViewTreeNode* tree2 = view_manager_2()->tree(); |
@@ -212,90 +201,8 @@ |
EXPECT_EQ(tree2_node21->parent(), tree2_node1); |
} |
-class HierarchyChanged_NodeRemovedObserver : public TreeObserverBase { |
- public: |
- HierarchyChanged_NodeRemovedObserver(ViewManager* view_manager) |
- : TreeObserverBase(view_manager) {} |
- virtual ~HierarchyChanged_NodeRemovedObserver() {} |
+// TODO(beng): node destruction |
- 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, HierarchyChanged_NodeRemoved) { |
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); |
- TreeSizeMatchesWaiter waiter(view_manager_2(), 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()); |
-} |
- |
-class NodeDestroyed_Waiter : public ViewTreeNodeObserver { |
- public: |
- NodeDestroyed_Waiter(ViewManager* view_manager, TransportNodeId id) |
- : view_manager_(view_manager), |
- id_(id) { |
- view_manager_->GetNodeById(id)->AddObserver(this); |
- DoRunLoop(); |
- } |
- virtual ~NodeDestroyed_Waiter() { |
- } |
- |
- private: |
- // Overridden from TreeObserverBase: |
- virtual void OnNodeDestroy(ViewTreeNode* node, |
- DispositionChangePhase phase) OVERRIDE { |
- if (phase != DISPOSITION_CHANGED) |
- return; |
- if (node->id() == id_) |
- QuitRunLoop(); |
- } |
- |
- TransportNodeId id_; |
- ViewManager* view_manager_; |
- |
- DISALLOW_COPY_AND_ASSIGN(NodeDestroyed_Waiter); |
-}; |
- |
-TEST_F(ViewManagerTest, NodeDestroyed) { |
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); |
- TreeSizeMatchesWaiter init_waiter(view_manager_2(), 2); |
- |
- // |node1| will be deleted after calling Destroy() below. |
- TransportNodeId id = node1->id(); |
- node1->Destroy(); |
- NodeDestroyed_Waiter destroyed_waiter(view_manager_2(), id); |
- |
- EXPECT_TRUE(view_manager_2()->tree()->children().empty()); |
-} |
- |
-TEST_F(ViewManagerTest, ViewManagerDestroyed) { |
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); |
- TreeSizeMatchesWaiter init_waiter(view_manager_2(), 2); |
- |
- TransportNodeId id = node1->id(); |
- DestroyViewManager1(); |
- NodeDestroyed_Waiter destroyed_waiter(view_manager_2(), id); |
- |
- // tree() should still be valid, since it's owned by neither connection. |
- EXPECT_TRUE(view_manager_2()->tree()->children().empty()); |
-} |
- |
} // namespace view_manager |
} // namespace services |
} // namespace mojo |