| OLD | NEW |
| 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/message_loop/message_loop.h" | 6 #include "base/message_loop/message_loop.h" |
| 7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
| 8 #include "components/view_manager/ids.h" | 8 #include "components/view_manager/ids.h" |
| 9 #include "components/view_manager/public/interfaces/view_manager.mojom.h" | 9 #include "components/view_manager/public/interfaces/view_manager.mojom.h" |
| 10 #include "components/view_manager/public/interfaces/view_manager_root.mojom.h" | 10 #include "components/view_manager/public/interfaces/view_manager_root.mojom.h" |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 const OnWillEmbedCallback& callback) override { | 304 const OnWillEmbedCallback& callback) override { |
| 305 tracker()->OnWillEmbed(view); | 305 tracker()->OnWillEmbed(view); |
| 306 callback.Run(true, services.Pass(), exposed_services.Pass()); | 306 callback.Run(true, services.Pass(), exposed_services.Pass()); |
| 307 } | 307 } |
| 308 void OnEmbeddedAppDisconnected(Id view_id) override { | 308 void OnEmbeddedAppDisconnected(Id view_id) override { |
| 309 tracker()->OnEmbeddedAppDisconnected(view_id); | 309 tracker()->OnEmbeddedAppDisconnected(view_id); |
| 310 } | 310 } |
| 311 void OnViewBoundsChanged(Id view_id, | 311 void OnViewBoundsChanged(Id view_id, |
| 312 RectPtr old_bounds, | 312 RectPtr old_bounds, |
| 313 RectPtr new_bounds) override { | 313 RectPtr new_bounds) override { |
| 314 // The bounds of the root may change during startup on Android at random |
| 315 // times. As this doesn't matter, and shouldn't impact test exepctations, |
| 316 // it is ignored. |
| 317 if (view_id == ViewIdToTransportId(RootViewId())) |
| 318 return; |
| 314 tracker()->OnViewBoundsChanged(view_id, old_bounds.Pass(), | 319 tracker()->OnViewBoundsChanged(view_id, old_bounds.Pass(), |
| 315 new_bounds.Pass()); | 320 new_bounds.Pass()); |
| 316 } | 321 } |
| 317 void OnViewViewportMetricsChanged(ViewportMetricsPtr old_metrics, | 322 void OnViewViewportMetricsChanged(ViewportMetricsPtr old_metrics, |
| 318 ViewportMetricsPtr new_metrics) override { | 323 ViewportMetricsPtr new_metrics) override { |
| 319 tracker()->OnViewViewportMetricsChanged(old_metrics.Pass(), | 324 // Don't track the metrics as they are available at an indeterministic time |
| 320 new_metrics.Pass()); | 325 // on Android. |
| 321 } | 326 } |
| 322 void OnViewHierarchyChanged(Id view, | 327 void OnViewHierarchyChanged(Id view, |
| 323 Id new_parent, | 328 Id new_parent, |
| 324 Id old_parent, | 329 Id old_parent, |
| 325 Array<ViewDataPtr> views) override { | 330 Array<ViewDataPtr> views) override { |
| 326 tracker()->OnViewHierarchyChanged(view, new_parent, old_parent, | 331 tracker()->OnViewHierarchyChanged(view, new_parent, old_parent, |
| 327 views.Pass()); | 332 views.Pass()); |
| 328 } | 333 } |
| 329 void OnViewReordered(Id view_id, | 334 void OnViewReordered(Id view_id, |
| 330 Id relative_view_id, | 335 Id relative_view_id, |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 513 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 518 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 514 | 519 |
| 515 // It isn't strictly necessary that the second connection gets 2, but these | 520 // It isn't strictly necessary that the second connection gets 2, but these |
| 516 // tests are written assuming that is the case. The key thing is the | 521 // tests are written assuming that is the case. The key thing is the |
| 517 // connection ids of |connection_| and |connection2_| differ. | 522 // connection ids of |connection_| and |connection2_| differ. |
| 518 ASSERT_EQ(1u, changes2()->size()); | 523 ASSERT_EQ(1u, changes2()->size()); |
| 519 ASSERT_EQ(2, (*changes2())[0].connection_id); | 524 ASSERT_EQ(2, (*changes2())[0].connection_id); |
| 520 } | 525 } |
| 521 | 526 |
| 522 // Verifies when Embed() is invoked any child views are removed. | 527 // Verifies when Embed() is invoked any child views are removed. |
| 523 // TODO(msw|sky): Fails on Android; see http://crbug.com/497920 | 528 TEST_F(ViewManagerServiceAppTest, ViewsRemovedWhenEmbedding) { |
| 524 #if defined(OS_ANDROID) | |
| 525 #define MAYBE_ViewsRemovedWhenEmbedding DISABLED_ViewsRemovedWhenEmbedding | |
| 526 #else | |
| 527 #define MAYBE_ViewsRemovedWhenEmbedding ViewsRemovedWhenEmbedding | |
| 528 #endif | |
| 529 TEST_F(ViewManagerServiceAppTest, MAYBE_ViewsRemovedWhenEmbedding) { | |
| 530 // Two views 1 and 2. 2 is parented to 1. | 529 // Two views 1 and 2. 2 is parented to 1. |
| 531 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); | 530 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); |
| 532 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); | 531 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); |
| 533 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 1), BuildViewId(1, 2))); | 532 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 1), BuildViewId(1, 2))); |
| 534 | 533 |
| 535 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false)); | 534 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false)); |
| 536 EXPECT_EQ("[view=1,1 parent=null]", ChangeViewDescription(*changes2())); | 535 EXPECT_EQ("[view=1,1 parent=null]", ChangeViewDescription(*changes2())); |
| 537 | 536 |
| 538 // Embed() removed view 2. | 537 // Embed() removed view 2. |
| 539 { | 538 { |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 576 // And view 4 should not be visible to connection 3. | 575 // And view 4 should not be visible to connection 3. |
| 577 { | 576 { |
| 578 std::vector<TestView> views; | 577 std::vector<TestView> views; |
| 579 GetViewTree(vm3(), BuildViewId(2, 3), &views); | 578 GetViewTree(vm3(), BuildViewId(2, 3), &views); |
| 580 EXPECT_EQ("view=2,3 parent=null", SingleViewDescription(views)); | 579 EXPECT_EQ("view=2,3 parent=null", SingleViewDescription(views)); |
| 581 } | 580 } |
| 582 } | 581 } |
| 583 | 582 |
| 584 // Verifies once Embed() has been invoked the parent connection can't see any | 583 // Verifies once Embed() has been invoked the parent connection can't see any |
| 585 // children. | 584 // children. |
| 586 // TODO(msw|sky): Fails on Android; see http://crbug.com/497920 | 585 TEST_F(ViewManagerServiceAppTest, CantAccessChildrenOfEmbeddedView) { |
| 587 #if defined(OS_ANDROID) | |
| 588 #define MAYBE_CantAccessChildrenOfEmbeddedView \ | |
| 589 DISABLED_CantAccessChildrenOfEmbeddedView | |
| 590 #else | |
| 591 #define MAYBE_CantAccessChildrenOfEmbeddedView CantAccessChildrenOfEmbeddedView | |
| 592 #endif | |
| 593 TEST_F(ViewManagerServiceAppTest, MAYBE_CantAccessChildrenOfEmbeddedView) { | |
| 594 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 586 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 595 | 587 |
| 596 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); | 588 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); |
| 597 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); | 589 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); |
| 598 | 590 |
| 599 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(vm2(), BuildViewId(2, 2))); | 591 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(vm2(), BuildViewId(2, 2))); |
| 600 | 592 |
| 601 ASSERT_TRUE(CreateView(vm3(), BuildViewId(3, 3))); | 593 ASSERT_TRUE(CreateView(vm3(), BuildViewId(3, 3))); |
| 602 ASSERT_TRUE(AddView(vm3(), BuildViewId(2, 2), BuildViewId(3, 3))); | 594 ASSERT_TRUE(AddView(vm3(), BuildViewId(2, 2), BuildViewId(3, 3))); |
| 603 | 595 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 621 std::vector<TestView> views; | 613 std::vector<TestView> views; |
| 622 GetViewTree(vm1(), BuildViewId(1, 1), &views); | 614 GetViewTree(vm1(), BuildViewId(1, 1), &views); |
| 623 ASSERT_EQ(3u, views.size()); | 615 ASSERT_EQ(3u, views.size()); |
| 624 EXPECT_EQ("view=1,1 parent=null", views[0].ToString()); | 616 EXPECT_EQ("view=1,1 parent=null", views[0].ToString()); |
| 625 EXPECT_EQ("view=2,2 parent=1,1", views[1].ToString()); | 617 EXPECT_EQ("view=2,2 parent=1,1", views[1].ToString()); |
| 626 EXPECT_EQ("view=3,3 parent=2,2", views[2].ToString()); | 618 EXPECT_EQ("view=3,3 parent=2,2", views[2].ToString()); |
| 627 } | 619 } |
| 628 } | 620 } |
| 629 | 621 |
| 630 // Verifies once Embed() has been invoked the parent can't mutate the children. | 622 // Verifies once Embed() has been invoked the parent can't mutate the children. |
| 631 // TODO(msw|sky): Fails on Android; see http://crbug.com/497920 | 623 TEST_F(ViewManagerServiceAppTest, CantModifyChildrenOfEmbeddedView) { |
| 632 #if defined(OS_ANDROID) | |
| 633 #define MAYBE_CantModifyChildrenOfEmbeddedView \ | |
| 634 DISABLED_CantModifyChildrenOfEmbeddedView | |
| 635 #else | |
| 636 #define MAYBE_CantModifyChildrenOfEmbeddedView CantModifyChildrenOfEmbeddedView | |
| 637 #endif | |
| 638 TEST_F(ViewManagerServiceAppTest, MAYBE_CantModifyChildrenOfEmbeddedView) { | |
| 639 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 624 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 640 | 625 |
| 641 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); | 626 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); |
| 642 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); | 627 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); |
| 643 | 628 |
| 644 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(vm2(), BuildViewId(2, 2))); | 629 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(vm2(), BuildViewId(2, 2))); |
| 645 | 630 |
| 646 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 3))); | 631 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 3))); |
| 647 // Connection 2 shouldn't be able to add anything to the view anymore. | 632 // Connection 2 shouldn't be able to add anything to the view anymore. |
| 648 ASSERT_FALSE(AddView(vm2(), BuildViewId(2, 2), BuildViewId(2, 3))); | 633 ASSERT_FALSE(AddView(vm2(), BuildViewId(2, 2), BuildViewId(2, 3))); |
| 649 | 634 |
| 650 // Create view 3 in connection 3 and add it to view 3. | 635 // Create view 3 in connection 3 and add it to view 3. |
| 651 ASSERT_TRUE(CreateView(vm3(), BuildViewId(3, 3))); | 636 ASSERT_TRUE(CreateView(vm3(), BuildViewId(3, 3))); |
| 652 ASSERT_TRUE(AddView(vm3(), BuildViewId(2, 2), BuildViewId(3, 3))); | 637 ASSERT_TRUE(AddView(vm3(), BuildViewId(2, 2), BuildViewId(3, 3))); |
| 653 | 638 |
| 654 // Connection 2 shouldn't be able to remove view 3. | 639 // Connection 2 shouldn't be able to remove view 3. |
| 655 ASSERT_FALSE(RemoveViewFromParent(vm2(), BuildViewId(3, 3))); | 640 ASSERT_FALSE(RemoveViewFromParent(vm2(), BuildViewId(3, 3))); |
| 656 } | 641 } |
| 657 | 642 |
| 658 // Verifies client gets a valid id. | 643 // Verifies client gets a valid id. |
| 659 // TODO(msw|sky): Fails on Android; see http://crbug.com/497920 | 644 TEST_F(ViewManagerServiceAppTest, CreateView) { |
| 660 #if defined(OS_ANDROID) | |
| 661 #define MAYBE_CreateView DISABLED_CreateView | |
| 662 #else | |
| 663 #define MAYBE_CreateView CreateView | |
| 664 #endif | |
| 665 TEST_F(ViewManagerServiceAppTest, MAYBE_CreateView) { | |
| 666 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); | 645 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); |
| 667 EXPECT_TRUE(changes1()->empty()); | 646 EXPECT_TRUE(changes1()->empty()); |
| 668 | 647 |
| 669 // Can't create a view with the same id. | 648 // Can't create a view with the same id. |
| 670 ASSERT_EQ(mojo::ERROR_CODE_VALUE_IN_USE, | 649 ASSERT_EQ(mojo::ERROR_CODE_VALUE_IN_USE, |
| 671 CreateViewWithErrorCode(vm1(), BuildViewId(1, 1))); | 650 CreateViewWithErrorCode(vm1(), BuildViewId(1, 1))); |
| 672 EXPECT_TRUE(changes1()->empty()); | 651 EXPECT_TRUE(changes1()->empty()); |
| 673 | 652 |
| 674 // Can't create a view with a bogus connection id. | 653 // Can't create a view with a bogus connection id. |
| 675 EXPECT_EQ(mojo::ERROR_CODE_ILLEGAL_ARGUMENT, | 654 EXPECT_EQ(mojo::ERROR_CODE_ILLEGAL_ARGUMENT, |
| 676 CreateViewWithErrorCode(vm1(), BuildViewId(2, 1))); | 655 CreateViewWithErrorCode(vm1(), BuildViewId(2, 1))); |
| 677 EXPECT_TRUE(changes1()->empty()); | 656 EXPECT_TRUE(changes1()->empty()); |
| 678 } | 657 } |
| 679 | 658 |
| 680 // Verifies AddView fails when view is already in position. | 659 // Verifies AddView fails when view is already in position. |
| 681 TEST_F(ViewManagerServiceAppTest, AddViewWithNoChange) { | 660 TEST_F(ViewManagerServiceAppTest, AddViewWithNoChange) { |
| 682 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); | 661 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); |
| 683 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 3))); | 662 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 3))); |
| 684 | 663 |
| 685 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 664 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 686 | 665 |
| 687 // Make 3 a child of 2. | 666 // Make 3 a child of 2. |
| 688 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 2), BuildViewId(1, 3))); | 667 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 2), BuildViewId(1, 3))); |
| 689 | 668 |
| 690 // Try again, this should fail. | 669 // Try again, this should fail. |
| 691 EXPECT_FALSE(AddView(vm1(), BuildViewId(1, 2), BuildViewId(1, 3))); | 670 EXPECT_FALSE(AddView(vm1(), BuildViewId(1, 2), BuildViewId(1, 3))); |
| 692 } | 671 } |
| 693 | 672 |
| 694 // Verifies AddView fails when view is already in position. | 673 // Verifies AddView fails when view is already in position. |
| 695 // TODO(msw|sky): Fails on Android; see http://crbug.com/497920 | 674 TEST_F(ViewManagerServiceAppTest, AddAncestorFails) { |
| 696 #if defined(OS_ANDROID) | |
| 697 #define MAYBE_AddAncestorFails DISABLED_AddAncestorFails | |
| 698 #else | |
| 699 #define MAYBE_AddAncestorFails AddAncestorFails | |
| 700 #endif | |
| 701 TEST_F(ViewManagerServiceAppTest, MAYBE_AddAncestorFails) { | |
| 702 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); | 675 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); |
| 703 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 3))); | 676 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 3))); |
| 704 | 677 |
| 705 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 678 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 706 | 679 |
| 707 // Make 3 a child of 2. | 680 // Make 3 a child of 2. |
| 708 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 2), BuildViewId(1, 3))); | 681 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 2), BuildViewId(1, 3))); |
| 709 | 682 |
| 710 // Try to make 2 a child of 3, this should fail since 2 is an ancestor of 3. | 683 // Try to make 2 a child of 3, this should fail since 2 is an ancestor of 3. |
| 711 EXPECT_FALSE(AddView(vm1(), BuildViewId(1, 3), BuildViewId(1, 2))); | 684 EXPECT_FALSE(AddView(vm1(), BuildViewId(1, 3), BuildViewId(1, 2))); |
| 712 } | 685 } |
| 713 | 686 |
| 714 // Verifies adding to root sends right notifications. | 687 // Verifies adding to root sends right notifications. |
| 715 // TODO(msw|sky): Fails on Android; see http://crbug.com/497920 | 688 TEST_F(ViewManagerServiceAppTest, AddToRoot) { |
| 716 #if defined(OS_ANDROID) | |
| 717 #define MAYBE_AddToRoot DISABLED_AddToRoot | |
| 718 #else | |
| 719 #define MAYBE_AddToRoot AddToRoot | |
| 720 #endif | |
| 721 TEST_F(ViewManagerServiceAppTest, MAYBE_AddToRoot) { | |
| 722 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 21))); | 689 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 21))); |
| 723 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 3))); | 690 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 3))); |
| 724 | 691 |
| 725 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 692 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 726 changes2()->clear(); | 693 changes2()->clear(); |
| 727 | 694 |
| 728 // Make 3 a child of 21. | 695 // Make 3 a child of 21. |
| 729 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 21), BuildViewId(1, 3))); | 696 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 21), BuildViewId(1, 3))); |
| 730 | 697 |
| 731 // Make 21 a child of 1. | 698 // Make 21 a child of 1. |
| 732 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 1), BuildViewId(1, 21))); | 699 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 1), BuildViewId(1, 21))); |
| 733 | 700 |
| 734 // Connection 2 should not be told anything (because the view is from a | 701 // Connection 2 should not be told anything (because the view is from a |
| 735 // different connection). Create a view to ensure we got a response from | 702 // different connection). Create a view to ensure we got a response from |
| 736 // the server. | 703 // the server. |
| 737 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 100))); | 704 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 100))); |
| 738 EXPECT_TRUE(changes2()->empty()); | 705 EXPECT_TRUE(changes2()->empty()); |
| 739 } | 706 } |
| 740 | 707 |
| 741 // Verifies HierarchyChanged is correctly sent for various adds/removes. | 708 // Verifies HierarchyChanged is correctly sent for various adds/removes. |
| 742 // TODO(msw|sky): Fails on Android; see http://crbug.com/497920 | 709 TEST_F(ViewManagerServiceAppTest, ViewHierarchyChangedViews) { |
| 743 #if defined(OS_ANDROID) | |
| 744 #define MAYBE_ViewHierarchyChangedViews DISABLED_ViewHierarchyChangedViews | |
| 745 #else | |
| 746 #define MAYBE_ViewHierarchyChangedViews ViewHierarchyChangedViews | |
| 747 #endif | |
| 748 TEST_F(ViewManagerServiceAppTest, MAYBE_ViewHierarchyChangedViews) { | |
| 749 // 1,2->1,11. | 710 // 1,2->1,11. |
| 750 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); | 711 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); |
| 751 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 2), true)); | 712 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 2), true)); |
| 752 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 11))); | 713 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 11))); |
| 753 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 11), true)); | 714 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 11), true)); |
| 754 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 2), BuildViewId(1, 11))); | 715 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 2), BuildViewId(1, 11))); |
| 755 | 716 |
| 756 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 717 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 757 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 1), true)); | 718 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 1), true)); |
| 758 | 719 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 801 // 0,1->1,1->1,2->1,11->1,111 | 762 // 0,1->1,1->1,2->1,11->1,111 |
| 802 { | 763 { |
| 803 changes2()->clear(); | 764 changes2()->clear(); |
| 804 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); | 765 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); |
| 805 vm_client2_->WaitForChangeCount(1); | 766 vm_client2_->WaitForChangeCount(1); |
| 806 EXPECT_EQ("DrawnStateChanged view=1,1 drawn=true", | 767 EXPECT_EQ("DrawnStateChanged view=1,1 drawn=true", |
| 807 SingleChangeToDescription(*changes2())); | 768 SingleChangeToDescription(*changes2())); |
| 808 } | 769 } |
| 809 } | 770 } |
| 810 | 771 |
| 811 // TODO(msw|sky): Times out on Android; see http://crbug.com/497920 | 772 TEST_F(ViewManagerServiceAppTest, ViewHierarchyChangedAddingKnownToUnknown) { |
| 812 #if defined(OS_ANDROID) | |
| 813 #define MAYBE_ViewHierarchyChangedAddingKnownToUnknown \ | |
| 814 DISABLED_ViewHierarchyChangedAddingKnownToUnknown | |
| 815 #else | |
| 816 #define MAYBE_ViewHierarchyChangedAddingKnownToUnknown \ | |
| 817 ViewHierarchyChangedAddingKnownToUnknown | |
| 818 #endif | |
| 819 TEST_F(ViewManagerServiceAppTest, | |
| 820 MAYBE_ViewHierarchyChangedAddingKnownToUnknown) { | |
| 821 // Create the following structure: root -> 1 -> 11 and 2->21 (2 has no | 773 // Create the following structure: root -> 1 -> 11 and 2->21 (2 has no |
| 822 // parent). | 774 // parent). |
| 823 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 775 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 824 | 776 |
| 825 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 11))); | 777 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 11))); |
| 826 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); | 778 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); |
| 827 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 21))); | 779 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 21))); |
| 828 | 780 |
| 829 // Set up the hierarchy. | 781 // Set up the hierarchy. |
| 830 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); | 782 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 911 | 863 |
| 912 // Non-existent view-ids | 864 // Non-existent view-ids |
| 913 EXPECT_FALSE(ReorderView(vm1(), BuildViewId(1, 27), BuildViewId(1, 28), | 865 EXPECT_FALSE(ReorderView(vm1(), BuildViewId(1, 27), BuildViewId(1, 28), |
| 914 ORDER_DIRECTION_ABOVE)); | 866 ORDER_DIRECTION_ABOVE)); |
| 915 | 867 |
| 916 // view7 & view8 are un-parented. | 868 // view7 & view8 are un-parented. |
| 917 EXPECT_FALSE(ReorderView(vm1(), view7_id, view8_id, ORDER_DIRECTION_ABOVE)); | 869 EXPECT_FALSE(ReorderView(vm1(), view7_id, view8_id, ORDER_DIRECTION_ABOVE)); |
| 918 } | 870 } |
| 919 | 871 |
| 920 // Verifies DeleteView works. | 872 // Verifies DeleteView works. |
| 921 // TODO(msw|sky): Times out on Android; see http://crbug.com/497920 | 873 TEST_F(ViewManagerServiceAppTest, DeleteView) { |
| 922 #if defined(OS_ANDROID) | |
| 923 #define MAYBE_DeleteView DISABLED_DeleteView | |
| 924 #else | |
| 925 #define MAYBE_DeleteView DeleteView | |
| 926 #endif | |
| 927 TEST_F(ViewManagerServiceAppTest, MAYBE_DeleteView) { | |
| 928 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 874 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 929 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); | 875 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); |
| 930 | 876 |
| 931 // Make 2 a child of 1. | 877 // Make 2 a child of 1. |
| 932 { | 878 { |
| 933 changes1()->clear(); | 879 changes1()->clear(); |
| 934 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); | 880 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); |
| 935 vm_client1_->WaitForChangeCount(1); | 881 vm_client1_->WaitForChangeCount(1); |
| 936 EXPECT_EQ("HierarchyChanged view=2,2 new_parent=1,1 old_parent=null", | 882 EXPECT_EQ("HierarchyChanged view=2,2 new_parent=1,1 old_parent=null", |
| 937 SingleChangeToDescription(*changes1())); | 883 SingleChangeToDescription(*changes1())); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 950 } | 896 } |
| 951 | 897 |
| 952 // Verifies DeleteView isn't allowed from a separate connection. | 898 // Verifies DeleteView isn't allowed from a separate connection. |
| 953 TEST_F(ViewManagerServiceAppTest, DeleteViewFromAnotherConnectionDisallowed) { | 899 TEST_F(ViewManagerServiceAppTest, DeleteViewFromAnotherConnectionDisallowed) { |
| 954 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 900 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 955 EXPECT_FALSE(DeleteView(vm2(), BuildViewId(1, 1))); | 901 EXPECT_FALSE(DeleteView(vm2(), BuildViewId(1, 1))); |
| 956 } | 902 } |
| 957 | 903 |
| 958 // Verifies if a view was deleted and then reused that other clients are | 904 // Verifies if a view was deleted and then reused that other clients are |
| 959 // properly notified. | 905 // properly notified. |
| 960 // TODO(msw|sky): Times out on Android; see http://crbug.com/497920 | 906 TEST_F(ViewManagerServiceAppTest, ReuseDeletedViewId) { |
| 961 #if defined(OS_ANDROID) | |
| 962 #define MAYBE_ReuseDeletedViewId DISABLED_ReuseDeletedViewId | |
| 963 #else | |
| 964 #define MAYBE_ReuseDeletedViewId ReuseDeletedViewId | |
| 965 #endif | |
| 966 TEST_F(ViewManagerServiceAppTest, MAYBE_ReuseDeletedViewId) { | |
| 967 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 907 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 968 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); | 908 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); |
| 969 | 909 |
| 970 // Add 2 to 1. | 910 // Add 2 to 1. |
| 971 { | 911 { |
| 972 changes1()->clear(); | 912 changes1()->clear(); |
| 973 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); | 913 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); |
| 974 | 914 |
| 975 vm_client1_->WaitForChangeCount(1); | 915 vm_client1_->WaitForChangeCount(1); |
| 976 EXPECT_EQ("HierarchyChanged view=2,2 new_parent=1,1 old_parent=null", | 916 EXPECT_EQ("HierarchyChanged view=2,2 new_parent=1,1 old_parent=null", |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1039 } | 979 } |
| 1040 | 980 |
| 1041 // Connection 2 shouldn't be able to get the root tree. | 981 // Connection 2 shouldn't be able to get the root tree. |
| 1042 { | 982 { |
| 1043 std::vector<TestView> views; | 983 std::vector<TestView> views; |
| 1044 GetViewTree(vm2(), BuildViewId(0, 1), &views); | 984 GetViewTree(vm2(), BuildViewId(0, 1), &views); |
| 1045 ASSERT_EQ(0u, views.size()); | 985 ASSERT_EQ(0u, views.size()); |
| 1046 } | 986 } |
| 1047 } | 987 } |
| 1048 | 988 |
| 1049 // TODO(msw|sky): Fails on Android; see http://crbug.com/497920 | 989 TEST_F(ViewManagerServiceAppTest, SetViewBounds) { |
| 1050 #if defined(OS_ANDROID) | |
| 1051 #define MAYBE_SetViewBounds DISABLED_SetViewBounds | |
| 1052 #else | |
| 1053 #define MAYBE_SetViewBounds SetViewBounds | |
| 1054 #endif | |
| 1055 TEST_F(ViewManagerServiceAppTest, MAYBE_SetViewBounds) { | |
| 1056 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); | 990 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); |
| 1057 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); | 991 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); |
| 1058 | 992 |
| 1059 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false)); | 993 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false)); |
| 1060 | 994 |
| 1061 changes2()->clear(); | 995 changes2()->clear(); |
| 1062 ASSERT_TRUE(SetViewBounds(vm1(), BuildViewId(1, 1), 0, 0, 100, 100)); | 996 ASSERT_TRUE(SetViewBounds(vm1(), BuildViewId(1, 1), 0, 0, 100, 100)); |
| 1063 | 997 |
| 1064 vm_client2_->WaitForChangeCount(1); | 998 vm_client2_->WaitForChangeCount(1); |
| 1065 EXPECT_EQ("BoundsChanged view=1,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100", | 999 EXPECT_EQ("BoundsChanged view=1,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100", |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1164 } | 1098 } |
| 1165 | 1099 |
| 1166 // Connection2 has no root. Verify it can't see view 1,1 anymore. | 1100 // Connection2 has no root. Verify it can't see view 1,1 anymore. |
| 1167 { | 1101 { |
| 1168 std::vector<TestView> views; | 1102 std::vector<TestView> views; |
| 1169 GetViewTree(vm2(), BuildViewId(1, 1), &views); | 1103 GetViewTree(vm2(), BuildViewId(1, 1), &views); |
| 1170 EXPECT_TRUE(views.empty()); | 1104 EXPECT_TRUE(views.empty()); |
| 1171 } | 1105 } |
| 1172 } | 1106 } |
| 1173 | 1107 |
| 1174 // TODO(msw|sky): Times out on Android; see http://crbug.com/497920 | 1108 TEST_F(ViewManagerServiceAppTest, EmbedWithSameViewId2) { |
| 1175 #if defined(OS_ANDROID) | |
| 1176 #define MAYBE_EmbedWithSameViewId2 DISABLED_EmbedWithSameViewId2 | |
| 1177 #else | |
| 1178 #define MAYBE_EmbedWithSameViewId2 EmbedWithSameViewId2 | |
| 1179 #endif | |
| 1180 TEST_F(ViewManagerServiceAppTest, MAYBE_EmbedWithSameViewId2) { | |
| 1181 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 1109 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 1182 changes2()->clear(); | 1110 changes2()->clear(); |
| 1183 | 1111 |
| 1184 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(vm1(), BuildViewId(1, 1))); | 1112 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(vm1(), BuildViewId(1, 1))); |
| 1185 | 1113 |
| 1186 // Connection2 should have been told the view was deleted. | 1114 // Connection2 should have been told the view was deleted. |
| 1187 vm_client2_->WaitForChangeCount(1); | 1115 vm_client2_->WaitForChangeCount(1); |
| 1188 changes2()->clear(); | 1116 changes2()->clear(); |
| 1189 | 1117 |
| 1190 // Create a view in the third connection and parent it to the root. | 1118 // Create a view in the third connection and parent it to the root. |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1298 GetViewTree(vm1(), BuildViewId(1, 1), &views); | 1226 GetViewTree(vm1(), BuildViewId(1, 1), &views); |
| 1299 ASSERT_EQ(2u, views.size()); | 1227 ASSERT_EQ(2u, views.size()); |
| 1300 EXPECT_EQ("view=1,1 parent=0,1 visible=true drawn=true", | 1228 EXPECT_EQ("view=1,1 parent=0,1 visible=true drawn=true", |
| 1301 views[0].ToString2()); | 1229 views[0].ToString2()); |
| 1302 EXPECT_EQ("view=1,2 parent=1,1 visible=true drawn=true", | 1230 EXPECT_EQ("view=1,2 parent=1,1 visible=true drawn=true", |
| 1303 views[1].ToString2()); | 1231 views[1].ToString2()); |
| 1304 } | 1232 } |
| 1305 } | 1233 } |
| 1306 | 1234 |
| 1307 // Assertions for SetViewVisibility sending notifications. | 1235 // Assertions for SetViewVisibility sending notifications. |
| 1308 // TODO(msw|sky): Fails on Android; see http://crbug.com/497920 | 1236 TEST_F(ViewManagerServiceAppTest, SetViewVisibilityNotifications) { |
| 1309 #if defined(OS_ANDROID) | |
| 1310 #define MAYBE_SetViewVisibilityNotifications \ | |
| 1311 DISABLED_SetViewVisibilityNotifications | |
| 1312 #else | |
| 1313 #define MAYBE_SetViewVisibilityNotifications SetViewVisibilityNotifications | |
| 1314 #endif | |
| 1315 TEST_F(ViewManagerServiceAppTest, MAYBE_SetViewVisibilityNotifications) { | |
| 1316 // Create 1,1 and 1,2. 1,2 is made a child of 1,1 and 1,1 a child of the root. | 1237 // Create 1,1 and 1,2. 1,2 is made a child of 1,1 and 1,1 a child of the root. |
| 1317 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); | 1238 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); |
| 1318 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 1), true)); | 1239 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 1), true)); |
| 1319 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); | 1240 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); |
| 1320 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 2), true)); | 1241 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 2), true)); |
| 1321 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); | 1242 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); |
| 1322 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 1), BuildViewId(1, 2))); | 1243 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 1), BuildViewId(1, 2))); |
| 1323 | 1244 |
| 1324 // Establish the second connection at 1,2. | 1245 // Establish the second connection at 1,2. |
| 1325 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnectionWithRoot(BuildViewId(1, 2))); | 1246 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnectionWithRoot(BuildViewId(1, 2))); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1387 changes2()->clear(); | 1308 changes2()->clear(); |
| 1388 // Add 1,1 back to the root, connection 2 should see drawn state changed. | 1309 // Add 1,1 back to the root, connection 2 should see drawn state changed. |
| 1389 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); | 1310 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); |
| 1390 { | 1311 { |
| 1391 vm_client2_->WaitForChangeCount(1); | 1312 vm_client2_->WaitForChangeCount(1); |
| 1392 EXPECT_EQ("DrawnStateChanged view=1,2 drawn=true", | 1313 EXPECT_EQ("DrawnStateChanged view=1,2 drawn=true", |
| 1393 SingleChangeToDescription(*changes2())); | 1314 SingleChangeToDescription(*changes2())); |
| 1394 } | 1315 } |
| 1395 } | 1316 } |
| 1396 | 1317 |
| 1397 // TODO(msw|sky): Fails on Android; see http://crbug.com/497920 | 1318 TEST_F(ViewManagerServiceAppTest, SetViewProperty) { |
| 1398 #if defined(OS_ANDROID) | |
| 1399 #define MAYBE_SetViewProperty DISABLED_SetViewProperty | |
| 1400 #else | |
| 1401 #define MAYBE_SetViewProperty SetViewProperty | |
| 1402 #endif | |
| 1403 TEST_F(ViewManagerServiceAppTest, MAYBE_SetViewProperty) { | |
| 1404 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); | 1319 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); |
| 1405 | 1320 |
| 1406 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false)); | 1321 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false)); |
| 1407 changes2()->clear(); | 1322 changes2()->clear(); |
| 1408 | 1323 |
| 1409 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); | 1324 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); |
| 1410 { | 1325 { |
| 1411 std::vector<TestView> views; | 1326 std::vector<TestView> views; |
| 1412 GetViewTree(vm1(), BuildViewId(0, 1), &views); | 1327 GetViewTree(vm1(), BuildViewId(0, 1), &views); |
| 1413 ASSERT_EQ(2u, views.size()); | 1328 ASSERT_EQ(2u, views.size()); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1438 changes2()->clear(); | 1353 changes2()->clear(); |
| 1439 // Set back to null. | 1354 // Set back to null. |
| 1440 ASSERT_TRUE(SetViewProperty(vm1(), BuildViewId(1, 1), "one", NULL)); | 1355 ASSERT_TRUE(SetViewProperty(vm1(), BuildViewId(1, 1), "one", NULL)); |
| 1441 { | 1356 { |
| 1442 vm_client2_->WaitForChangeCount(1); | 1357 vm_client2_->WaitForChangeCount(1); |
| 1443 EXPECT_EQ("PropertyChanged view=1,1 key=one value=NULL", | 1358 EXPECT_EQ("PropertyChanged view=1,1 key=one value=NULL", |
| 1444 SingleChangeToDescription(*changes2())); | 1359 SingleChangeToDescription(*changes2())); |
| 1445 } | 1360 } |
| 1446 } | 1361 } |
| 1447 | 1362 |
| 1448 // TODO(msw|sky): Fails on Android; see http://crbug.com/497920 | 1363 TEST_F(ViewManagerServiceAppTest, OnEmbeddedAppDisconnected) { |
| 1449 #if defined(OS_ANDROID) | |
| 1450 #define MAYBE_OnEmbeddedAppDisconnected DISABLED_OnEmbeddedAppDisconnected | |
| 1451 #else | |
| 1452 #define MAYBE_OnEmbeddedAppDisconnected OnEmbeddedAppDisconnected | |
| 1453 #endif | |
| 1454 TEST_F(ViewManagerServiceAppTest, MAYBE_OnEmbeddedAppDisconnected) { | |
| 1455 // Create connection 2 and 3. | 1364 // Create connection 2 and 3. |
| 1456 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 1365 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 1457 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); | 1366 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); |
| 1458 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); | 1367 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); |
| 1459 changes2()->clear(); | 1368 changes2()->clear(); |
| 1460 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(vm2(), BuildViewId(2, 2))); | 1369 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(vm2(), BuildViewId(2, 2))); |
| 1461 | 1370 |
| 1462 // Close connection 3. Connection 2 (which had previously embedded 3) should | 1371 // Close connection 3. Connection 2 (which had previously embedded 3) should |
| 1463 // be notified of this. | 1372 // be notified of this. |
| 1464 vm_client3_.reset(); | 1373 vm_client3_.reset(); |
| 1465 vm_client2_->WaitForChangeCount(1); | 1374 vm_client2_->WaitForChangeCount(1); |
| 1466 EXPECT_EQ("OnEmbeddedAppDisconnected view=2,2", | 1375 EXPECT_EQ("OnEmbeddedAppDisconnected view=2,2", |
| 1467 SingleChangeToDescription(*changes2())); | 1376 SingleChangeToDescription(*changes2())); |
| 1468 } | 1377 } |
| 1469 | 1378 |
| 1470 // Verifies when the parent of an Embed() is destroyed the embedded app gets | 1379 // Verifies when the parent of an Embed() is destroyed the embedded app gets |
| 1471 // a ViewDeleted (and doesn't trigger a DCHECK). | 1380 // a ViewDeleted (and doesn't trigger a DCHECK). |
| 1472 // TODO(msw|sky): Fails on Android; see http://crbug.com/497920 | 1381 TEST_F(ViewManagerServiceAppTest, OnParentOfEmbedDisconnects) { |
| 1473 #if defined(OS_ANDROID) | |
| 1474 #define MAYBE_OnParentOfEmbedDisconnects DISABLED_OnParentOfEmbedDisconnects | |
| 1475 #else | |
| 1476 #define MAYBE_OnParentOfEmbedDisconnects OnParentOfEmbedDisconnects | |
| 1477 #endif | |
| 1478 TEST_F(ViewManagerServiceAppTest, MAYBE_OnParentOfEmbedDisconnects) { | |
| 1479 // Create connection 2 and 3. | 1382 // Create connection 2 and 3. |
| 1480 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 1383 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 1481 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); | 1384 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); |
| 1482 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); | 1385 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); |
| 1483 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); | 1386 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); |
| 1484 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 3))); | 1387 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 3))); |
| 1485 ASSERT_TRUE(AddView(vm2(), BuildViewId(2, 2), BuildViewId(2, 3))); | 1388 ASSERT_TRUE(AddView(vm2(), BuildViewId(2, 2), BuildViewId(2, 3))); |
| 1486 changes2()->clear(); | 1389 changes2()->clear(); |
| 1487 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(vm2(), BuildViewId(2, 3))); | 1390 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(vm2(), BuildViewId(2, 3))); |
| 1488 changes3()->clear(); | 1391 changes3()->clear(); |
| 1489 | 1392 |
| 1490 // Close connection 2. Connection 3 should get a delete (for its root). | 1393 // Close connection 2. Connection 3 should get a delete (for its root). |
| 1491 vm_client2_.reset(); | 1394 vm_client2_.reset(); |
| 1492 vm_client3_->WaitForChangeCount(1); | 1395 vm_client3_->WaitForChangeCount(1); |
| 1493 EXPECT_EQ("ViewDeleted view=2,3", SingleChangeToDescription(*changes3())); | 1396 EXPECT_EQ("ViewDeleted view=2,3", SingleChangeToDescription(*changes3())); |
| 1494 } | 1397 } |
| 1495 | 1398 |
| 1496 // Verifies ViewManagerServiceImpl doesn't incorrectly erase from its internal | 1399 // Verifies ViewManagerServiceImpl doesn't incorrectly erase from its internal |
| 1497 // map when a view from another connection with the same view_id is removed. | 1400 // map when a view from another connection with the same view_id is removed. |
| 1498 // TODO(msw|sky): Fails on Android; see http://crbug.com/497920 | 1401 TEST_F(ViewManagerServiceAppTest, DontCleanMapOnDestroy) { |
| 1499 #if defined(OS_ANDROID) | |
| 1500 #define MAYBE_DontCleanMapOnDestroy DISABLED_DontCleanMapOnDestroy | |
| 1501 #else | |
| 1502 #define MAYBE_DontCleanMapOnDestroy DontCleanMapOnDestroy | |
| 1503 #endif | |
| 1504 TEST_F(ViewManagerServiceAppTest, MAYBE_DontCleanMapOnDestroy) { | |
| 1505 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 1402 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 1506 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 1))); | 1403 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 1))); |
| 1507 changes1()->clear(); | 1404 changes1()->clear(); |
| 1508 vm_client2_.reset(); | 1405 vm_client2_.reset(); |
| 1509 vm_client1_->WaitForChangeCount(1); | 1406 vm_client1_->WaitForChangeCount(1); |
| 1510 EXPECT_EQ("OnEmbeddedAppDisconnected view=1,1", | 1407 EXPECT_EQ("OnEmbeddedAppDisconnected view=1,1", |
| 1511 SingleChangeToDescription(*changes1())); | 1408 SingleChangeToDescription(*changes1())); |
| 1512 std::vector<TestView> views; | 1409 std::vector<TestView> views; |
| 1513 GetViewTree(vm1(), BuildViewId(1, 1), &views); | 1410 GetViewTree(vm1(), BuildViewId(1, 1), &views); |
| 1514 EXPECT_FALSE(views.empty()); | 1411 EXPECT_FALSE(views.empty()); |
| 1515 } | 1412 } |
| 1516 | 1413 |
| 1517 // TODO(msw|sky): Fails on Android; see http://crbug.com/497920 | 1414 TEST_F(ViewManagerServiceAppTest, CloneAndAnimate) { |
| 1518 #if defined(OS_ANDROID) | |
| 1519 #define MAYBE_CloneAndAnimate DISABLED_CloneAndAnimate | |
| 1520 #else | |
| 1521 #define MAYBE_CloneAndAnimate CloneAndAnimate | |
| 1522 #endif | |
| 1523 TEST_F(ViewManagerServiceAppTest, MAYBE_CloneAndAnimate) { | |
| 1524 // Create connection 2 and 3. | 1415 // Create connection 2 and 3. |
| 1525 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 1416 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 1526 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); | 1417 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); |
| 1527 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); | 1418 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); |
| 1528 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 3))); | 1419 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 3))); |
| 1529 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); | 1420 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); |
| 1530 ASSERT_TRUE(AddView(vm2(), BuildViewId(2, 2), BuildViewId(2, 3))); | 1421 ASSERT_TRUE(AddView(vm2(), BuildViewId(2, 2), BuildViewId(2, 3))); |
| 1531 changes2()->clear(); | 1422 changes2()->clear(); |
| 1532 | 1423 |
| 1533 ASSERT_TRUE(WaitForAllMessages(vm1())); | 1424 ASSERT_TRUE(WaitForAllMessages(vm1())); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1559 | 1450 |
| 1560 ViewManagerClientImpl client2; | 1451 ViewManagerClientImpl client2; |
| 1561 mojo::ViewManagerClientPtr client2_ptr; | 1452 mojo::ViewManagerClientPtr client2_ptr; |
| 1562 mojo::Binding<ViewManagerClient> client2_binding(&client2, &client2_ptr); | 1453 mojo::Binding<ViewManagerClient> client2_binding(&client2, &client2_ptr); |
| 1563 ASSERT_TRUE(Embed(vm1(), BuildViewId(1, 1), client2_ptr.Pass())); | 1454 ASSERT_TRUE(Embed(vm1(), BuildViewId(1, 1), client2_ptr.Pass())); |
| 1564 client2.WaitForOnEmbed(); | 1455 client2.WaitForOnEmbed(); |
| 1565 EXPECT_EQ("OnEmbed creator=" + application_impl()->url(), | 1456 EXPECT_EQ("OnEmbed creator=" + application_impl()->url(), |
| 1566 SingleChangeToDescription(*client2.tracker()->changes())); | 1457 SingleChangeToDescription(*client2.tracker()->changes())); |
| 1567 } | 1458 } |
| 1568 | 1459 |
| 1569 // TODO(msw|sky): Fails on Android; see http://crbug.com/497920 | 1460 TEST_F(ViewManagerServiceAppTest, OnWillEmbed) { |
| 1570 #if defined(OS_ANDROID) | |
| 1571 #define MAYBE_OnWillEmbed DISABLED_OnWillEmbed | |
| 1572 #else | |
| 1573 #define MAYBE_OnWillEmbed OnWillEmbed | |
| 1574 #endif | |
| 1575 TEST_F(ViewManagerServiceAppTest, MAYBE_OnWillEmbed) { | |
| 1576 // Create connections 2 and 3, marking 2 as an embed root. | 1461 // Create connections 2 and 3, marking 2 as an embed root. |
| 1577 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 1462 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 1578 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); | 1463 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); |
| 1579 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); | 1464 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); |
| 1580 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); | 1465 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 1), BuildViewId(2, 2))); |
| 1581 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(vm2(), BuildViewId(2, 2))); | 1466 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(vm2(), BuildViewId(2, 2))); |
| 1582 ASSERT_TRUE(CreateView(vm3(), BuildViewId(3, 3))); | 1467 ASSERT_TRUE(CreateView(vm3(), BuildViewId(3, 3))); |
| 1583 ASSERT_TRUE(AddView(vm3(), BuildViewId(2, 2), BuildViewId(3, 3))); | 1468 ASSERT_TRUE(AddView(vm3(), BuildViewId(2, 2), BuildViewId(3, 3))); |
| 1584 vm2()->SetEmbedRoot(); | 1469 vm2()->SetEmbedRoot(); |
| 1585 // Make sure the viewmanager processed the SetEmbedRoot() call. | 1470 // Make sure the viewmanager processed the SetEmbedRoot() call. |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1613 // TODO(sky): need to better track changes to initial connection. For example, | 1498 // TODO(sky): need to better track changes to initial connection. For example, |
| 1614 // that SetBounsdViews/AddView and the like don't result in messages to the | 1499 // that SetBounsdViews/AddView and the like don't result in messages to the |
| 1615 // originating connection. | 1500 // originating connection. |
| 1616 | 1501 |
| 1617 // TODO(sky): make sure coverage of what was | 1502 // TODO(sky): make sure coverage of what was |
| 1618 // ViewManagerTest.SecondEmbedRoot_InitService and | 1503 // ViewManagerTest.SecondEmbedRoot_InitService and |
| 1619 // ViewManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window manager | 1504 // ViewManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window manager |
| 1620 // tests. | 1505 // tests. |
| 1621 | 1506 |
| 1622 } // namespace view_manager | 1507 } // namespace view_manager |
| OLD | NEW |