Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1660)

Unified Diff: mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc

Issue 327073003: Reorder (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 1ce3d0a4069a587062b423e2df6bb4baf63ebd3e..1527cd5403ee9a37faf267f15345d067af2aaaae 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
@@ -250,6 +250,39 @@ void WaitForDestruction(ViewManager* view_manager,
DoRunLoop();
}
+class OrderChangeObserver : public ViewTreeNodeObserver {
+ public:
+ OrderChangeObserver(ViewTreeNode* node) : node_(node) {
+ node_->AddObserver(this);
+ }
+ virtual ~OrderChangeObserver() {
+ node_->RemoveObserver(this);
+ }
+
+ private:
+ // Overridden from ViewTreeNodeObserver:
+ virtual void OnNodeReordered(ViewTreeNode* node,
+ ViewTreeNode* relative_node,
+ OrderDirection direction,
+ DispositionChangePhase phase) OVERRIDE {
+ if (phase != ViewTreeNodeObserver::DISPOSITION_CHANGED)
+ return;
+
+ DCHECK_EQ(node, node_);
+ QuitRunLoop();
+ }
+
+ ViewTreeNode* node_;
+
+ DISALLOW_COPY_AND_ASSIGN(OrderChangeObserver);
+};
+
+void WaitForOrderChange(ViewManager* view_manager,
+ ViewTreeNode* node) {
+ OrderChangeObserver observer(node);
+ DoRunLoop();
+}
+
// Tracks a node's destruction. Query is_valid() for current state.
class NodeTracker : public ViewTreeNodeObserver {
public:
@@ -709,5 +742,39 @@ TEST_F(ViewManagerTest, EmbeddingIdentity) {
EXPECT_EQ(kWindowManagerURL, embedded->GetEmbedderURL());
}
+TEST_F(ViewManagerTest, Reorder) {
+ ViewTreeNode* node1 = ViewTreeNode::Create(window_manager());
+ window_manager()->GetRoots().front()->AddChild(node1);
+
+ ViewTreeNode* node11 = ViewTreeNode::Create(window_manager());
+ node1->AddChild(node11);
+ ViewTreeNode* node12 = ViewTreeNode::Create(window_manager());
+ node1->AddChild(node12);
+
+ ViewManager* embedded = Embed(window_manager(), node1);
+
+ ViewTreeNode* node1_in_embedded = embedded->GetNodeById(node1->id());
+
+ {
+ node11->MoveToFront();
+ WaitForOrderChange(embedded, embedded->GetNodeById(node11->id()));
+
+ EXPECT_EQ(node1_in_embedded->children().front(),
+ embedded->GetNodeById(node12->id()));
+ EXPECT_EQ(node1_in_embedded->children().back(),
+ embedded->GetNodeById(node11->id()));
+ }
+
+ {
+ node11->MoveToBack();
+ WaitForOrderChange(embedded, embedded->GetNodeById(node11->id()));
+
+ EXPECT_EQ(node1_in_embedded->children().front(),
+ embedded->GetNodeById(node11->id()));
+ EXPECT_EQ(node1_in_embedded->children().back(),
+ embedded->GetNodeById(node12->id()));
+ }
+}
+
} // namespace view_manager
} // namespace mojo

Powered by Google App Engine
This is Rietveld 408576698