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

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

Issue 2089023002: Promotes remaining global window manager state into WindowManagerState (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: override Created 4 years, 5 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "components/mus/ws/window_manager_window_tree_factory.h" 5 #include "components/mus/ws/window_manager_window_tree_factory.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "components/mus/ws/global_window_manager_state.h"
9 #include "components/mus/ws/window_manager_window_tree_factory_set.h" 8 #include "components/mus/ws/window_manager_window_tree_factory_set.h"
10 #include "components/mus/ws/window_server.h" 9 #include "components/mus/ws/window_server.h"
11 #include "components/mus/ws/window_tree.h" 10 #include "components/mus/ws/window_tree.h"
12 11
13 namespace mus { 12 namespace mus {
14 namespace ws { 13 namespace ws {
15 14
16 struct WindowManagerWindowTreeFactory::PendingRequest {
17 mojom::WindowTreeRequest window_tree_request;
18 mojom::WindowTreeClientPtr window_tree_client;
19 };
20
21 WindowManagerWindowTreeFactory::WindowManagerWindowTreeFactory( 15 WindowManagerWindowTreeFactory::WindowManagerWindowTreeFactory(
22 WindowManagerWindowTreeFactorySet* window_manager_window_tree_factory_set, 16 WindowManagerWindowTreeFactorySet* window_manager_window_tree_factory_set,
23 const UserId& user_id, 17 const UserId& user_id,
24 mojo::InterfaceRequest<mojom::WindowManagerWindowTreeFactory> request) 18 mojo::InterfaceRequest<mojom::WindowManagerWindowTreeFactory> request)
25 : window_manager_window_tree_factory_set_( 19 : window_manager_window_tree_factory_set_(
26 window_manager_window_tree_factory_set), 20 window_manager_window_tree_factory_set),
27 user_id_(user_id), 21 user_id_(user_id),
28 binding_(this), 22 binding_(this),
29 window_tree_(nullptr) { 23 window_tree_(nullptr) {
30 if (request.is_pending()) 24 if (request.is_pending())
31 binding_.Bind(std::move(request)); 25 binding_.Bind(std::move(request));
32 } 26 }
33 27
34 WindowManagerWindowTreeFactory::~WindowManagerWindowTreeFactory() {} 28 WindowManagerWindowTreeFactory::~WindowManagerWindowTreeFactory() {}
35 29
36 void WindowManagerWindowTreeFactory::BindPendingRequest() {
37 if (!pending_request_)
38 return;
39
40 SetWindowTree(GetWindowServer()->CreateTreeForWindowManager(
41 user_id_, std::move(pending_request_->window_tree_request),
42 std::move(pending_request_->window_tree_client)));
43 pending_request_.reset();
44 }
45
46 void WindowManagerWindowTreeFactory::CreateWindowTree( 30 void WindowManagerWindowTreeFactory::CreateWindowTree(
47 mojom::WindowTreeRequest window_tree_request, 31 mojom::WindowTreeRequest window_tree_request,
48 mojom::WindowTreeClientPtr window_tree_client) { 32 mojom::WindowTreeClientPtr window_tree_client) {
49 // CreateWindowTree() can only be called once, so there is no reason to keep 33 // CreateWindowTree() can only be called once, so there is no reason to keep
50 // the binding around. 34 // the binding around.
51 if (binding_.is_bound()) 35 if (binding_.is_bound())
52 binding_.Close(); 36 binding_.Close();
53 37
54 if (GetWindowServer()->created_one_display()) { 38 SetWindowTree(GetWindowServer()->CreateTreeForWindowManager(
55 SetWindowTree(GetWindowServer()->CreateTreeForWindowManager( 39 user_id_, std::move(window_tree_request), std::move(window_tree_client)));
56 user_id_, std::move(window_tree_request),
57 std::move(window_tree_client)));
58 } else {
59 pending_request_.reset(new PendingRequest);
60 pending_request_->window_tree_request = std::move(window_tree_request);
61 pending_request_->window_tree_client = std::move(window_tree_client);
62 window_manager_window_tree_factory_set_
63 ->OnWindowManagerWindowTreeFactoryReady(this);
64 }
65 } 40 }
66 41
67 WindowManagerWindowTreeFactory::WindowManagerWindowTreeFactory( 42 WindowManagerWindowTreeFactory::WindowManagerWindowTreeFactory(
68 WindowManagerWindowTreeFactorySet* window_manager_window_tree_factory_set, 43 WindowManagerWindowTreeFactorySet* window_manager_window_tree_factory_set,
69 const UserId& user_id) 44 const UserId& user_id)
70 : window_manager_window_tree_factory_set_( 45 : window_manager_window_tree_factory_set_(
71 window_manager_window_tree_factory_set), 46 window_manager_window_tree_factory_set),
72 user_id_(user_id), 47 user_id_(user_id),
73 binding_(this), 48 binding_(this),
74 window_tree_(nullptr) {} 49 window_tree_(nullptr) {}
75 50
76 WindowServer* WindowManagerWindowTreeFactory::GetWindowServer() { 51 WindowServer* WindowManagerWindowTreeFactory::GetWindowServer() {
77 return window_manager_window_tree_factory_set_->window_server(); 52 return window_manager_window_tree_factory_set_->window_server();
78 } 53 }
79 54
80 void WindowManagerWindowTreeFactory::SetWindowTree(WindowTree* window_tree) { 55 void WindowManagerWindowTreeFactory::SetWindowTree(WindowTree* window_tree) {
81 DCHECK(!window_tree_); 56 DCHECK(!window_tree_);
82 window_tree_ = window_tree; 57 window_tree_ = window_tree;
83 58
84 global_window_manager_state_.reset( 59 window_manager_window_tree_factory_set_
85 new GlobalWindowManagerState(window_tree_)); 60 ->OnWindowManagerWindowTreeFactoryReady(this);
86
87 if (!pending_request_)
88 window_manager_window_tree_factory_set_
89 ->OnWindowManagerWindowTreeFactoryReady(this);
90 } 61 }
91 62
92 } // namespace ws 63 } // namespace ws
93 } // namespace mus 64 } // namespace mus
OLDNEW
« no previous file with comments | « components/mus/ws/window_manager_window_tree_factory.h ('k') | components/mus/ws/window_manager_window_tree_factory_set.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698