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

Side by Side Diff: mojo/services/view_manager/view_manager_unittest.cc

Issue 421693002: Adds an AccessPolicy that is queried to determine what a connection can do (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: cleanup Created 6 years, 4 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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/at_exit.h" 8 #include "base/at_exit.h"
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 // Destroys the connection, blocking until done. 87 // Destroys the connection, blocking until done.
88 void Destroy() { 88 void Destroy() {
89 router_->CloseMessagePipe(); 89 router_->CloseMessagePipe();
90 } 90 }
91 91
92 void ClearChanges() { 92 void ClearChanges() {
93 changes_.clear(); 93 changes_.clear();
94 tracker_->changes()->clear(); 94 tracker_->changes()->clear();
95 } 95 }
96 96
97 void CopyChangesFromTracker() {
98 std::vector<Change> changes;
99 tracker_->changes()->swap(changes);
100 changes_.swap(changes);
101 }
102
97 // The following functions are cover methods for ViewManagerService. They 103 // The following functions are cover methods for ViewManagerService. They
98 // block until the result is received. 104 // block until the result is received.
99 bool CreateNode(Id node_id) { 105 bool CreateNode(Id node_id) {
100 changes_.clear(); 106 changes_.clear();
101 ErrorCode result = ERROR_CODE_NONE; 107 ErrorCode result = ERROR_CODE_NONE;
102 view_manager_->CreateNode( 108 view_manager_->CreateNode(
103 node_id, 109 node_id,
104 base::Bind(&ViewManagerProxy::GotResultWithErrorCode, 110 base::Bind(&ViewManagerProxy::GotResultWithErrorCode,
105 base::Unretained(this), &result)); 111 base::Unretained(this), &result));
106 RunMainLoop(); 112 RunMainLoop();
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 main_run_loop_->Run(); 229 main_run_loop_->Run();
224 delete main_run_loop_; 230 delete main_run_loop_;
225 main_run_loop_ = NULL; 231 main_run_loop_ = NULL;
226 } 232 }
227 233
228 void QuitCountReached() { 234 void QuitCountReached() {
229 CopyChangesFromTracker(); 235 CopyChangesFromTracker();
230 main_run_loop_->Quit(); 236 main_run_loop_->Quit();
231 } 237 }
232 238
233 void CopyChangesFromTracker() {
234 std::vector<Change> changes;
235 tracker_->changes()->swap(changes);
236 changes_.swap(changes);
237 }
238
239 static void SetInstance(ViewManagerProxy* instance) { 239 static void SetInstance(ViewManagerProxy* instance) {
240 DCHECK(!instance_); 240 DCHECK(!instance_);
241 instance_ = instance; 241 instance_ = instance;
242 // Embed() runs its own run loop that is quit when the result is 242 // Embed() runs its own run loop that is quit when the result is
243 // received. Embed() also results in a new instance. If we quit here while 243 // received. Embed() also results in a new instance. If we quit here while
244 // waiting for a Embed() we would prematurely return before we got the 244 // waiting for a Embed() we would prematurely return before we got the
245 // result from Embed(). 245 // result from Embed().
246 if (!in_embed_ && main_run_loop_) 246 if (!in_embed_ && main_run_loop_)
247 main_run_loop_->Quit(); 247 main_run_loop_->Quit();
248 } 248 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 299
300 // static 300 // static
301 base::RunLoop* ViewManagerProxy::main_run_loop_ = NULL; 301 base::RunLoop* ViewManagerProxy::main_run_loop_ = NULL;
302 302
303 // static 303 // static
304 bool ViewManagerProxy::in_embed_ = false; 304 bool ViewManagerProxy::in_embed_ = false;
305 305
306 class TestViewManagerClientConnection 306 class TestViewManagerClientConnection
307 : public InterfaceImpl<ViewManagerClient> { 307 : public InterfaceImpl<ViewManagerClient> {
308 public: 308 public:
309 explicit TestViewManagerClientConnection() : connection_(&tracker_) { 309 TestViewManagerClientConnection() : connection_(&tracker_) {
310 tracker_.set_delegate(&connection_); 310 tracker_.set_delegate(&connection_);
311 } 311 }
312 312
313 // InterfaceImp: 313 // InterfaceImp:
314 virtual void OnConnectionEstablished() OVERRIDE { 314 virtual void OnConnectionEstablished() OVERRIDE {
315 connection_.set_router(internal_state()->router()); 315 connection_.set_router(internal_state()->router());
316 connection_.set_view_manager(client()); 316 connection_.set_view_manager(client());
317 } 317 }
318 318
319 // ViewManagerClient: 319 // ViewManagerClient:
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 TEST_F(ViewManagerTest, AddToRoot) { 771 TEST_F(ViewManagerTest, AddToRoot) {
772 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 21))); 772 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 21)));
773 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 3))); 773 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 3)));
774 774
775 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); 775 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true));
776 776
777 // Make 3 a child of 21. 777 // Make 3 a child of 21.
778 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 21), BuildNodeId(1, 3))); 778 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 21), BuildNodeId(1, 3)));
779 779
780 // Make 21 a child of 1. 780 // Make 21 a child of 1.
781 { 781 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 1), BuildNodeId(1, 21)));
782 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 1), BuildNodeId(1, 21)));
783 782
784 connection2_->DoRunLoopUntilChangesCount(1); 783 // Connection 2 should not be told anything (because the node is from a
785 const Changes changes(ChangesToDescription1(connection2_->changes())); 784 // different connection). Create a node to ensure we got a response from
786 ASSERT_EQ(1u, changes.size()); 785 // the server.
787 EXPECT_EQ("HierarchyChanged node=1,21 new_parent=1,1 old_parent=null", 786 ASSERT_TRUE(connection2_->CreateNode(BuildNodeId(2, 100)));
788 changes[0]); 787 connection2_->CopyChangesFromTracker();
789 } 788 EXPECT_TRUE(connection2_->changes().empty());
790 } 789 }
791 790
792 // Verifies HierarchyChanged is correctly sent for various adds/removes. 791 // Verifies HierarchyChanged is correctly sent for various adds/removes.
793 TEST_F(ViewManagerTest, NodeHierarchyChangedNodes) { 792 TEST_F(ViewManagerTest, NodeHierarchyChangedNodes) {
793 // 1,2->1,11.
794 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2))); 794 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2)));
795 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 11))); 795 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 11)));
796 // Make 11 a child of 2.
797 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 2), BuildNodeId(1, 11))); 796 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 2), BuildNodeId(1, 11)));
798 797
799 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); 798 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true));
800 799
801 // Make 2 a child of 1. 800 // 1,1->1,2->1,11
802 { 801 {
802 // Client 2 should not get anything (1,2 is from another connection).
803 connection2_->ClearChanges();
803 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 1), BuildNodeId(1, 2))); 804 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 1), BuildNodeId(1, 2)));
804 805 ASSERT_TRUE(connection2_->CreateNode(BuildNodeId(2, 100)));
805 // Client 2 should get a hierarchy change that includes the new nodes as it 806 connection2_->CopyChangesFromTracker();
806 // has not yet seen them. 807 EXPECT_TRUE(connection2_->changes().empty());
807 connection2_->DoRunLoopUntilChangesCount(1);
808 const Changes changes(ChangesToDescription1(connection2_->changes()));
809 ASSERT_EQ(1u, changes.size());
810 EXPECT_EQ(
811 "HierarchyChanged node=1,2 new_parent=1,1 old_parent=null", changes[0]);
812 EXPECT_EQ("[node=1,2 parent=1,1 view=null],"
813 "[node=1,11 parent=1,2 view=null]",
814 ChangeNodeDescription(connection2_->changes()));
815 } 808 }
816 809
817 // Add 1 to the root. 810 // 0,1->1,1->1,2->1,11.
818 { 811 {
812 // Again, client 2 should not get anything.
813 connection2_->ClearChanges();
819 ASSERT_TRUE(connection_->AddNode(BuildNodeId(0, 1), BuildNodeId(1, 1))); 814 ASSERT_TRUE(connection_->AddNode(BuildNodeId(0, 1), BuildNodeId(1, 1)));
820 815 ASSERT_TRUE(connection2_->CreateNode(BuildNodeId(2, 101)));
821 // Client 2 should get a hierarchy change that includes the new nodes as it 816 connection2_->CopyChangesFromTracker();
822 // has not yet seen them. 817 EXPECT_TRUE(connection2_->changes().empty());
823 connection2_->DoRunLoopUntilChangesCount(1);
824 const Changes changes(ChangesToDescription1(connection2_->changes()));
825 ASSERT_EQ(1u, changes.size());
826 EXPECT_EQ("HierarchyChanged node=1,1 new_parent=null old_parent=null",
827 changes[0]);
828 EXPECT_EQ(std::string(), ChangeNodeDescription(connection2_->changes()));
829 } 818 }
830 819
831 // Remove 1 from its parent. 820 // 1,1->1,2->1,11.
832 { 821 {
822 connection2_->ClearChanges();
833 ASSERT_TRUE(connection_->RemoveNodeFromParent(BuildNodeId(1, 1))); 823 ASSERT_TRUE(connection_->RemoveNodeFromParent(BuildNodeId(1, 1)));
834 EXPECT_TRUE(connection_->changes().empty()); 824 EXPECT_TRUE(connection_->changes().empty());
835 825 ASSERT_TRUE(connection2_->CreateNode(BuildNodeId(2, 102)));
836 connection2_->DoRunLoopUntilChangesCount(1); 826 connection2_->CopyChangesFromTracker();
837 const Changes changes(ChangesToDescription1(connection2_->changes())); 827 EXPECT_TRUE(connection2_->changes().empty());
838 ASSERT_EQ(1u, changes.size());
839 EXPECT_EQ("HierarchyChanged node=1,1 new_parent=null old_parent=null",
840 changes[0]);
841 } 828 }
842 829
843 // Create another node, 111, parent it to 11. 830 // 1,1->1,2->1,11->1,111.
844 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 111))); 831 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 111)));
845 { 832 {
833 connection2_->ClearChanges();
846 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 11), BuildNodeId(1, 111))); 834 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 11), BuildNodeId(1, 111)));
847 835 ASSERT_TRUE(connection2_->CreateNode(BuildNodeId(2, 103)));
848 connection2_->DoRunLoopUntilChangesCount(1); 836 connection2_->CopyChangesFromTracker();
849 const Changes changes(ChangesToDescription1(connection2_->changes())); 837 EXPECT_TRUE(connection2_->changes().empty());
850 ASSERT_EQ(1u, changes.size());
851 EXPECT_EQ("HierarchyChanged node=1,111 new_parent=1,11 old_parent=null",
852 changes[0]);
853 EXPECT_EQ("[node=1,111 parent=1,11 view=null]",
854 ChangeNodeDescription(connection2_->changes()));
855 } 838 }
856 839
857 // Reattach 1 to the root. 840 // 0,1->1,1->1,2->1,11->1,111
858 { 841 {
842 connection2_->ClearChanges();
859 ASSERT_TRUE(connection_->AddNode(BuildNodeId(0, 1), BuildNodeId(1, 1))); 843 ASSERT_TRUE(connection_->AddNode(BuildNodeId(0, 1), BuildNodeId(1, 1)));
860 844 ASSERT_TRUE(connection2_->CreateNode(BuildNodeId(2, 104)));
861 connection2_->DoRunLoopUntilChangesCount(1); 845 connection2_->CopyChangesFromTracker();
862 const Changes changes(ChangesToDescription1(connection2_->changes())); 846 EXPECT_TRUE(connection2_->changes().empty());
863 ASSERT_EQ(1u, changes.size());
864 EXPECT_EQ("HierarchyChanged node=1,1 new_parent=null old_parent=null",
865 changes[0]);
866 EXPECT_EQ(std::string(), ChangeNodeDescription(connection2_->changes()));
867 } 847 }
868 } 848 }
869 849
870 TEST_F(ViewManagerTest, NodeHierarchyChangedAddingKnownToUnknown) { 850 TEST_F(ViewManagerTest, NodeHierarchyChangedAddingKnownToUnknown) {
871 // Create the following structure: root -> 1 -> 11 and 2->21 (2 has no 851 // Create the following structure: root -> 1 -> 11 and 2->21 (2 has no
872 // parent). 852 // parent).
873 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 1))); 853 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true));
874 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 11))); 854
875 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2))); 855 ASSERT_TRUE(connection2_->CreateNode(BuildNodeId(2, 11)));
876 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 21))); 856 ASSERT_TRUE(connection2_->CreateNode(BuildNodeId(2, 2)));
857 ASSERT_TRUE(connection2_->CreateNode(BuildNodeId(2, 21)));
877 858
878 // Set up the hierarchy. 859 // Set up the hierarchy.
879 ASSERT_TRUE(connection_->AddNode(BuildNodeId(0, 1), BuildNodeId(1, 1))); 860 ASSERT_TRUE(connection_->AddNode(BuildNodeId(0, 1), BuildNodeId(1, 1)));
880 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 1), BuildNodeId(1, 11))); 861 ASSERT_TRUE(connection2_->AddNode(BuildNodeId(1, 1), BuildNodeId(2, 11)));
881 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 2), BuildNodeId(1, 21))); 862 ASSERT_TRUE(connection2_->AddNode(BuildNodeId(2, 2), BuildNodeId(2, 21)));
882 863
883 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false)); 864 // Remove 11, should result in a hierarchy change for the root.
884 EXPECT_EQ("[node=1,1 parent=null view=null]," 865 {
885 "[node=1,11 parent=1,1 view=null]", 866 connection_->ClearChanges();
886 ChangeNodeDescription(connection2_->changes())); 867 ASSERT_TRUE(connection2_->RemoveNodeFromParent(BuildNodeId(2, 11)));
887 868
888 // Remove 11, should result in a delete (since 11 is no longer in connection 869 connection_->DoRunLoopUntilChangesCount(1);
889 // 2's root). 870 const Changes changes(ChangesToDescription1(connection_->changes()));
890 {
891 ASSERT_TRUE(connection_->RemoveNodeFromParent(BuildNodeId(1, 11)));
892
893 connection2_->DoRunLoopUntilChangesCount(1);
894 const Changes changes(ChangesToDescription1(connection2_->changes()));
895 ASSERT_EQ(1u, changes.size()); 871 ASSERT_EQ(1u, changes.size());
896 EXPECT_EQ("NodeDeleted node=1,11", changes[0]); 872 EXPECT_EQ("HierarchyChanged node=2,11 new_parent=null old_parent=1,1",
873 changes[0]);
897 } 874 }
898 875
899 // Add 2 to 1. 876 // Add 2 to 1.
900 { 877 {
901 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 1), BuildNodeId(1, 2))); 878 ASSERT_TRUE(connection2_->AddNode(BuildNodeId(1, 1), BuildNodeId(2, 2)));
902 879
903 connection2_->DoRunLoopUntilChangesCount(1); 880 connection_->DoRunLoopUntilChangesCount(1);
904 const Changes changes(ChangesToDescription1(connection2_->changes())); 881 const Changes changes(ChangesToDescription1(connection_->changes()));
905 ASSERT_EQ(1u, changes.size()); 882 ASSERT_EQ(1u, changes.size());
906 EXPECT_EQ("HierarchyChanged node=1,2 new_parent=1,1 old_parent=null", 883 EXPECT_EQ("HierarchyChanged node=2,2 new_parent=1,1 old_parent=null",
907 changes[0]); 884 changes[0]);
908 EXPECT_EQ("[node=1,2 parent=1,1 view=null]," 885 EXPECT_EQ("[node=2,2 parent=1,1 view=null],"
909 "[node=1,21 parent=1,2 view=null]", 886 "[node=2,21 parent=2,2 view=null]",
910 ChangeNodeDescription(connection2_->changes())); 887 ChangeNodeDescription(connection_->changes()));
911 } 888 }
912 } 889 }
913 890
914 TEST_F(ViewManagerTest, ReorderNode) { 891 TEST_F(ViewManagerTest, ReorderNode) {
915 Id node1_id = BuildNodeId(1, 1); 892 Id node1_id = BuildNodeId(1, 1);
916 Id node2_id = BuildNodeId(1, 2); 893 Id node2_id = BuildNodeId(1, 2);
917 Id node3_id = BuildNodeId(1, 3); 894 Id node3_id = BuildNodeId(1, 3);
918 Id node4_id = BuildNodeId(1, 4); // Peer to 1,1 895 Id node4_id = BuildNodeId(1, 4); // Peer to 1,1
919 Id node5_id = BuildNodeId(1, 5); // Peer to 1,1 896 Id node5_id = BuildNodeId(1, 5); // Peer to 1,1
920 Id node6_id = BuildNodeId(1, 6); // Child of 1,2. 897 Id node6_id = BuildNodeId(1, 6); // Child of 1,2.
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
974 EXPECT_FALSE(connection_->ReorderNode( 951 EXPECT_FALSE(connection_->ReorderNode(
975 BuildNodeId(1, 27), BuildNodeId(1, 28), ORDER_DIRECTION_ABOVE)); 952 BuildNodeId(1, 27), BuildNodeId(1, 28), ORDER_DIRECTION_ABOVE));
976 953
977 // node7 & node8 are un-parented. 954 // node7 & node8 are un-parented.
978 EXPECT_FALSE( 955 EXPECT_FALSE(
979 connection_->ReorderNode(node7_id, node8_id, ORDER_DIRECTION_ABOVE)); 956 connection_->ReorderNode(node7_id, node8_id, ORDER_DIRECTION_ABOVE));
980 } 957 }
981 958
982 // Verifies DeleteNode works. 959 // Verifies DeleteNode works.
983 TEST_F(ViewManagerTest, DeleteNode) { 960 TEST_F(ViewManagerTest, DeleteNode) {
984 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2)));
985
986 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); 961 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true));
962 ASSERT_TRUE(connection2_->CreateNode(BuildNodeId(2, 2)));
987 963
988 // Make 2 a child of 1. 964 // Make 2 a child of 1.
989 { 965 {
990 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 1), BuildNodeId(1, 2))); 966 ASSERT_TRUE(connection2_->AddNode(BuildNodeId(1, 1), BuildNodeId(2, 2)));
991 connection2_->DoRunLoopUntilChangesCount(1); 967 connection_->DoRunLoopUntilChangesCount(1);
992 const Changes changes(ChangesToDescription1(connection2_->changes())); 968 const Changes changes(ChangesToDescription1(connection_->changes()));
993 ASSERT_EQ(1u, changes.size()); 969 ASSERT_EQ(1u, changes.size());
994 EXPECT_EQ("HierarchyChanged node=1,2 new_parent=1,1 old_parent=null", 970 EXPECT_EQ("HierarchyChanged node=2,2 new_parent=1,1 old_parent=null",
995 changes[0]); 971 changes[0]);
996 } 972 }
997 973
998 // Delete 2. 974 // Delete 2.
999 { 975 {
1000 ASSERT_TRUE(connection_->DeleteNode(BuildNodeId(1, 2))); 976 ASSERT_TRUE(connection2_->DeleteNode(BuildNodeId(2, 2)));
1001 EXPECT_TRUE(connection_->changes().empty()); 977 EXPECT_TRUE(connection2_->changes().empty());
1002 978
1003 connection2_->DoRunLoopUntilChangesCount(1); 979 connection_->DoRunLoopUntilChangesCount(1);
1004 const Changes changes(ChangesToDescription1(connection2_->changes())); 980 const Changes changes(ChangesToDescription1(connection_->changes()));
1005 ASSERT_EQ(1u, changes.size()); 981 ASSERT_EQ(1u, changes.size());
1006 EXPECT_EQ("NodeDeleted node=1,2", changes[0]); 982 EXPECT_EQ("NodeDeleted node=2,2", changes[0]);
1007 } 983 }
1008 } 984 }
1009 985
1010 // Verifies DeleteNode isn't allowed from a separate connection. 986 // Verifies DeleteNode isn't allowed from a separate connection.
1011 TEST_F(ViewManagerTest, DeleteNodeFromAnotherConnectionDisallowed) { 987 TEST_F(ViewManagerTest, DeleteNodeFromAnotherConnectionDisallowed) {
1012 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); 988 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true));
1013 EXPECT_FALSE(connection2_->DeleteNode(BuildNodeId(1, 1))); 989 EXPECT_FALSE(connection2_->DeleteNode(BuildNodeId(1, 1)));
1014 } 990 }
1015 991
1016 // Verifies DeleteView isn't allowed from a separate connection. 992 // Verifies DeleteView isn't allowed from a separate connection.
1017 TEST_F(ViewManagerTest, DeleteViewFromAnotherConnectionDisallowed) { 993 TEST_F(ViewManagerTest, DeleteViewFromAnotherConnectionDisallowed) {
1018 ASSERT_TRUE(connection_->CreateView(BuildViewId(1, 1))); 994 ASSERT_TRUE(connection_->CreateView(BuildViewId(1, 1)));
1019 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); 995 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true));
1020 EXPECT_FALSE(connection2_->DeleteView(BuildViewId(1, 1))); 996 EXPECT_FALSE(connection2_->DeleteView(BuildViewId(1, 1)));
1021 } 997 }
1022 998
1023 // Verifies if a node was deleted and then reused that other clients are 999 // Verifies if a node was deleted and then reused that other clients are
1024 // properly notified. 1000 // properly notified.
1025 TEST_F(ViewManagerTest, ReuseDeletedNodeId) { 1001 TEST_F(ViewManagerTest, ReuseDeletedNodeId) {
1026 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); 1002 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true));
1027 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2))); 1003 ASSERT_TRUE(connection2_->CreateNode(BuildNodeId(2, 2)));
1028 1004
1029 // Add 2 to 1. 1005 // Add 2 to 1.
1030 { 1006 {
1031 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 1), BuildNodeId(1, 2))); 1007 ASSERT_TRUE(connection2_->AddNode(BuildNodeId(1, 1), BuildNodeId(2, 2)));
1032 1008
1033 connection2_->DoRunLoopUntilChangesCount(1); 1009 connection_->DoRunLoopUntilChangesCount(1);
1034 const Changes changes(ChangesToDescription1(connection2_->changes())); 1010 const Changes changes(ChangesToDescription1(connection_->changes()));
1035 EXPECT_EQ("HierarchyChanged node=1,2 new_parent=1,1 old_parent=null", 1011 EXPECT_EQ("HierarchyChanged node=2,2 new_parent=1,1 old_parent=null",
1036 changes[0]); 1012 changes[0]);
1037 EXPECT_EQ("[node=1,2 parent=1,1 view=null]", 1013 EXPECT_EQ("[node=2,2 parent=1,1 view=null]",
1038 ChangeNodeDescription(connection2_->changes())); 1014 ChangeNodeDescription(connection_->changes()));
1039 } 1015 }
1040 1016
1041 // Delete 2. 1017 // Delete 2.
1042 { 1018 {
1043 ASSERT_TRUE(connection_->DeleteNode(BuildNodeId(1, 2))); 1019 ASSERT_TRUE(connection2_->DeleteNode(BuildNodeId(2, 2)));
1044 1020
1045 connection2_->DoRunLoopUntilChangesCount(1); 1021 connection_->DoRunLoopUntilChangesCount(1);
1046 const Changes changes(ChangesToDescription1(connection2_->changes())); 1022 const Changes changes(ChangesToDescription1(connection_->changes()));
1047 ASSERT_EQ(1u, changes.size()); 1023 ASSERT_EQ(1u, changes.size());
1048 EXPECT_EQ("NodeDeleted node=1,2", changes[0]); 1024 EXPECT_EQ("NodeDeleted node=2,2", changes[0]);
1049 } 1025 }
1050 1026
1051 // Create 2 again, and add it back to 1. Should get the same notification. 1027 // Create 2 again, and add it back to 1. Should get the same notification.
1052 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2))); 1028 ASSERT_TRUE(connection2_->CreateNode(BuildNodeId(2, 2)));
1053 { 1029 {
1054 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 1), BuildNodeId(1, 2))); 1030 ASSERT_TRUE(connection2_->AddNode(BuildNodeId(1, 1), BuildNodeId(2, 2)));
1055 1031
1056 connection2_->DoRunLoopUntilChangesCount(1); 1032 connection_->DoRunLoopUntilChangesCount(1);
1057 const Changes changes(ChangesToDescription1(connection2_->changes())); 1033 const Changes changes(ChangesToDescription1(connection_->changes()));
1058 EXPECT_EQ("HierarchyChanged node=1,2 new_parent=1,1 old_parent=null", 1034 EXPECT_EQ("HierarchyChanged node=2,2 new_parent=1,1 old_parent=null",
1059 changes[0]); 1035 changes[0]);
1060 EXPECT_EQ("[node=1,2 parent=1,1 view=null]", 1036 EXPECT_EQ("[node=2,2 parent=1,1 view=null]",
1061 ChangeNodeDescription(connection2_->changes())); 1037 ChangeNodeDescription(connection_->changes()));
1062 } 1038 }
1063 } 1039 }
1064 1040
1065 // Assertions around setting a view. 1041 // Assertions around setting a view.
1066 TEST_F(ViewManagerTest, SetView) { 1042 TEST_F(ViewManagerTest, SetView) {
1067 // Create nodes 1, 2 and 3 and the view 11. Nodes 2 and 3 are parented to 1. 1043 // Create nodes 1, 2 and 3 and the view 11. Nodes 2 and 3 are parented to 1.
1068 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 1))); 1044 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 1)));
1069 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2))); 1045 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2)));
1070 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 3))); 1046 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 3)));
1071 ASSERT_TRUE(connection_->CreateView(BuildViewId(1, 11))); 1047 ASSERT_TRUE(connection_->CreateView(BuildViewId(1, 11)));
(...skipping 23 matching lines...) Expand all
1095 ASSERT_EQ(2u, changes.size()); 1071 ASSERT_EQ(2u, changes.size());
1096 EXPECT_EQ("ViewReplaced node=1,1 new_view=null old_view=1,11", 1072 EXPECT_EQ("ViewReplaced node=1,1 new_view=null old_view=1,11",
1097 changes[0]); 1073 changes[0]);
1098 EXPECT_EQ("ViewReplaced node=1,2 new_view=1,11 old_view=null", 1074 EXPECT_EQ("ViewReplaced node=1,2 new_view=1,11 old_view=null",
1099 changes[1]); 1075 changes[1]);
1100 } 1076 }
1101 } 1077 }
1102 1078
1103 // Verifies deleting a node with a view sends correct notifications. 1079 // Verifies deleting a node with a view sends correct notifications.
1104 TEST_F(ViewManagerTest, DeleteNodeWithView) { 1080 TEST_F(ViewManagerTest, DeleteNodeWithView) {
1105 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 1))); 1081 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true));
1106 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2))); 1082
1107 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 3))); 1083 ASSERT_TRUE(connection2_->CreateNode(BuildNodeId(2, 2)));
1108 ASSERT_TRUE(connection_->CreateView(BuildViewId(1, 11))); 1084 ASSERT_TRUE(connection2_->CreateNode(BuildNodeId(2, 3)));
1085 ASSERT_TRUE(connection2_->CreateView(BuildViewId(2, 11)));
1109 1086
1110 // Set view 11 on node 2. 1087 // Set view 11 on node 2.
1111 ASSERT_TRUE(connection_->SetView(BuildNodeId(1, 2), BuildViewId(1, 11))); 1088 ASSERT_TRUE(connection2_->SetView(BuildNodeId(2, 2), BuildViewId(2, 11)));
1112 1089
1113 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false)); 1090 // Delete node 2. Connection 1 should not see this because the node was not
1114 1091 // known to it.
1115 // Delete node 2. The second connection should not see this because the node 1092 ASSERT_TRUE(connection2_->DeleteNode(BuildNodeId(2, 2)));
1116 // was not known to it.
1117 ASSERT_TRUE(connection_->DeleteNode(BuildNodeId(1, 2)));
1118 1093
1119 // Parent 3 to 1. 1094 // Parent 3 to 1.
1120 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 1), BuildNodeId(1, 3))); 1095 ASSERT_TRUE(connection2_->AddNode(BuildNodeId(1, 1), BuildNodeId(2, 3)));
1121 connection2_->DoRunLoopUntilChangesCount(1); 1096 connection_->DoRunLoopUntilChangesCount(1);
1122 1097
1123 // Set view 11 on node 3. 1098 // Set view 11 on node 3.
1124 { 1099 {
1125 ASSERT_TRUE(connection_->SetView(BuildNodeId(1, 3), BuildViewId(1, 11))); 1100 ASSERT_TRUE(connection2_->SetView(BuildNodeId(2, 3), BuildViewId(2, 11)));
1126 1101
1127 connection2_->DoRunLoopUntilChangesCount(1); 1102 connection_->DoRunLoopUntilChangesCount(1);
1128 const Changes changes(ChangesToDescription1(connection2_->changes())); 1103 const Changes changes(ChangesToDescription1(connection_->changes()));
1129 ASSERT_EQ(1u, changes.size()); 1104 ASSERT_EQ(1u, changes.size());
1130 EXPECT_EQ("ViewReplaced node=1,3 new_view=1,11 old_view=null", changes[0]); 1105 EXPECT_EQ("ViewReplaced node=2,3 new_view=2,11 old_view=null", changes[0]);
1131 } 1106 }
1132 1107
1133 // Delete 3. 1108 // Delete 3.
1134 { 1109 {
1135 ASSERT_TRUE(connection_->DeleteNode(BuildNodeId(1, 3))); 1110 ASSERT_TRUE(connection2_->DeleteNode(BuildNodeId(2, 3)));
1136 1111
1137 connection2_->DoRunLoopUntilChangesCount(1); 1112 connection_->DoRunLoopUntilChangesCount(1);
1138 const Changes changes(ChangesToDescription1(connection2_->changes())); 1113 const Changes changes(ChangesToDescription1(connection_->changes()));
1139 ASSERT_EQ(1u, changes.size()); 1114 ASSERT_EQ(1u, changes.size());
1140 EXPECT_EQ("NodeDeleted node=1,3", changes[0]); 1115 EXPECT_EQ("NodeDeleted node=2,3", changes[0]);
1141 } 1116 }
1142 } 1117 }
1143 1118
1144 // Sets view from one connection on another. 1119 // Sets view from one connection on another.
1145 TEST_F(ViewManagerTest, SetViewFromSecondConnection) { 1120 TEST_F(ViewManagerTest, SetViewFromSecondConnection) {
1146 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); 1121 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true));
1147 1122
1148 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2))); 1123 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2)));
1149 1124
1150 // Create a view in the second connection. 1125 // Create a view in the second connection.
1151 ASSERT_TRUE(connection2_->CreateView(BuildViewId(2, 51))); 1126 ASSERT_TRUE(connection2_->CreateView(BuildViewId(2, 51)));
1152 1127
1153 // Attach view to node 1 in the first connection. 1128 // Attach view to node 1 in the first connection.
1154 { 1129 {
1155 ASSERT_TRUE(connection2_->SetView(BuildNodeId(1, 1), BuildViewId(2, 51))); 1130 ASSERT_TRUE(connection2_->SetView(BuildNodeId(1, 1), BuildViewId(2, 51)));
1156 connection_->DoRunLoopUntilChangesCount(1); 1131 connection_->DoRunLoopUntilChangesCount(1);
1157 const Changes changes(ChangesToDescription1(connection_->changes())); 1132 const Changes changes(ChangesToDescription1(connection_->changes()));
1158 ASSERT_EQ(1u, changes.size()); 1133 ASSERT_EQ(1u, changes.size());
1159 EXPECT_EQ("ViewReplaced node=1,1 new_view=2,51 old_view=null", changes[0]); 1134 EXPECT_EQ("ViewReplaced node=1,1 new_view=2,51 old_view=null", changes[0]);
1160 } 1135 }
1161 1136
1162 // Shutdown the second connection and verify view is removed. 1137 // Shutdown the second connection and verify view is removed.
1163 { 1138 {
1164 DestroySecondConnection(); 1139 DestroySecondConnection();
1165 connection_->DoRunLoopUntilChangesCount(2); 1140 connection_->DoRunLoopUntilChangesCount(1);
1166 const Changes changes(ChangesToDescription1(connection_->changes())); 1141 const Changes changes(ChangesToDescription1(connection_->changes()));
1167 ASSERT_EQ(2u, changes.size()); 1142 ASSERT_EQ(1u, changes.size());
1168 EXPECT_EQ("ViewReplaced node=1,1 new_view=null old_view=2,51", changes[0]); 1143 EXPECT_EQ("ViewReplaced node=1,1 new_view=null old_view=2,51", changes[0]);
1169 EXPECT_EQ("ViewDeleted view=2,51", changes[1]);
1170 } 1144 }
1171 } 1145 }
1172 1146
1173 // Assertions for GetNodeTree. 1147 // Assertions for GetNodeTree.
1174 TEST_F(ViewManagerTest, GetNodeTree) { 1148 TEST_F(ViewManagerTest, GetNodeTree) {
1175 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); 1149 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true));
1176 1150
1177 // Create 11 in first connection and make it a child of 1. 1151 // Create 11 in first connection and make it a child of 1.
1178 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 11))); 1152 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 11)));
1179 ASSERT_TRUE(connection_->AddNode(BuildNodeId(0, 1), BuildNodeId(1, 1))); 1153 ASSERT_TRUE(connection_->AddNode(BuildNodeId(0, 1), BuildNodeId(1, 1)));
(...skipping 14 matching lines...) Expand all
1194 std::vector<TestNode> nodes; 1168 std::vector<TestNode> nodes;
1195 connection_->GetNodeTree(BuildNodeId(0, 1), &nodes); 1169 connection_->GetNodeTree(BuildNodeId(0, 1), &nodes);
1196 ASSERT_EQ(5u, nodes.size()); 1170 ASSERT_EQ(5u, nodes.size());
1197 EXPECT_EQ("node=0,1 parent=null view=null", nodes[0].ToString()); 1171 EXPECT_EQ("node=0,1 parent=null view=null", nodes[0].ToString());
1198 EXPECT_EQ("node=1,1 parent=0,1 view=null", nodes[1].ToString()); 1172 EXPECT_EQ("node=1,1 parent=0,1 view=null", nodes[1].ToString());
1199 EXPECT_EQ("node=1,11 parent=1,1 view=1,51", nodes[2].ToString()); 1173 EXPECT_EQ("node=1,11 parent=1,1 view=1,51", nodes[2].ToString());
1200 EXPECT_EQ("node=2,2 parent=1,1 view=null", nodes[3].ToString()); 1174 EXPECT_EQ("node=2,2 parent=1,1 view=null", nodes[3].ToString());
1201 EXPECT_EQ("node=2,3 parent=1,1 view=null", nodes[4].ToString()); 1175 EXPECT_EQ("node=2,3 parent=1,1 view=null", nodes[4].ToString());
1202 } 1176 }
1203 1177
1204 // Verifies GetNodeTree() on the node 1,1. This does not include 1,11 as it's 1178 // Verifies GetNodeTree() on the node 1,1. This does not include any children
1205 // from a different connection. 1179 // as they are not from this connection.
1206 { 1180 {
1207 std::vector<TestNode> nodes; 1181 std::vector<TestNode> nodes;
1208 connection2_->GetNodeTree(BuildNodeId(1, 1), &nodes); 1182 connection2_->GetNodeTree(BuildNodeId(1, 1), &nodes);
1209 ASSERT_EQ(3u, nodes.size()); 1183 ASSERT_EQ(1u, nodes.size());
1210 EXPECT_EQ("node=1,1 parent=null view=null", nodes[0].ToString()); 1184 EXPECT_EQ("node=1,1 parent=null view=null", nodes[0].ToString());
1211 EXPECT_EQ("node=2,2 parent=1,1 view=null", nodes[1].ToString());
1212 EXPECT_EQ("node=2,3 parent=1,1 view=null", nodes[2].ToString());
1213 } 1185 }
1214 1186
1215 // Connection 2 shouldn't be able to get the root tree. 1187 // Connection 2 shouldn't be able to get the root tree.
1216 { 1188 {
1217 std::vector<TestNode> nodes; 1189 std::vector<TestNode> nodes;
1218 connection2_->GetNodeTree(BuildNodeId(0, 1), &nodes); 1190 connection2_->GetNodeTree(BuildNodeId(0, 1), &nodes);
1219 ASSERT_EQ(0u, nodes.size()); 1191 ASSERT_EQ(0u, nodes.size());
1220 } 1192 }
1221 } 1193 }
1222 1194
(...skipping 11 matching lines...) Expand all
1234 ASSERT_EQ(1u, changes.size()); 1206 ASSERT_EQ(1u, changes.size());
1235 EXPECT_EQ("BoundsChanged node=1,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100", 1207 EXPECT_EQ("BoundsChanged node=1,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100",
1236 changes[0]); 1208 changes[0]);
1237 1209
1238 // Should not be possible to change the bounds of a node created by another 1210 // Should not be possible to change the bounds of a node created by another
1239 // connection. 1211 // connection.
1240 ASSERT_FALSE(connection2_->SetNodeBounds(BuildNodeId(1, 1), 1212 ASSERT_FALSE(connection2_->SetNodeBounds(BuildNodeId(1, 1),
1241 gfx::Rect(0, 0, 0, 0))); 1213 gfx::Rect(0, 0, 0, 0)));
1242 } 1214 }
1243 1215
1244 // Various assertions around SetRoots.
1245 TEST_F(ViewManagerTest, SetRoots) {
1246 // Create 1, 2, and 3 in the first connection.
1247 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 1)));
1248 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2)));
1249 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 3)));
1250
1251 // Parent 1 to the root.
1252 ASSERT_TRUE(connection_->AddNode(BuildNodeId(0, 1), BuildNodeId(1, 1)));
1253
1254 // Establish the second connection with roots 1 and 3.
1255 {
1256 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false));
1257
1258 ASSERT_TRUE(connection_->Embed(BuildNodeId(1, 3), kTestServiceURL));
1259 connection2_->DoRunLoopUntilChangesCount(1);
1260 const Changes changes(ChangesToDescription1(connection2_->changes()));
1261 ASSERT_EQ(1u, changes.size());
1262 EXPECT_EQ("OnRootAdded", changes[0]);
1263 EXPECT_EQ("[node=1,3 parent=null view=null]",
1264 ChangeNodeDescription(connection2_->changes()));
1265 }
1266
1267 // Create 4 and add it to the root, connection 2 should not getting anything.
1268 {
1269 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 4)));
1270 ASSERT_TRUE(connection_->AddNode(BuildNodeId(0, 1), BuildNodeId(1, 4)));
1271 }
1272
1273 // Move 4 under 3, this should expose 4 to the client.
1274 {
1275 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 3), BuildNodeId(1, 4)));
1276 connection2_->DoRunLoopUntilChangesCount(1);
1277 const Changes changes(ChangesToDescription1(connection2_->changes()));
1278 ASSERT_EQ(1u, changes.size());
1279 EXPECT_EQ(
1280 "HierarchyChanged node=1,4 new_parent=1,3 old_parent=null", changes[0]);
1281 EXPECT_EQ("[node=1,4 parent=1,3 view=null]",
1282 ChangeNodeDescription(connection2_->changes()));
1283 }
1284
1285 // Move 4 under 2, since 2 isn't a root client should get a delete.
1286 {
1287 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 2), BuildNodeId(1, 4)));
1288 connection2_->DoRunLoopUntilChangesCount(1);
1289 const Changes changes(ChangesToDescription1(connection2_->changes()));
1290 ASSERT_EQ(1u, changes.size());
1291 EXPECT_EQ("NodeDeleted node=1,4", changes[0]);
1292 }
1293
1294 // Delete 4, client shouldn't receive a delete since it should no longer know
1295 // about 4.
1296 {
1297 ASSERT_TRUE(connection_->DeleteNode(BuildNodeId(1, 4)));
1298 }
1299 }
1300
1301 // Verify AddNode fails when trying to manipulate nodes in other roots. 1216 // Verify AddNode fails when trying to manipulate nodes in other roots.
1302 TEST_F(ViewManagerTest, CantMoveNodesFromOtherRoot) { 1217 TEST_F(ViewManagerTest, CantMoveNodesFromOtherRoot) {
1303 // Create 1 and 2 in the first connection. 1218 // Create 1 and 2 in the first connection.
1304 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 1))); 1219 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 1)));
1305 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2))); 1220 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2)));
1306 1221
1307 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false)); 1222 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false));
1308 1223
1309 // Try to move 2 to be a child of 1 from connection 2. This should fail as 2 1224 // Try to move 2 to be a child of 1 from connection 2. This should fail as 2
1310 // should not be able to access 1. 1225 // should not be able to access 1.
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1396 // Should get node 1 if asked for. 1311 // Should get node 1 if asked for.
1397 connection2_->GetNodeTree(BuildNodeId(1, 1), &nodes); 1312 connection2_->GetNodeTree(BuildNodeId(1, 1), &nodes);
1398 ASSERT_EQ(1u, nodes.size()); 1313 ASSERT_EQ(1u, nodes.size());
1399 EXPECT_EQ("node=1,1 parent=null view=null", nodes[0].ToString()); 1314 EXPECT_EQ("node=1,1 parent=null view=null", nodes[0].ToString());
1400 } 1315 }
1401 1316
1402 TEST_F(ViewManagerTest, ConnectTwice) { 1317 TEST_F(ViewManagerTest, ConnectTwice) {
1403 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 1))); 1318 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 1)));
1404 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2))); 1319 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 2)));
1405 1320
1406 ASSERT_TRUE(connection_->AddNode(BuildNodeId(1, 1), BuildNodeId(1, 2)));
1407
1408 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false)); 1321 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false));
1409 1322
1410 // Try to connect again to 1,1, this should fail as already connected to that 1323 // Try to connect again to 1,1, this should fail as already connected to that
1411 // root. 1324 // root.
1412 ASSERT_FALSE(connection_->Embed(BuildNodeId(1, 1), kTestServiceURL)); 1325 ASSERT_FALSE(connection_->Embed(BuildNodeId(1, 1), kTestServiceURL));
1413 1326
1414 // Connecting to 1,2 should succeed and end up in connection2. 1327 // Connecting to 1,2 should succeed and end up in connection2.
1415 { 1328 {
1416 ASSERT_TRUE(connection_->Embed(BuildNodeId(1, 2), kTestServiceURL)); 1329 ASSERT_TRUE(connection_->Embed(BuildNodeId(1, 2), kTestServiceURL));
1417 connection2_->DoRunLoopUntilChangesCount(1); 1330 connection2_->DoRunLoopUntilChangesCount(1);
1418 const Changes changes(ChangesToDescription1(connection2_->changes())); 1331 const Changes changes(ChangesToDescription1(connection2_->changes()));
1419 ASSERT_EQ(1u, changes.size()); 1332 ASSERT_EQ(1u, changes.size());
1420 EXPECT_EQ("OnRootAdded", changes[0]); 1333 EXPECT_EQ("OnRootAdded", changes[0]);
1421 EXPECT_EQ("[node=1,2 parent=1,1 view=null]", 1334 EXPECT_EQ("[node=1,2 parent=null view=null]",
1422 ChangeNodeDescription(connection2_->changes())); 1335 ChangeNodeDescription(connection2_->changes()));
1423 } 1336 }
1424 } 1337 }
1425 1338
1426 TEST_F(ViewManagerTest, OnViewInput) { 1339 TEST_F(ViewManagerTest, OnViewInput) {
1427 // Create node 1 and assign a view from connection 2 to it. 1340 // Create node 1 and assign a view from connection 2 to it.
1428 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 1))); 1341 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 1)));
1429 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false)); 1342 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false));
1430 ASSERT_TRUE(connection2_->CreateView(BuildViewId(2, 11))); 1343 ASSERT_TRUE(connection2_->CreateView(BuildViewId(2, 11)));
1431 ASSERT_TRUE(connection2_->SetView(BuildNodeId(1, 1), BuildViewId(2, 11))); 1344 ASSERT_TRUE(connection2_->SetView(BuildNodeId(1, 1), BuildViewId(2, 11)));
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1539 // that SetBounsdNodes/AddNode and the like don't result in messages to the 1452 // that SetBounsdNodes/AddNode and the like don't result in messages to the
1540 // originating connection. 1453 // originating connection.
1541 1454
1542 // TODO(beng): Add tests for focus: 1455 // TODO(beng): Add tests for focus:
1543 // - focus between two nodes known to a connection 1456 // - focus between two nodes known to a connection
1544 // - focus between nodes unknown to one of the connections. 1457 // - focus between nodes unknown to one of the connections.
1545 // - focus between nodes unknown to either connection. 1458 // - focus between nodes unknown to either connection.
1546 1459
1547 } // namespace service 1460 } // namespace service
1548 } // namespace mojo 1461 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698