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

Side by Side Diff: components/mus/ws/window_tree_apptest.cc

Issue 1527183003: Change mojo enums to be scoped enums in the generated C++ bindings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mojo-binding-equals
Patch Set: rebase Created 4 years, 11 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
11 #include "base/run_loop.h" 11 #include "base/run_loop.h"
12 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
13 #include "components/mus/public/interfaces/window_tree.mojom.h" 13 #include "components/mus/public/interfaces/window_tree.mojom.h"
14 #include "components/mus/public/interfaces/window_tree_host.mojom.h" 14 #include "components/mus/public/interfaces/window_tree_host.mojom.h"
15 #include "components/mus/ws/ids.h" 15 #include "components/mus/ws/ids.h"
16 #include "components/mus/ws/test_change_tracker.h" 16 #include "components/mus/ws/test_change_tracker.h"
17 #include "mojo/converters/geometry/geometry_type_converters.h" 17 #include "mojo/converters/geometry/geometry_type_converters.h"
18 #include "mojo/shell/public/cpp/application_delegate.h" 18 #include "mojo/shell/public/cpp/application_delegate.h"
19 #include "mojo/shell/public/cpp/application_impl.h" 19 #include "mojo/shell/public/cpp/application_impl.h"
20 #include "mojo/shell/public/cpp/application_test_base.h" 20 #include "mojo/shell/public/cpp/application_test_base.h"
21 21
22 using mojo::ApplicationConnection; 22 using mojo::ApplicationConnection;
23 using mojo::ApplicationDelegate; 23 using mojo::ApplicationDelegate;
24 using mojo::Array; 24 using mojo::Array;
25 using mojo::Callback; 25 using mojo::Callback;
26 using mojo::InterfaceRequest; 26 using mojo::InterfaceRequest;
27 using mojo::RectPtr; 27 using mojo::RectPtr;
28 using mojo::String; 28 using mojo::String;
29 using mus::mojom::ERROR_CODE_NONE;
30 using mus::mojom::ErrorCode; 29 using mus::mojom::ErrorCode;
31 using mus::mojom::EventPtr; 30 using mus::mojom::EventPtr;
32 using mus::mojom::ViewportMetricsPtr; 31 using mus::mojom::ViewportMetricsPtr;
33 using mus::mojom::WindowDataPtr; 32 using mus::mojom::WindowDataPtr;
34 using mus::mojom::WindowTree; 33 using mus::mojom::WindowTree;
35 using mus::mojom::WindowTreeClient; 34 using mus::mojom::WindowTreeClient;
36 35
37 namespace mus { 36 namespace mus {
38 namespace ws { 37 namespace ws {
39 38
(...skipping 28 matching lines...) Expand all
68 bool EmbedUrl(mojo::ApplicationImpl* app, 67 bool EmbedUrl(mojo::ApplicationImpl* app,
69 WindowTree* ws, 68 WindowTree* ws,
70 const String& url, 69 const String& url,
71 Id root_id) { 70 Id root_id) {
72 bool result = false; 71 bool result = false;
73 base::RunLoop run_loop; 72 base::RunLoop run_loop;
74 { 73 {
75 mojom::WindowTreeClientPtr client; 74 mojom::WindowTreeClientPtr client;
76 app->ConnectToService(url.get(), &client); 75 app->ConnectToService(url.get(), &client);
77 ws->Embed(root_id, std::move(client), 76 ws->Embed(root_id, std::move(client),
78 mojom::WindowTree::ACCESS_POLICY_DEFAULT, 77 mojom::WindowTree::kAccessPolicyDefault,
79 base::Bind(&EmbedCallbackImpl, &run_loop, &result)); 78 base::Bind(&EmbedCallbackImpl, &run_loop, &result));
80 } 79 }
81 run_loop.Run(); 80 run_loop.Run();
82 return result; 81 return result;
83 } 82 }
84 83
85 bool Embed(WindowTree* ws, Id root_id, mojom::WindowTreeClientPtr client) { 84 bool Embed(WindowTree* ws, Id root_id, mojom::WindowTreeClientPtr client) {
86 bool result = false; 85 bool result = false;
87 base::RunLoop run_loop; 86 base::RunLoop run_loop;
88 { 87 {
89 ws->Embed(root_id, std::move(client), 88 ws->Embed(root_id, std::move(client),
90 mojom::WindowTree::ACCESS_POLICY_DEFAULT, 89 mojom::WindowTree::kAccessPolicyDefault,
91 base::Bind(&EmbedCallbackImpl, &run_loop, &result)); 90 base::Bind(&EmbedCallbackImpl, &run_loop, &result));
92 } 91 }
93 run_loop.Run(); 92 run_loop.Run();
94 return result; 93 return result;
95 } 94 }
96 95
97 void GetWindowTree(WindowTree* ws, 96 void GetWindowTree(WindowTree* ws,
98 Id window_id, 97 Id window_id,
99 std::vector<TestWindow>* windows) { 98 std::vector<TestWindow>* windows) {
100 base::RunLoop run_loop; 99 base::RunLoop run_loop;
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 return client_factory_->WaitForInstance(); 487 return client_factory_->WaitForInstance();
489 } 488 }
490 489
491 // Establishes a new connection by way of Embed() on the specified 490 // Establishes a new connection by way of Embed() on the specified
492 // WindowTree. 491 // WindowTree.
493 scoped_ptr<TestWindowTreeClientImpl> EstablishConnectionViaEmbed( 492 scoped_ptr<TestWindowTreeClientImpl> EstablishConnectionViaEmbed(
494 WindowTree* owner, 493 WindowTree* owner,
495 Id root_id, 494 Id root_id,
496 int* connection_id) { 495 int* connection_id) {
497 return EstablishConnectionViaEmbedWithPolicyBitmask( 496 return EstablishConnectionViaEmbedWithPolicyBitmask(
498 owner, root_id, mojom::WindowTree::ACCESS_POLICY_DEFAULT, 497 owner, root_id, mojom::WindowTree::kAccessPolicyDefault, connection_id);
499 connection_id);
500 } 498 }
501 499
502 scoped_ptr<TestWindowTreeClientImpl> 500 scoped_ptr<TestWindowTreeClientImpl>
503 EstablishConnectionViaEmbedWithPolicyBitmask(WindowTree* owner, 501 EstablishConnectionViaEmbedWithPolicyBitmask(WindowTree* owner,
504 Id root_id, 502 Id root_id,
505 uint32_t policy_bitmask, 503 uint32_t policy_bitmask,
506 int* connection_id) { 504 int* connection_id) {
507 if (!EmbedUrl(application_impl(), owner, application_impl()->url(), 505 if (!EmbedUrl(application_impl(), owner, application_impl()->url(),
508 root_id)) { 506 root_id)) {
509 ADD_FAILURE() << "Embed() failed"; 507 ADD_FAILURE() << "Embed() failed";
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after
936 ASSERT_TRUE(ws_client2()->AddWindow(window_2_1, window_2_2)); 934 ASSERT_TRUE(ws_client2()->AddWindow(window_2_1, window_2_2));
937 ASSERT_TRUE(ws_client2()->AddWindow(window_2_2, window_2_6)); 935 ASSERT_TRUE(ws_client2()->AddWindow(window_2_2, window_2_6));
938 ASSERT_TRUE(ws_client2()->AddWindow(window_2_1, window_2_3)); 936 ASSERT_TRUE(ws_client2()->AddWindow(window_2_1, window_2_3));
939 ASSERT_TRUE(ws_client1()->AddWindow(root_window_id(), window_1_4)); 937 ASSERT_TRUE(ws_client1()->AddWindow(root_window_id(), window_1_4));
940 ASSERT_TRUE(ws_client1()->AddWindow(root_window_id(), window_1_5)); 938 ASSERT_TRUE(ws_client1()->AddWindow(root_window_id(), window_1_5));
941 ASSERT_TRUE(ws_client1()->AddWindow(root_window_id(), window_2_1)); 939 ASSERT_TRUE(ws_client1()->AddWindow(root_window_id(), window_2_1));
942 940
943 { 941 {
944 changes1()->clear(); 942 changes1()->clear();
945 ASSERT_TRUE(ws_client2()->ReorderWindow(window_2_2, window_2_3, 943 ASSERT_TRUE(ws_client2()->ReorderWindow(window_2_2, window_2_3,
946 mojom::ORDER_DIRECTION_ABOVE)); 944 mojom::OrderDirection::ABOVE));
947 945
948 ws_client1_->WaitForChangeCount(1); 946 ws_client1_->WaitForChangeCount(1);
949 EXPECT_EQ("Reordered window=" + IdToString(window_2_2) + " relative=" + 947 EXPECT_EQ("Reordered window=" + IdToString(window_2_2) + " relative=" +
950 IdToString(window_2_3) + " direction=above", 948 IdToString(window_2_3) + " direction=above",
951 SingleChangeToDescription(*changes1())); 949 SingleChangeToDescription(*changes1()));
952 } 950 }
953 951
954 { 952 {
955 changes1()->clear(); 953 changes1()->clear();
956 ASSERT_TRUE(ws_client2()->ReorderWindow(window_2_2, window_2_3, 954 ASSERT_TRUE(ws_client2()->ReorderWindow(window_2_2, window_2_3,
957 mojom::ORDER_DIRECTION_BELOW)); 955 mojom::OrderDirection::BELOW));
958 956
959 ws_client1_->WaitForChangeCount(1); 957 ws_client1_->WaitForChangeCount(1);
960 EXPECT_EQ("Reordered window=" + IdToString(window_2_2) + " relative=" + 958 EXPECT_EQ("Reordered window=" + IdToString(window_2_2) + " relative=" +
961 IdToString(window_2_3) + " direction=below", 959 IdToString(window_2_3) + " direction=below",
962 SingleChangeToDescription(*changes1())); 960 SingleChangeToDescription(*changes1()));
963 } 961 }
964 962
965 // view2 is already below view3. 963 // view2 is already below view3.
966 EXPECT_FALSE(ws_client2()->ReorderWindow(window_2_2, window_2_3, 964 EXPECT_FALSE(ws_client2()->ReorderWindow(window_2_2, window_2_3,
967 mojom::ORDER_DIRECTION_BELOW)); 965 mojom::OrderDirection::BELOW));
968 966
969 // view4 & 5 are unknown to connection2_. 967 // view4 & 5 are unknown to connection2_.
970 EXPECT_FALSE(ws_client2()->ReorderWindow(window_1_4, window_1_5, 968 EXPECT_FALSE(ws_client2()->ReorderWindow(window_1_4, window_1_5,
971 mojom::ORDER_DIRECTION_ABOVE)); 969 mojom::OrderDirection::ABOVE));
972 970
973 // view6 & view3 have different parents. 971 // view6 & view3 have different parents.
974 EXPECT_FALSE(ws_client1()->ReorderWindow(window_2_3, window_2_6, 972 EXPECT_FALSE(ws_client1()->ReorderWindow(window_2_3, window_2_6,
975 mojom::ORDER_DIRECTION_ABOVE)); 973 mojom::OrderDirection::ABOVE));
976 974
977 // Non-existent window-ids 975 // Non-existent window-ids
978 EXPECT_FALSE(ws_client1()->ReorderWindow(BuildWindowId(connection_id_1(), 27), 976 EXPECT_FALSE(ws_client1()->ReorderWindow(BuildWindowId(connection_id_1(), 27),
979 BuildWindowId(connection_id_1(), 28), 977 BuildWindowId(connection_id_1(), 28),
980 mojom::ORDER_DIRECTION_ABOVE)); 978 mojom::OrderDirection::ABOVE));
981 979
982 // view7 & view8 are un-parented. 980 // view7 & view8 are un-parented.
983 EXPECT_FALSE(ws_client1()->ReorderWindow(window_2_7, window_2_8, 981 EXPECT_FALSE(ws_client1()->ReorderWindow(window_2_7, window_2_8,
984 mojom::ORDER_DIRECTION_ABOVE)); 982 mojom::OrderDirection::ABOVE));
985 } 983 }
986 984
987 // Verifies DeleteWindow works. 985 // Verifies DeleteWindow works.
988 TEST_F(WindowTreeAppTest, DeleteWindow) { 986 TEST_F(WindowTreeAppTest, DeleteWindow) {
989 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); 987 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true));
990 Id window_1_1 = BuildWindowId(connection_id_1(), 1); 988 Id window_1_1 = BuildWindowId(connection_id_1(), 1);
991 Id window_2_2 = ws_client2()->NewWindow(2); 989 Id window_2_2 = ws_client2()->NewWindow(2);
992 ASSERT_TRUE(window_2_2); 990 ASSERT_TRUE(window_2_2);
993 991
994 // Make 2 a child of 1. 992 // Make 2 a child of 1.
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
1413 } 1411 }
1414 } 1412 }
1415 1413
1416 // Test that we hear the cursor change in other connections. 1414 // Test that we hear the cursor change in other connections.
1417 TEST_F(WindowTreeAppTest, SetCursor) { 1415 TEST_F(WindowTreeAppTest, SetCursor) {
1418 // Get a second connection to listen in. 1416 // Get a second connection to listen in.
1419 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); 1417 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true));
1420 Id window_1_1 = BuildWindowId(connection_id_1(), 1); 1418 Id window_1_1 = BuildWindowId(connection_id_1(), 1);
1421 changes2()->clear(); 1419 changes2()->clear();
1422 1420
1423 ASSERT_TRUE(ws_client1()->SetPredefinedCursor(window_1_1, 1421 ASSERT_TRUE(
1424 mojom::Cursor::CURSOR_IBEAM)); 1422 ws_client1()->SetPredefinedCursor(window_1_1, mojom::Cursor::IBEAM));
1425 ws_client2_->WaitForChangeCount(1u); 1423 ws_client2_->WaitForChangeCount(1u);
1426 1424
1427 EXPECT_EQ("CursorChanged id=" + IdToString(window_1_1) + " cursor_id=4", 1425 EXPECT_EQ("CursorChanged id=" + IdToString(window_1_1) + " cursor_id=4",
1428 SingleChangeToDescription(*changes2())); 1426 SingleChangeToDescription(*changes2()));
1429 } 1427 }
1430 1428
1431 // Assertions for SetWindowVisibility sending notifications. 1429 // Assertions for SetWindowVisibility sending notifications.
1432 TEST_F(WindowTreeAppTest, SetWindowVisibilityNotifications) { 1430 TEST_F(WindowTreeAppTest, SetWindowVisibilityNotifications) {
1433 // Create 1,1 and 1,2. 1,2 is made a child of 1,1 and 1,1 a child of the root. 1431 // Create 1,1 and 1,2. 1,2 is made a child of 1,1 and 1,1 a child of the root.
1434 Id window_1_1 = ws_client1()->NewWindow(1); 1432 Id window_1_1 = ws_client1()->NewWindow(1);
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
1704 1702
1705 // Need to wait for a WindowTreeClient for same reason as above. 1703 // Need to wait for a WindowTreeClient for same reason as above.
1706 WaitForWindowTreeClient(); 1704 WaitForWindowTreeClient();
1707 1705
1708 Id window_1_2 = ws_client1()->NewWindow(2); 1706 Id window_1_2 = ws_client1()->NewWindow(2);
1709 ASSERT_TRUE(window_1_2); 1707 ASSERT_TRUE(window_1_2);
1710 ASSERT_TRUE( 1708 ASSERT_TRUE(
1711 ws_client1()->AddWindow(BuildWindowId(connection_id_1(), 1), window_1_2)); 1709 ws_client1()->AddWindow(BuildWindowId(connection_id_1(), 1), window_1_2));
1712 ASSERT_TRUE(ws_client3_.get() == nullptr); 1710 ASSERT_TRUE(ws_client3_.get() == nullptr);
1713 ws_client3_ = EstablishConnectionViaEmbedWithPolicyBitmask( 1711 ws_client3_ = EstablishConnectionViaEmbedWithPolicyBitmask(
1714 ws1(), window_1_2, mojom::WindowTree::ACCESS_POLICY_EMBED_ROOT, nullptr); 1712 ws1(), window_1_2, mojom::WindowTree::kAccessPolicyEmbedRoot, nullptr);
1715 ASSERT_TRUE(ws_client3_.get() != nullptr); 1713 ASSERT_TRUE(ws_client3_.get() != nullptr);
1716 ws_client3_->set_root_window(root_window_id()); 1714 ws_client3_->set_root_window(root_window_id());
1717 1715
1718 // window_1_2 is ws3's root, so even though v3 is an embed root it should not 1716 // window_1_2 is ws3's root, so even though v3 is an embed root it should not
1719 // be able to Embed into itself. 1717 // be able to Embed into itself.
1720 ASSERT_FALSE(EmbedUrl(application_impl(), ws3(), application_impl()->url(), 1718 ASSERT_FALSE(EmbedUrl(application_impl(), ws3(), application_impl()->url(),
1721 window_1_2)); 1719 window_1_2));
1722 } 1720 }
1723 1721
1724 // Verifies that a transient window tracks its parent's lifetime. 1722 // Verifies that a transient window tracks its parent's lifetime.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1772 // originating connection. 1770 // originating connection.
1773 1771
1774 // TODO(sky): make sure coverage of what was 1772 // TODO(sky): make sure coverage of what was
1775 // WindowManagerTest.SecondEmbedRoot_InitService and 1773 // WindowManagerTest.SecondEmbedRoot_InitService and
1776 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window 1774 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window
1777 // manager 1775 // manager
1778 // tests. 1776 // tests.
1779 1777
1780 } // namespace ws 1778 } // namespace ws
1781 } // namespace mus 1779 } // namespace mus
OLDNEW
« no previous file with comments | « components/mus/ws/window_manager_client_apptest.cc ('k') | components/mus/ws/window_tree_host_connection.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698