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

Side by Side Diff: mash/wm/window_manager_unittest.cc

Issue 2018823002: Eliminate WindowTreeConnection (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@connection
Patch Set: . Created 4 years, 6 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
« no previous file with comments | « mash/wm/window_manager_application.cc ('k') | services/navigation/view_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/run_loop.h" 12 #include "base/run_loop.h"
13 #include "components/mus/public/cpp/window.h" 13 #include "components/mus/public/cpp/window.h"
14 #include "components/mus/public/cpp/window_tree_connection.h" 14 #include "components/mus/public/cpp/window_tree_client.h"
15 #include "components/mus/public/cpp/window_tree_delegate.h" 15 #include "components/mus/public/cpp/window_tree_client_delegate.h"
16 #include "components/mus/public/interfaces/window_tree.mojom.h" 16 #include "components/mus/public/interfaces/window_tree.mojom.h"
17 #include "mash/wm/public/interfaces/user_window_controller.mojom.h" 17 #include "mash/wm/public/interfaces/user_window_controller.mojom.h"
18 #include "services/shell/public/cpp/shell_test.h" 18 #include "services/shell/public/cpp/shell_test.h"
19 19
20 namespace mash { 20 namespace mash {
21 namespace wm { 21 namespace wm {
22 22
23 class WindowTreeDelegateImpl : public mus::WindowTreeDelegate { 23 class WindowTreeClientDelegate : public mus::WindowTreeClientDelegate {
24 public: 24 public:
25 WindowTreeDelegateImpl() {} 25 WindowTreeClientDelegate() {}
26 ~WindowTreeDelegateImpl() override {} 26 ~WindowTreeClientDelegate() override {}
27 27
28 private: 28 private:
29 // mus::WindowTreeDelegate: 29 // mus::WindowTreeClientDelegate:
30 void OnEmbed(mus::Window* root) override {} 30 void OnEmbed(mus::Window* root) override {}
31 void OnConnectionLost(mus::WindowTreeConnection* connection) override {} 31 void OnWindowTreeClientDestroyed(mus::WindowTreeClient* client) override {}
32 void OnEventObserved(const ui::Event& event, mus::Window* target) override {} 32 void OnEventObserved(const ui::Event& event, mus::Window* target) override {}
33 33
34 DISALLOW_COPY_AND_ASSIGN(WindowTreeDelegateImpl); 34 DISALLOW_COPY_AND_ASSIGN(WindowTreeClientDelegate);
35 }; 35 };
36 36
37 class WindowManagerTest : public shell::test::ShellTest { 37 class WindowManagerTest : public shell::test::ShellTest {
38 public: 38 public:
39 WindowManagerTest() : shell::test::ShellTest("exe:mash_unittests") {} 39 WindowManagerTest() : shell::test::ShellTest("exe:mash_unittests") {}
40 ~WindowManagerTest() override {} 40 ~WindowManagerTest() override {}
41 41
42 private: 42 private:
43 DISALLOW_COPY_AND_ASSIGN(WindowManagerTest); 43 DISALLOW_COPY_AND_ASSIGN(WindowManagerTest);
44 }; 44 };
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 mojo::Binding<mojom::UserWindowObserver> binding_; 104 mojo::Binding<mojom::UserWindowObserver> binding_;
105 105
106 size_t window_count_; 106 size_t window_count_;
107 size_t expected_window_count_; 107 size_t expected_window_count_;
108 base::Closure quit_callback_; 108 base::Closure quit_callback_;
109 109
110 DISALLOW_COPY_AND_ASSIGN(TestUserWindowObserver); 110 DISALLOW_COPY_AND_ASSIGN(TestUserWindowObserver);
111 }; 111 };
112 112
113 TEST_F(WindowManagerTest, OpenWindow) { 113 TEST_F(WindowManagerTest, OpenWindow) {
114 WindowTreeDelegateImpl window_tree_delegate; 114 WindowTreeClientDelegate window_tree_delegate;
115 115
116 // Bring up the the desktop_wm. 116 // Bring up the the desktop_wm.
117 connector()->Connect("mojo:desktop_wm"); 117 connector()->Connect("mojo:desktop_wm");
118 118
119 // Connect to mus and create a new top level window. The request goes to 119 // Connect to mus and create a new top level window. The request goes to
120 // the |desktop_wm|, but is async. 120 // the |desktop_wm|, but is async.
121 std::unique_ptr<mus::WindowTreeConnection> connection( 121 std::unique_ptr<mus::WindowTreeClient> client(
122 mus::WindowTreeConnection::Create(&window_tree_delegate, connector())); 122 new mus::WindowTreeClient(&window_tree_delegate, nullptr, nullptr));
123 mus::Window* top_level_window = connection->NewTopLevelWindow(nullptr); 123 client->ConnectViaWindowTreeFactory(connector());
124 mus::Window* top_level_window = client->NewTopLevelWindow(nullptr);
124 ASSERT_TRUE(top_level_window); 125 ASSERT_TRUE(top_level_window);
125 mus::Window* child_window = connection->NewWindow(); 126 mus::Window* child_window = client->NewWindow();
126 ASSERT_TRUE(child_window); 127 ASSERT_TRUE(child_window);
127 top_level_window->AddChild(child_window); 128 top_level_window->AddChild(child_window);
128 129
129 // Create another WindowTreeConnection by way of embedding in 130 // Create another WindowTreeClient by way of embedding in
130 // |child_window|. This blocks until it succeeds. 131 // |child_window|. This blocks until it succeeds.
131 mus::mojom::WindowTreeClientPtr tree_client; 132 mus::mojom::WindowTreeClientPtr tree_client;
132 auto tree_client_request = GetProxy(&tree_client); 133 auto tree_client_request = GetProxy(&tree_client);
133 child_window->Embed(std::move(tree_client), base::Bind(&OnEmbed)); 134 child_window->Embed(std::move(tree_client), base::Bind(&OnEmbed));
134 std::unique_ptr<mus::WindowTreeConnection> child_connection( 135 std::unique_ptr<mus::WindowTreeClient> child_client(
135 mus::WindowTreeConnection::Create( 136 new mus::WindowTreeClient(&window_tree_delegate, nullptr,
136 &window_tree_delegate, std::move(tree_client_request), 137 std::move(tree_client_request)));
137 mus::WindowTreeConnection::CreateType::WAIT_FOR_EMBED)); 138 child_client->WaitForEmbed();
138 ASSERT_TRUE(!child_connection->GetRoots().empty()); 139 ASSERT_TRUE(!child_client->GetRoots().empty());
139 } 140 }
140 141
141 TEST_F(WindowManagerTest, OpenWindowAndClose) { 142 TEST_F(WindowManagerTest, OpenWindowAndClose) {
142 // Bring up the the desktop_wm. 143 // Bring up the the desktop_wm.
143 connector()->Connect("mojo:desktop_wm"); 144 connector()->Connect("mojo:desktop_wm");
144 145
145 TestUserWindowObserver observer(connector()); 146 TestUserWindowObserver observer(connector());
146 147
147 // Connect to mus and create a new top level window. 148 // Connect to mus and create a new top level window.
148 WindowTreeDelegateImpl window_tree_delegate; 149 WindowTreeClientDelegate window_tree_delegate;
149 std::unique_ptr<mus::WindowTreeConnection> connection( 150 std::unique_ptr<mus::WindowTreeClient> client(
150 mus::WindowTreeConnection::Create(&window_tree_delegate, connector())); 151 new mus::WindowTreeClient(&window_tree_delegate, nullptr, nullptr));
151 mus::Window* top_level_window = connection->NewTopLevelWindow(nullptr); 152 client->ConnectViaWindowTreeFactory(connector());
153 mus::Window* top_level_window = client->NewTopLevelWindow(nullptr);
152 ASSERT_TRUE(top_level_window); 154 ASSERT_TRUE(top_level_window);
153 155
154 observer.WaitUntilWindowCountReaches(1u); 156 observer.WaitUntilWindowCountReaches(1u);
155 connection.reset(); 157 client.reset();
156 observer.WaitUntilWindowCountReaches(0u); 158 observer.WaitUntilWindowCountReaches(0u);
157 } 159 }
158 160
159 } // namespace wm 161 } // namespace wm
160 } // namespace mash 162 } // namespace mash
OLDNEW
« no previous file with comments | « mash/wm/window_manager_application.cc ('k') | services/navigation/view_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698