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

Side by Side Diff: mojo/services/public/cpp/view_manager/tests/view_tree_node_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_tree_node.h" 5 #include "mojo/services/public/cpp/view_manager/view_tree_node.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h" 9 #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h"
10 #include "mojo/services/public/cpp/view_manager/util.h" 10 #include "mojo/services/public/cpp/view_manager/util.h"
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 p111 = p1; 341 p111 = p1;
342 p111.receiver = &v111; 342 p111.receiver = &v111;
343 p111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING; 343 p111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING;
344 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front())); 344 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front()));
345 p111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 345 p111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED;
346 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back())); 346 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back()));
347 } 347 }
348 348
349 namespace { 349 namespace {
350 350
351 class OrderChangeObserver : public ViewTreeNodeObserver {
352 public:
353 struct Change {
354 ViewTreeNode* node;
355 ViewTreeNode* relative_node;
356 OrderDirection direction;
357 DispositionChangePhase phase;
358 };
359 typedef std::vector<Change> Changes;
360
361 explicit OrderChangeObserver(ViewTreeNode* observee) : observee_(observee) {
362 observee_->AddObserver(this);
363 }
364 virtual ~OrderChangeObserver() {
365 observee_->RemoveObserver(this);
366 }
367
368 Changes GetAndClearChanges() {
369 Changes changes;
370 changes_.swap(changes);
371 return changes;
372 }
373
374 private:
375 // Overridden from ViewTreeNodeObserver:
376 virtual void OnNodeReordered(ViewTreeNode* node,
377 ViewTreeNode* relative_node,
378 OrderDirection direction,
379 DispositionChangePhase phase) OVERRIDE {
380 Change change;
381 change.node = node;
382 change.relative_node = relative_node;
383 change.direction = direction;
384 change.phase = phase;
385 changes_.push_back(change);
386 }
387
388 ViewTreeNode* observee_;
389 Changes changes_;
390
391 DISALLOW_COPY_AND_ASSIGN(OrderChangeObserver);
392 };
393
394 } // namespace
395
396 TEST_F(ViewTreeNodeObserverTest, Order) {
397 TestViewTreeNode v1, v11, v12, v13;
398 v1.AddChild(&v11);
399 v1.AddChild(&v12);
400 v1.AddChild(&v13);
401
402 // Order: v11, v12, v13
403 EXPECT_EQ(3U, v1.children().size());
404 EXPECT_EQ(&v11, v1.children().front());
405 EXPECT_EQ(&v13, v1.children().back());
406
407 {
408 OrderChangeObserver observer(&v11);
409
410 // Move v11 to front.
411 // Resulting order: v12, v13, v11
412 v11.MoveToFront();
413 EXPECT_EQ(&v12, v1.children().front());
414 EXPECT_EQ(&v11, v1.children().back());
415
416 OrderChangeObserver::Changes changes = observer.GetAndClearChanges();
417 EXPECT_EQ(2U, changes.size());
418 EXPECT_EQ(&v11, changes[0].node);
419 EXPECT_EQ(&v13, changes[0].relative_node);
420 EXPECT_EQ(ORDER_ABOVE, changes[0].direction);
421 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGING, changes[0].phase);
422
423 EXPECT_EQ(&v11, changes[1].node);
424 EXPECT_EQ(&v13, changes[1].relative_node);
425 EXPECT_EQ(ORDER_ABOVE, changes[1].direction);
426 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGED, changes[1].phase);
427 }
428
429 {
430 OrderChangeObserver observer(&v11);
431
432 // Move v11 to back.
433 // Resulting order: v11, v12, v13
434 v11.MoveToBack();
435 EXPECT_EQ(&v11, v1.children().front());
436 EXPECT_EQ(&v13, v1.children().back());
437
438 OrderChangeObserver::Changes changes = observer.GetAndClearChanges();
439 EXPECT_EQ(2U, changes.size());
440 EXPECT_EQ(&v11, changes[0].node);
441 EXPECT_EQ(&v12, changes[0].relative_node);
442 EXPECT_EQ(ORDER_BELOW, changes[0].direction);
443 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGING, changes[0].phase);
444
445 EXPECT_EQ(&v11, changes[1].node);
446 EXPECT_EQ(&v12, changes[1].relative_node);
447 EXPECT_EQ(ORDER_BELOW, changes[1].direction);
448 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGED, changes[1].phase);
449 }
450
451 {
452 OrderChangeObserver observer(&v11);
453
454 // Move v11 above v12.
455 // Resulting order: v12. v11, v13
456 v11.Reorder(&v12, ORDER_ABOVE);
457 EXPECT_EQ(&v12, v1.children().front());
458 EXPECT_EQ(&v13, v1.children().back());
459
460 OrderChangeObserver::Changes changes = observer.GetAndClearChanges();
461 EXPECT_EQ(2U, changes.size());
462 EXPECT_EQ(&v11, changes[0].node);
463 EXPECT_EQ(&v12, changes[0].relative_node);
464 EXPECT_EQ(ORDER_ABOVE, changes[0].direction);
465 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGING, changes[0].phase);
466
467 EXPECT_EQ(&v11, changes[1].node);
468 EXPECT_EQ(&v12, changes[1].relative_node);
469 EXPECT_EQ(ORDER_ABOVE, changes[1].direction);
470 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGED, changes[1].phase);
471 }
472
473 {
474 OrderChangeObserver observer(&v11);
475
476 // Move v11 below v12.
477 // Resulting order: v11, v12, v13
478 v11.Reorder(&v12, ORDER_BELOW);
479 EXPECT_EQ(&v11, v1.children().front());
480 EXPECT_EQ(&v13, v1.children().back());
481
482 OrderChangeObserver::Changes changes = observer.GetAndClearChanges();
483 EXPECT_EQ(2U, changes.size());
484 EXPECT_EQ(&v11, changes[0].node);
485 EXPECT_EQ(&v12, changes[0].relative_node);
486 EXPECT_EQ(ORDER_BELOW, changes[0].direction);
487 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGING, changes[0].phase);
488
489 EXPECT_EQ(&v11, changes[1].node);
490 EXPECT_EQ(&v12, changes[1].relative_node);
491 EXPECT_EQ(ORDER_BELOW, changes[1].direction);
492 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGED, changes[1].phase);
493 }
494 }
495
496 namespace {
497
351 typedef std::vector<std::string> Changes; 498 typedef std::vector<std::string> Changes;
352 499
353 std::string NodeIdToString(Id id) { 500 std::string NodeIdToString(Id id) {
354 return (id == 0) ? "null" : 501 return (id == 0) ? "null" :
355 base::StringPrintf("%d,%d", HiWord(id), LoWord(id)); 502 base::StringPrintf("%d,%d", HiWord(id), LoWord(id));
356 } 503 }
357 504
358 std::string RectToString(const gfx::Rect& rect) { 505 std::string RectToString(const gfx::Rect& rect) {
359 return base::StringPrintf("%d,%d %dx%d", 506 return base::StringPrintf("%d,%d %dx%d",
360 rect.x(), rect.y(), rect.width(), rect.height()); 507 rect.x(), rect.y(), rect.width(), rect.height());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 "node=0,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100 phase=changing", 562 "node=0,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100 phase=changing",
416 changes[0]); 563 changes[0]);
417 EXPECT_EQ( 564 EXPECT_EQ(
418 "node=0,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100 phase=changed", 565 "node=0,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100 phase=changed",
419 changes[1]); 566 changes[1]);
420 } 567 }
421 } 568 }
422 569
423 } // namespace view_manager 570 } // namespace view_manager
424 } // namespace mojo 571 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698