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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "mojo/services/public/cpp/view_manager/view_manager.h" 5 #include "mojo/services/public/cpp/view_manager/view_manager.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "mojo/public/cpp/application/application.h" 10 #include "mojo/public/cpp/application/application.h"
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 } 243 }
244 if (views) { 244 if (views) {
245 for (std::set<Id>::const_iterator it = views->begin(); 245 for (std::set<Id>::const_iterator it = views->begin();
246 it != views->end(); ++it) { 246 it != views->end(); ++it) {
247 view_manager->GetViewById(*it)->AddObserver(&observer); 247 view_manager->GetViewById(*it)->AddObserver(&observer);
248 } 248 }
249 } 249 }
250 DoRunLoop(); 250 DoRunLoop();
251 } 251 }
252 252
253 class OrderChangeObserver : public ViewTreeNodeObserver {
254 public:
255 OrderChangeObserver(ViewTreeNode* node) : node_(node) {
256 node_->AddObserver(this);
257 }
258 virtual ~OrderChangeObserver() {
259 node_->RemoveObserver(this);
260 }
261
262 private:
263 // Overridden from ViewTreeNodeObserver:
264 virtual void OnNodeReordered(ViewTreeNode* node,
265 ViewTreeNode* relative_node,
266 OrderDirection direction,
267 DispositionChangePhase phase) OVERRIDE {
268 if (phase != ViewTreeNodeObserver::DISPOSITION_CHANGED)
269 return;
270
271 DCHECK_EQ(node, node_);
272 QuitRunLoop();
273 }
274
275 ViewTreeNode* node_;
276
277 DISALLOW_COPY_AND_ASSIGN(OrderChangeObserver);
278 };
279
280 void WaitForOrderChange(ViewManager* view_manager,
281 ViewTreeNode* node) {
282 OrderChangeObserver observer(node);
283 DoRunLoop();
284 }
285
253 // Tracks a node's destruction. Query is_valid() for current state. 286 // Tracks a node's destruction. Query is_valid() for current state.
254 class NodeTracker : public ViewTreeNodeObserver { 287 class NodeTracker : public ViewTreeNodeObserver {
255 public: 288 public:
256 explicit NodeTracker(ViewTreeNode* node) : node_(node) { 289 explicit NodeTracker(ViewTreeNode* node) : node_(node) {
257 node_->AddObserver(this); 290 node_->AddObserver(this);
258 } 291 }
259 virtual ~NodeTracker() { 292 virtual ~NodeTracker() {
260 if (node_) 293 if (node_)
261 node_->RemoveObserver(this); 294 node_->RemoveObserver(this);
262 } 295 }
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
702 EXPECT_EQ(embedded1, embedded2); 735 EXPECT_EQ(embedded1, embedded2);
703 } 736 }
704 737
705 TEST_F(ViewManagerTest, EmbeddingIdentity) { 738 TEST_F(ViewManagerTest, EmbeddingIdentity) {
706 ViewTreeNode* node = ViewTreeNode::Create(window_manager()); 739 ViewTreeNode* node = ViewTreeNode::Create(window_manager());
707 window_manager()->GetRoots().front()->AddChild(node); 740 window_manager()->GetRoots().front()->AddChild(node);
708 ViewManager* embedded = Embed(window_manager(), node); 741 ViewManager* embedded = Embed(window_manager(), node);
709 EXPECT_EQ(kWindowManagerURL, embedded->GetEmbedderURL()); 742 EXPECT_EQ(kWindowManagerURL, embedded->GetEmbedderURL());
710 } 743 }
711 744
745 TEST_F(ViewManagerTest, Reorder) {
746 ViewTreeNode* node1 = ViewTreeNode::Create(window_manager());
747 window_manager()->GetRoots().front()->AddChild(node1);
748
749 ViewTreeNode* node11 = ViewTreeNode::Create(window_manager());
750 node1->AddChild(node11);
751 ViewTreeNode* node12 = ViewTreeNode::Create(window_manager());
752 node1->AddChild(node12);
753
754 ViewManager* embedded = Embed(window_manager(), node1);
755
756 ViewTreeNode* node1_in_embedded = embedded->GetNodeById(node1->id());
757
758 {
759 node11->MoveToFront();
760 WaitForOrderChange(embedded, embedded->GetNodeById(node11->id()));
761
762 EXPECT_EQ(node1_in_embedded->children().front(),
763 embedded->GetNodeById(node12->id()));
764 EXPECT_EQ(node1_in_embedded->children().back(),
765 embedded->GetNodeById(node11->id()));
766 }
767
768 {
769 node11->MoveToBack();
770 WaitForOrderChange(embedded, embedded->GetNodeById(node11->id()));
771
772 EXPECT_EQ(node1_in_embedded->children().front(),
773 embedded->GetNodeById(node11->id()));
774 EXPECT_EQ(node1_in_embedded->children().back(),
775 embedded->GetNodeById(node12->id()));
776 }
777 }
778
712 } // namespace view_manager 779 } // namespace view_manager
713 } // namespace mojo 780 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698