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

Side by Side Diff: services/view_manager/view_manager_service_apptest.cc

Issue 1375313006: For c++, Generate enum classes instead of enum from mojom. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 2 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
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 "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"
11 #include "mojo/services/view_manager/public/interfaces/view_manager.mojom.h" 11 #include "mojo/services/view_manager/public/interfaces/view_manager.mojom.h"
12 #include "mojo/services/window_manager/public/interfaces/window_manager.mojom.h" 12 #include "mojo/services/window_manager/public/interfaces/window_manager.mojom.h"
13 #include "mojo/services/window_manager/public/interfaces/window_manager_internal .mojom.h" 13 #include "mojo/services/window_manager/public/interfaces/window_manager_internal .mojom.h"
14 #include "services/view_manager/ids.h" 14 #include "services/view_manager/ids.h"
15 #include "services/view_manager/test_change_tracker.h" 15 #include "services/view_manager/test_change_tracker.h"
16 16
17 using mojo::ApplicationConnection; 17 using mojo::ApplicationConnection;
18 using mojo::ApplicationDelegate; 18 using mojo::ApplicationDelegate;
19 using mojo::Array; 19 using mojo::Array;
20 using mojo::Callback; 20 using mojo::Callback;
21 using mojo::ConnectionSpecificId; 21 using mojo::ConnectionSpecificId;
22 using mojo::ERROR_CODE_NONE;
23 using mojo::ErrorCode; 22 using mojo::ErrorCode;
24 using mojo::EventPtr; 23 using mojo::EventPtr;
25 using mojo::Id; 24 using mojo::Id;
26 using mojo::InterfaceRequest; 25 using mojo::InterfaceRequest;
27 using mojo::ORDER_DIRECTION_ABOVE;
28 using mojo::ORDER_DIRECTION_BELOW;
29 using mojo::OrderDirection; 26 using mojo::OrderDirection;
30 using mojo::RectPtr; 27 using mojo::RectPtr;
31 using mojo::ServiceProvider; 28 using mojo::ServiceProvider;
32 using mojo::ServiceProviderPtr; 29 using mojo::ServiceProviderPtr;
33 using mojo::String; 30 using mojo::String;
34 using mojo::ViewDataPtr; 31 using mojo::ViewDataPtr;
35 using mojo::ViewManagerClient; 32 using mojo::ViewManagerClient;
36 using mojo::ViewManagerService; 33 using mojo::ViewManagerService;
37 using mojo::ViewportMetricsPtr; 34 using mojo::ViewportMetricsPtr;
38 35
(...skipping 26 matching lines...) Expand all
65 Array<ViewDataPtr> results) { 62 Array<ViewDataPtr> results) {
66 ViewDatasToTestViews(results, views); 63 ViewDatasToTestViews(results, views);
67 run_loop->Quit(); 64 run_loop->Quit();
68 } 65 }
69 66
70 // ----------------------------------------------------------------------------- 67 // -----------------------------------------------------------------------------
71 68
72 // The following functions call through to the supplied ViewManagerService. They 69 // The following functions call through to the supplied ViewManagerService. They
73 // block until call completes and return the result. 70 // block until call completes and return the result.
74 bool CreateView(ViewManagerService* vm, Id view_id) { 71 bool CreateView(ViewManagerService* vm, Id view_id) {
75 ErrorCode result = ERROR_CODE_NONE; 72 ErrorCode result = ErrorCode::NONE;
76 base::RunLoop run_loop; 73 base::RunLoop run_loop;
77 vm->CreateView(view_id, 74 vm->CreateView(view_id,
78 base::Bind(&ErrorCodeResultCallback, &run_loop, &result)); 75 base::Bind(&ErrorCodeResultCallback, &run_loop, &result));
79 run_loop.Run(); 76 run_loop.Run();
80 return result == ERROR_CODE_NONE; 77 return result == ErrorCode::NONE;
81 } 78 }
82 79
83 bool EmbedUrl(ViewManagerService* vm, const String& url, Id root_id) { 80 bool EmbedUrl(ViewManagerService* vm, const String& url, Id root_id) {
84 bool result = false; 81 bool result = false;
85 base::RunLoop run_loop; 82 base::RunLoop run_loop;
86 { 83 {
87 vm->EmbedUrl(url, root_id, nullptr, nullptr, 84 vm->EmbedUrl(url, root_id, nullptr, nullptr,
88 base::Bind(&BoolResultCallback, &run_loop, &result)); 85 base::Bind(&BoolResultCallback, &run_loop, &result));
89 } 86 }
90 run_loop.Run(); 87 run_loop.Run();
91 return result; 88 return result;
92 } 89 }
93 90
94 bool Embed(ViewManagerService* vm, 91 bool Embed(ViewManagerService* vm,
95 Id root_id, 92 Id root_id,
96 mojo::ViewManagerClientPtr client) { 93 mojo::ViewManagerClientPtr client) {
97 bool result = false; 94 bool result = false;
98 base::RunLoop run_loop; 95 base::RunLoop run_loop;
99 { 96 {
100 vm->Embed(root_id, client.Pass(), 97 vm->Embed(root_id, client.Pass(),
101 base::Bind(&BoolResultCallback, &run_loop, &result)); 98 base::Bind(&BoolResultCallback, &run_loop, &result));
102 } 99 }
103 run_loop.Run(); 100 run_loop.Run();
104 return result; 101 return result;
105 } 102 }
106 103
107 ErrorCode CreateViewWithErrorCode(ViewManagerService* vm, Id view_id) { 104 ErrorCode CreateViewWithErrorCode(ViewManagerService* vm, Id view_id) {
108 ErrorCode result = ERROR_CODE_NONE; 105 ErrorCode result = ErrorCode::NONE;
109 base::RunLoop run_loop; 106 base::RunLoop run_loop;
110 vm->CreateView(view_id, 107 vm->CreateView(view_id,
111 base::Bind(&ErrorCodeResultCallback, &run_loop, &result)); 108 base::Bind(&ErrorCodeResultCallback, &run_loop, &result));
112 run_loop.Run(); 109 run_loop.Run();
113 return result; 110 return result;
114 } 111 }
115 112
116 bool AddView(ViewManagerService* vm, Id parent, Id child) { 113 bool AddView(ViewManagerService* vm, Id parent, Id child) {
117 bool result = false; 114 bool result = false;
118 base::RunLoop run_loop; 115 base::RunLoop run_loop;
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 run_loop.Run(); 199 run_loop.Run();
203 return result; 200 return result;
204 } 201 }
205 202
206 // Utility functions ----------------------------------------------------------- 203 // Utility functions -----------------------------------------------------------
207 204
208 // Waits for all messages to be received by |vm|. This is done by attempting to 205 // Waits for all messages to be received by |vm|. This is done by attempting to
209 // create a bogus view. When we get the response we know all messages have been 206 // create a bogus view. When we get the response we know all messages have been
210 // processed. 207 // processed.
211 bool WaitForAllMessages(ViewManagerService* vm) { 208 bool WaitForAllMessages(ViewManagerService* vm) {
212 ErrorCode result = ERROR_CODE_NONE; 209 ErrorCode result = ErrorCode::NONE;
213 base::RunLoop run_loop; 210 base::RunLoop run_loop;
214 vm->CreateView(ViewIdToTransportId(InvalidViewId()), 211 vm->CreateView(ViewIdToTransportId(InvalidViewId()),
215 base::Bind(&ErrorCodeResultCallback, &run_loop, &result)); 212 base::Bind(&ErrorCodeResultCallback, &run_loop, &result));
216 run_loop.Run(); 213 run_loop.Run();
217 return result != ERROR_CODE_NONE; 214 return result != ErrorCode::NONE;
218 } 215 }
219 216
220 bool HasClonedView(const std::vector<TestView>& views) { 217 bool HasClonedView(const std::vector<TestView>& views) {
221 for (size_t i = 0; i < views.size(); ++i) 218 for (size_t i = 0; i < views.size(); ++i)
222 if (views[i].view_id == ViewIdToTransportId(ClonedViewId())) 219 if (views[i].view_id == ViewIdToTransportId(ClonedViewId()))
223 return true; 220 return true;
224 return false; 221 return false;
225 } 222 }
226 223
227 // ----------------------------------------------------------------------------- 224 // -----------------------------------------------------------------------------
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 // Connection 2 shouldn't be able to remove view 3. 650 // Connection 2 shouldn't be able to remove view 3.
654 ASSERT_FALSE(RemoveViewFromParent(vm2(), BuildViewId(3, 3))); 651 ASSERT_FALSE(RemoveViewFromParent(vm2(), BuildViewId(3, 3)));
655 } 652 }
656 653
657 // Verifies client gets a valid id. 654 // Verifies client gets a valid id.
658 TEST_F(ViewManagerServiceAppTest, CreateView) { 655 TEST_F(ViewManagerServiceAppTest, CreateView) {
659 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); 656 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1)));
660 EXPECT_TRUE(changes1()->empty()); 657 EXPECT_TRUE(changes1()->empty());
661 658
662 // Can't create a view with the same id. 659 // Can't create a view with the same id.
663 ASSERT_EQ(mojo::ERROR_CODE_VALUE_IN_USE, 660 ASSERT_EQ(mojo::ErrorCode::VALUE_IN_USE,
664 CreateViewWithErrorCode(vm1(), BuildViewId(1, 1))); 661 CreateViewWithErrorCode(vm1(), BuildViewId(1, 1)));
665 EXPECT_TRUE(changes1()->empty()); 662 EXPECT_TRUE(changes1()->empty());
666 663
667 // Can't create a view with a bogus connection id. 664 // Can't create a view with a bogus connection id.
668 EXPECT_EQ(mojo::ERROR_CODE_ILLEGAL_ARGUMENT, 665 EXPECT_EQ(mojo::ErrorCode::ILLEGAL_ARGUMENT,
669 CreateViewWithErrorCode(vm1(), BuildViewId(2, 1))); 666 CreateViewWithErrorCode(vm1(), BuildViewId(2, 1)));
670 EXPECT_TRUE(changes1()->empty()); 667 EXPECT_TRUE(changes1()->empty());
671 } 668 }
672 669
673 // Verifies AddView fails when view is already in position. 670 // Verifies AddView fails when view is already in position.
674 TEST_F(ViewManagerServiceAppTest, AddViewWithNoChange) { 671 TEST_F(ViewManagerServiceAppTest, AddViewWithNoChange) {
675 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2))); 672 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 2)));
676 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 3))); 673 ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 3)));
677 674
678 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); 675 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true));
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 ASSERT_TRUE(CreateView(vm2(), view8_id)); 840 ASSERT_TRUE(CreateView(vm2(), view8_id));
844 ASSERT_TRUE(AddView(vm2(), view1_id, view2_id)); 841 ASSERT_TRUE(AddView(vm2(), view1_id, view2_id));
845 ASSERT_TRUE(AddView(vm2(), view2_id, view6_id)); 842 ASSERT_TRUE(AddView(vm2(), view2_id, view6_id));
846 ASSERT_TRUE(AddView(vm2(), view1_id, view3_id)); 843 ASSERT_TRUE(AddView(vm2(), view1_id, view3_id));
847 ASSERT_TRUE(AddView(vm1(), ViewIdToTransportId(RootViewId()), view4_id)); 844 ASSERT_TRUE(AddView(vm1(), ViewIdToTransportId(RootViewId()), view4_id));
848 ASSERT_TRUE(AddView(vm1(), ViewIdToTransportId(RootViewId()), view5_id)); 845 ASSERT_TRUE(AddView(vm1(), ViewIdToTransportId(RootViewId()), view5_id));
849 ASSERT_TRUE(AddView(vm1(), ViewIdToTransportId(RootViewId()), view1_id)); 846 ASSERT_TRUE(AddView(vm1(), ViewIdToTransportId(RootViewId()), view1_id));
850 847
851 { 848 {
852 changes1()->clear(); 849 changes1()->clear();
853 ASSERT_TRUE(ReorderView(vm2(), view2_id, view3_id, ORDER_DIRECTION_ABOVE)); 850 ASSERT_TRUE(ReorderView(vm2(), view2_id, view3_id, OrderDirection::ABOVE));
854 851
855 vm_client1_.WaitForChangeCount(1); 852 vm_client1_.WaitForChangeCount(1);
856 EXPECT_EQ("Reordered view=2,2 relative=2,3 direction=above", 853 EXPECT_EQ("Reordered view=2,2 relative=2,3 direction=above",
857 SingleChangeToDescription(*changes1())); 854 SingleChangeToDescription(*changes1()));
858 } 855 }
859 856
860 { 857 {
861 changes1()->clear(); 858 changes1()->clear();
862 ASSERT_TRUE(ReorderView(vm2(), view2_id, view3_id, ORDER_DIRECTION_BELOW)); 859 ASSERT_TRUE(ReorderView(vm2(), view2_id, view3_id, OrderDirection::BELOW));
863 860
864 vm_client1_.WaitForChangeCount(1); 861 vm_client1_.WaitForChangeCount(1);
865 EXPECT_EQ("Reordered view=2,2 relative=2,3 direction=below", 862 EXPECT_EQ("Reordered view=2,2 relative=2,3 direction=below",
866 SingleChangeToDescription(*changes1())); 863 SingleChangeToDescription(*changes1()));
867 } 864 }
868 865
869 // view2 is already below view3. 866 // view2 is already below view3.
870 EXPECT_FALSE(ReorderView(vm2(), view2_id, view3_id, ORDER_DIRECTION_BELOW)); 867 EXPECT_FALSE(ReorderView(vm2(), view2_id, view3_id, OrderDirection::BELOW));
871 868
872 // view4 & 5 are unknown to connection2_. 869 // view4 & 5 are unknown to connection2_.
873 EXPECT_FALSE(ReorderView(vm2(), view4_id, view5_id, ORDER_DIRECTION_ABOVE)); 870 EXPECT_FALSE(ReorderView(vm2(), view4_id, view5_id, OrderDirection::ABOVE));
874 871
875 // view6 & view3 have different parents. 872 // view6 & view3 have different parents.
876 EXPECT_FALSE(ReorderView(vm1(), view3_id, view6_id, ORDER_DIRECTION_ABOVE)); 873 EXPECT_FALSE(ReorderView(vm1(), view3_id, view6_id, OrderDirection::ABOVE));
877 874
878 // Non-existent view-ids 875 // Non-existent view-ids
879 EXPECT_FALSE(ReorderView(vm1(), BuildViewId(1, 27), BuildViewId(1, 28), 876 EXPECT_FALSE(ReorderView(vm1(), BuildViewId(1, 27), BuildViewId(1, 28),
880 ORDER_DIRECTION_ABOVE)); 877 OrderDirection::ABOVE));
881 878
882 // view7 & view8 are un-parented. 879 // view7 & view8 are un-parented.
883 EXPECT_FALSE(ReorderView(vm1(), view7_id, view8_id, ORDER_DIRECTION_ABOVE)); 880 EXPECT_FALSE(ReorderView(vm1(), view7_id, view8_id, OrderDirection::ABOVE));
884 } 881 }
885 882
886 // Verifies DeleteView works. 883 // Verifies DeleteView works.
887 TEST_F(ViewManagerServiceAppTest, DeleteView) { 884 TEST_F(ViewManagerServiceAppTest, DeleteView) {
888 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); 885 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true));
889 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2))); 886 ASSERT_TRUE(CreateView(vm2(), BuildViewId(2, 2)));
890 887
891 // Make 2 a child of 1. 888 // Make 2 a child of 1.
892 { 889 {
893 changes1()->clear(); 890 changes1()->clear();
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after
1490 // TODO(sky): need to better track changes to initial connection. For example, 1487 // TODO(sky): need to better track changes to initial connection. For example,
1491 // that SetBounsdViews/AddView and the like don't result in messages to the 1488 // that SetBounsdViews/AddView and the like don't result in messages to the
1492 // originating connection. 1489 // originating connection.
1493 1490
1494 // TODO(sky): make sure coverage of what was 1491 // TODO(sky): make sure coverage of what was
1495 // ViewManagerTest.SecondEmbedRoot_InitService and 1492 // ViewManagerTest.SecondEmbedRoot_InitService and
1496 // ViewManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window manager 1493 // ViewManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window manager
1497 // tests. 1494 // tests.
1498 1495
1499 } // namespace view_manager 1496 } // namespace view_manager
OLDNEW
« no previous file with comments | « services/view_manager/test_change_tracker.cc ('k') | services/view_manager/view_manager_service_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698