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

Side by Side Diff: ash/mus/window_manager_unittest.cc

Issue 2301353003: Changes ownership of WindowTreeClient (Closed)
Patch Set: fix navigation Created 4 years, 3 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 | « ash/mus/window_manager_application.cc ('k') | content/renderer/mus/compositor_mus_connection.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 <memory> 5 #include <memory>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "services/shell/public/cpp/service_test.h" 9 #include "services/shell/public/cpp/service_test.h"
10 #include "services/ui/public/cpp/window.h" 10 #include "services/ui/public/cpp/window.h"
11 #include "services/ui/public/cpp/window_tree_client.h" 11 #include "services/ui/public/cpp/window_tree_client.h"
12 #include "services/ui/public/cpp/window_tree_client_delegate.h" 12 #include "services/ui/public/cpp/window_tree_client_delegate.h"
13 #include "services/ui/public/interfaces/window_tree.mojom.h" 13 #include "services/ui/public/interfaces/window_tree.mojom.h"
14 14
15 namespace ash { 15 namespace ash {
16 namespace mus { 16 namespace mus {
17 17
18 class WindowTreeClientDelegate : public ui::WindowTreeClientDelegate { 18 class WindowTreeClientDelegate : public ui::WindowTreeClientDelegate {
19 public: 19 public:
20 WindowTreeClientDelegate() {} 20 WindowTreeClientDelegate() {}
21 ~WindowTreeClientDelegate() override {} 21 ~WindowTreeClientDelegate() override {}
22 22
23 private: 23 private:
24 // ui::WindowTreeClientDelegate: 24 // ui::WindowTreeClientDelegate:
25 void OnEmbed(ui::Window* root) override {} 25 void OnEmbed(ui::Window* root) override {}
26 void OnDidDestroyClient(ui::WindowTreeClient* client) override {} 26 void OnEmbedRootDestroyed(ui::Window* root) override {}
27 void OnLostConnection(ui::WindowTreeClient* client) override {}
27 void OnPointerEventObserved(const ui::PointerEvent& event, 28 void OnPointerEventObserved(const ui::PointerEvent& event,
28 ui::Window* target) override {} 29 ui::Window* target) override {}
29 30
30 DISALLOW_COPY_AND_ASSIGN(WindowTreeClientDelegate); 31 DISALLOW_COPY_AND_ASSIGN(WindowTreeClientDelegate);
31 }; 32 };
32 33
33 class WindowManagerTest : public shell::test::ServiceTest { 34 class WindowManagerTest : public shell::test::ServiceTest {
34 public: 35 public:
35 WindowManagerTest() : shell::test::ServiceTest("exe:mash_unittests") {} 36 WindowManagerTest() : shell::test::ServiceTest("exe:mash_unittests") {}
36 ~WindowManagerTest() override {} 37 ~WindowManagerTest() override {}
37 38
38 private: 39 private:
39 DISALLOW_COPY_AND_ASSIGN(WindowManagerTest); 40 DISALLOW_COPY_AND_ASSIGN(WindowManagerTest);
40 }; 41 };
41 42
42 void OnEmbed(bool success) { 43 void OnEmbed(bool success) {
43 ASSERT_TRUE(success); 44 ASSERT_TRUE(success);
44 } 45 }
45 46
46 TEST_F(WindowManagerTest, OpenWindow) { 47 TEST_F(WindowManagerTest, OpenWindow) {
47 WindowTreeClientDelegate window_tree_delegate; 48 WindowTreeClientDelegate window_tree_delegate;
48 49
49 connector()->Connect("mojo:ash"); 50 connector()->Connect("mojo:ash");
50 51
51 // Connect to mus and create a new top level window. The request goes to 52 // Connect to mus and create a new top level window. The request goes to
52 // |ash|, but is async. 53 // |ash|, but is async.
53 std::unique_ptr<ui::WindowTreeClient> client( 54 std::unique_ptr<ui::WindowTreeClient> client(
54 new ui::WindowTreeClient(&window_tree_delegate, nullptr, nullptr)); 55 new ui::WindowTreeClient(&window_tree_delegate));
55 client->ConnectViaWindowTreeFactory(connector()); 56 client->ConnectViaWindowTreeFactory(connector());
56 ui::Window* top_level_window = client->NewTopLevelWindow(nullptr); 57 ui::Window* top_level_window = client->NewTopLevelWindow(nullptr);
57 ASSERT_TRUE(top_level_window); 58 ASSERT_TRUE(top_level_window);
58 ui::Window* child_window = client->NewWindow(); 59 ui::Window* child_window = client->NewWindow();
59 ASSERT_TRUE(child_window); 60 ASSERT_TRUE(child_window);
60 top_level_window->AddChild(child_window); 61 top_level_window->AddChild(child_window);
61 62
62 // Create another WindowTreeClient by way of embedding in 63 // Create another WindowTreeClient by way of embedding in
63 // |child_window|. This blocks until it succeeds. 64 // |child_window|. This blocks until it succeeds.
64 ui::mojom::WindowTreeClientPtr tree_client; 65 ui::mojom::WindowTreeClientPtr tree_client;
65 auto tree_client_request = GetProxy(&tree_client); 66 auto tree_client_request = GetProxy(&tree_client);
66 child_window->Embed(std::move(tree_client), base::Bind(&OnEmbed)); 67 child_window->Embed(std::move(tree_client), base::Bind(&OnEmbed));
67 std::unique_ptr<ui::WindowTreeClient> child_client(new ui::WindowTreeClient( 68 std::unique_ptr<ui::WindowTreeClient> child_client(new ui::WindowTreeClient(
68 &window_tree_delegate, nullptr, std::move(tree_client_request))); 69 &window_tree_delegate, nullptr, std::move(tree_client_request)));
69 child_client->WaitForEmbed(); 70 child_client->WaitForEmbed();
70 ASSERT_TRUE(!child_client->GetRoots().empty()); 71 ASSERT_TRUE(!child_client->GetRoots().empty());
71 } 72 }
72 73
73 } // namespace mus 74 } // namespace mus
74 } // namespace ash 75 } // namespace ash
OLDNEW
« no previous file with comments | « ash/mus/window_manager_application.cc ('k') | content/renderer/mus/compositor_mus_connection.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698