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 "mojo/public/cpp/application/application_delegate.h" | 8 #include "mojo/public/cpp/application/application_delegate.h" |
9 #include "mojo/public/cpp/application/application_impl.h" | 9 #include "mojo/public/cpp/application/application_impl.h" |
10 #include "mojo/public/cpp/application/application_test_base.h" | 10 #include "mojo/public/cpp/application/application_test_base.h" |
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
634 // different connection). Create a view to ensure we got a response from | 634 // different connection). Create a view to ensure we got a response from |
635 // the server. | 635 // the server. |
636 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 100))); | 636 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 100))); |
637 EXPECT_TRUE(changes2()->empty()); | 637 EXPECT_TRUE(changes2()->empty()); |
638 } | 638 } |
639 | 639 |
640 // Verifies HierarchyChanged is correctly sent for various adds/removes. | 640 // Verifies HierarchyChanged is correctly sent for various adds/removes. |
641 TEST_F(ViewManagerServiceAppTest, ViewHierarchyChangedViews) { | 641 TEST_F(ViewManagerServiceAppTest, ViewHierarchyChangedViews) { |
642 // 1,2->1,11. | 642 // 1,2->1,11. |
643 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); | 643 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); |
| 644 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 2), true)); |
644 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 11))); | 645 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 11))); |
| 646 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 11), true)); |
645 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 2), BuildViewId(1, 11))); | 647 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 2), BuildViewId(1, 11))); |
646 | 648 |
647 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 649 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 650 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 1), true)); |
| 651 |
| 652 ASSERT_TRUE(WaitForAllMessages(vm2())); |
| 653 changes2()->clear(); |
648 | 654 |
649 // 1,1->1,2->1,11 | 655 // 1,1->1,2->1,11 |
650 { | 656 { |
651 // Client 2 should not get anything (1,2 is from another connection). | 657 // Client 2 should not get anything (1,2 is from another connection). |
652 changes2()->clear(); | |
653 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 1), BuildViewId(1, 2))); | 658 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 1), BuildViewId(1, 2))); |
654 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 100))); | 659 ASSERT_TRUE(WaitForAllMessages(vm2())); |
655 EXPECT_TRUE(changes2()->empty()); | 660 EXPECT_TRUE(changes2()->empty()); |
656 } | 661 } |
657 | 662 |
658 // 0,1->1,1->1,2->1,11. | 663 // 0,1->1,1->1,2->1,11. |
659 { | 664 { |
660 // Client 2 is now connected to the root, so it should have gotten a drawn | 665 // Client 2 is now connected to the root, so it should have gotten a drawn |
661 // notification. | 666 // notification. |
662 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); | 667 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); |
663 vm_client2_->WaitForChangeCount(1u); | 668 vm_client2_->WaitForChangeCount(1u); |
664 EXPECT_EQ("DrawnStateChanged view=1,1 drawn=true", | 669 EXPECT_EQ("DrawnStateChanged view=1,1 drawn=true", |
665 SingleChangeToDescription(*changes2())); | 670 SingleChangeToDescription(*changes2())); |
666 } | 671 } |
667 | 672 |
668 // 1,1->1,2->1,11. | 673 // 1,1->1,2->1,11. |
669 { | 674 { |
670 // Client 2 is no longer connected to the root, should get drawn state | 675 // Client 2 is no longer connected to the root, should get drawn state |
671 // changed. | 676 // changed. |
672 changes2()->clear(); | 677 changes2()->clear(); |
673 ASSERT_TRUE(RemoveViewFromParent(vm1(), BuildViewId(1, 1))); | 678 ASSERT_TRUE(RemoveViewFromParent(vm1(), BuildViewId(1, 1))); |
674 vm_client2_->WaitForChangeCount(1); | 679 vm_client2_->WaitForChangeCount(1); |
675 EXPECT_EQ("DrawnStateChanged view=1,1 drawn=false", | 680 EXPECT_EQ("DrawnStateChanged view=1,1 drawn=false", |
676 SingleChangeToDescription(*changes2())); | 681 SingleChangeToDescription(*changes2())); |
677 } | 682 } |
678 | 683 |
679 // 1,1->1,2->1,11->1,111. | 684 // 1,1->1,2->1,11->1,111. |
680 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 111))); | 685 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 111))); |
| 686 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 111), true)); |
681 { | 687 { |
682 changes2()->clear(); | 688 changes2()->clear(); |
683 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 11), BuildViewId(1, 111))); | 689 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 11), BuildViewId(1, 111))); |
684 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 103))); | 690 ASSERT_TRUE(WaitForAllMessages(vm2())); |
685 EXPECT_TRUE(changes2()->empty()); | 691 EXPECT_TRUE(changes2()->empty()); |
686 } | 692 } |
687 | 693 |
688 // 0,1->1,1->1,2->1,11->1,111 | 694 // 0,1->1,1->1,2->1,11->1,111 |
689 { | 695 { |
690 changes2()->clear(); | 696 changes2()->clear(); |
691 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); | 697 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); |
692 vm_client2_->WaitForChangeCount(1); | 698 vm_client2_->WaitForChangeCount(1); |
693 EXPECT_EQ("DrawnStateChanged view=1,1 drawn=true", | 699 EXPECT_EQ("DrawnStateChanged view=1,1 drawn=true", |
694 SingleChangeToDescription(*changes2())); | 700 SingleChangeToDescription(*changes2())); |
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1114 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); | 1120 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); |
1115 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); | 1121 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); |
1116 | 1122 |
1117 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); | 1123 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); |
1118 { | 1124 { |
1119 std::vector<TestView> views; | 1125 std::vector<TestView> views; |
1120 GetViewTree(vm1(), BuildViewId(0, 1), &views); | 1126 GetViewTree(vm1(), BuildViewId(0, 1), &views); |
1121 ASSERT_EQ(2u, views.size()); | 1127 ASSERT_EQ(2u, views.size()); |
1122 EXPECT_EQ("view=0,1 parent=null visible=true drawn=true", | 1128 EXPECT_EQ("view=0,1 parent=null visible=true drawn=true", |
1123 views[0].ToString2()); | 1129 views[0].ToString2()); |
| 1130 EXPECT_EQ("view=1,1 parent=0,1 visible=false drawn=false", |
| 1131 views[1].ToString2()); |
| 1132 } |
| 1133 |
| 1134 // Show all the views. |
| 1135 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 1), true)); |
| 1136 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 2), true)); |
| 1137 { |
| 1138 std::vector<TestView> views; |
| 1139 GetViewTree(vm1(), BuildViewId(0, 1), &views); |
| 1140 ASSERT_EQ(2u, views.size()); |
| 1141 EXPECT_EQ("view=0,1 parent=null visible=true drawn=true", |
| 1142 views[0].ToString2()); |
1124 EXPECT_EQ("view=1,1 parent=0,1 visible=true drawn=true", | 1143 EXPECT_EQ("view=1,1 parent=0,1 visible=true drawn=true", |
1125 views[1].ToString2()); | 1144 views[1].ToString2()); |
1126 } | 1145 } |
1127 | 1146 |
1128 // Hide 1. | 1147 // Hide 1. |
1129 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 1), false)); | 1148 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 1), false)); |
1130 { | 1149 { |
1131 std::vector<TestView> views; | 1150 std::vector<TestView> views; |
1132 GetViewTree(vm1(), BuildViewId(1, 1), &views); | 1151 GetViewTree(vm1(), BuildViewId(1, 1), &views); |
1133 ASSERT_EQ(1u, views.size()); | 1152 ASSERT_EQ(1u, views.size()); |
(...skipping 23 matching lines...) Expand all Loading... |
1157 views[0].ToString2()); | 1176 views[0].ToString2()); |
1158 EXPECT_EQ("view=1,2 parent=1,1 visible=true drawn=true", | 1177 EXPECT_EQ("view=1,2 parent=1,1 visible=true drawn=true", |
1159 views[1].ToString2()); | 1178 views[1].ToString2()); |
1160 } | 1179 } |
1161 } | 1180 } |
1162 | 1181 |
1163 // Assertions for SetViewVisibility sending notifications. | 1182 // Assertions for SetViewVisibility sending notifications. |
1164 TEST_F(ViewManagerServiceAppTest, SetViewVisibilityNotifications) { | 1183 TEST_F(ViewManagerServiceAppTest, SetViewVisibilityNotifications) { |
1165 // Create 1,1 and 1,2. 1,2 is made a child of 1,1 and 1,1 a child of the root. | 1184 // Create 1,1 and 1,2. 1,2 is made a child of 1,1 and 1,1 a child of the root. |
1166 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); | 1185 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); |
| 1186 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 1), true)); |
1167 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); | 1187 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); |
| 1188 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 2), true)); |
1168 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); | 1189 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); |
1169 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 1), BuildViewId(1, 2))); | 1190 ASSERT_TRUE(AddView(vm1(), BuildViewId(1, 1), BuildViewId(1, 2))); |
1170 | 1191 |
1171 // Establish the second connection at 1,2. | 1192 // Establish the second connection at 1,2. |
1172 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnectionWithRoot(BuildViewId(1, 2))); | 1193 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnectionWithRoot(BuildViewId(1, 2))); |
1173 | 1194 |
1174 // Add 2,3 as a child of 1,2. | 1195 // Add 2,3 as a child of 1,2. |
1175 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 3))); | 1196 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 3))); |
1176 changes1()->clear(); | 1197 ASSERT_TRUE(SetViewVisibility(vm2(), BuildViewId(2, 3), true)); |
1177 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 2), BuildViewId(2, 3))); | 1198 ASSERT_TRUE(AddView(vm2(), BuildViewId(1, 2), BuildViewId(2, 3))); |
1178 vm_client1_.WaitForChangeCount(1); | 1199 WaitForAllMessages(vm1()); |
1179 | 1200 |
1180 changes2()->clear(); | 1201 changes2()->clear(); |
1181 // Hide 1,2 from connection 1. Connection 2 should see this. | 1202 // Hide 1,2 from connection 1. Connection 2 should see this. |
1182 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 2), false)); | 1203 ASSERT_TRUE(SetViewVisibility(vm1(), BuildViewId(1, 2), false)); |
1183 { | 1204 { |
1184 vm_client2_->WaitForChangeCount(1); | 1205 vm_client2_->WaitForChangeCount(1); |
1185 EXPECT_EQ("VisibilityChanged view=1,2 visible=false", | 1206 EXPECT_EQ("VisibilityChanged view=1,2 visible=false", |
1186 SingleChangeToDescription(*changes2())); | 1207 SingleChangeToDescription(*changes2())); |
1187 } | 1208 } |
1188 | 1209 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1246 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); | 1267 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); |
1247 | 1268 |
1248 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false)); | 1269 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false)); |
1249 changes2()->clear(); | 1270 changes2()->clear(); |
1250 | 1271 |
1251 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); | 1272 ASSERT_TRUE(AddView(vm1(), BuildViewId(0, 1), BuildViewId(1, 1))); |
1252 { | 1273 { |
1253 std::vector<TestView> views; | 1274 std::vector<TestView> views; |
1254 GetViewTree(vm1(), BuildViewId(0, 1), &views); | 1275 GetViewTree(vm1(), BuildViewId(0, 1), &views); |
1255 ASSERT_EQ(2u, views.size()); | 1276 ASSERT_EQ(2u, views.size()); |
1256 EXPECT_EQ("view=0,1 parent=null visible=true drawn=true", | 1277 EXPECT_EQ(BuildViewId(0, 1), views[0].view_id); |
1257 views[0].ToString2()); | 1278 EXPECT_EQ(BuildViewId(1, 1), views[1].view_id); |
1258 EXPECT_EQ("view=1,1 parent=0,1 visible=true drawn=true", | |
1259 views[1].ToString2()); | |
1260 | |
1261 ASSERT_EQ(0u, views[1].properties.size()); | 1279 ASSERT_EQ(0u, views[1].properties.size()); |
1262 | |
1263 vm_client2_->WaitForChangeCount(1); | |
1264 EXPECT_EQ("DrawnStateChanged view=1,1 drawn=true", | |
1265 SingleChangeToDescription(*changes2())); | |
1266 } | 1280 } |
1267 | 1281 |
1268 // Set properties on 1. | 1282 // Set properties on 1. |
1269 changes2()->clear(); | 1283 changes2()->clear(); |
1270 std::vector<uint8_t> one(1, '1'); | 1284 std::vector<uint8_t> one(1, '1'); |
1271 ASSERT_TRUE(SetViewProperty(vm1(), BuildViewId(1, 1), "one", &one)); | 1285 ASSERT_TRUE(SetViewProperty(vm1(), BuildViewId(1, 1), "one", &one)); |
1272 { | 1286 { |
1273 vm_client2_->WaitForChangeCount(1); | 1287 vm_client2_->WaitForChangeCount(1); |
1274 EXPECT_EQ("PropertyChanged view=1,1 key=one value=1", | 1288 EXPECT_EQ("PropertyChanged view=1,1 key=one value=1", |
1275 SingleChangeToDescription(*changes2())); | 1289 SingleChangeToDescription(*changes2())); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1382 // that SetBounsdViews/AddView and the like don't result in messages to the | 1396 // that SetBounsdViews/AddView and the like don't result in messages to the |
1383 // originating connection. | 1397 // originating connection. |
1384 | 1398 |
1385 // TODO(sky): make sure coverage of what was | 1399 // TODO(sky): make sure coverage of what was |
1386 // ViewManagerTest.SecondEmbedRoot_InitService and | 1400 // ViewManagerTest.SecondEmbedRoot_InitService and |
1387 // ViewManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window manager | 1401 // ViewManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window manager |
1388 // tests. | 1402 // tests. |
1389 | 1403 |
1390 } // namespace service | 1404 } // namespace service |
1391 } // namespace mojo | 1405 } // namespace mojo |
OLD | NEW |