OLD | NEW |
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 "mash/wm/bridge/wm_globals_mus.h" | 5 #include "ash/mus/bridge/wm_globals_mus.h" |
6 | 6 |
7 #include "ash/common/shell_window_ids.h" | 7 #include "ash/common/shell_window_ids.h" |
8 #include "ash/common/wm/window_resizer.h" | 8 #include "ash/common/wm/window_resizer.h" |
9 #include "ash/common/wm/wm_activation_observer.h" | 9 #include "ash/common/wm/wm_activation_observer.h" |
| 10 #include "ash/mus/bridge/wm_root_window_controller_mus.h" |
| 11 #include "ash/mus/bridge/wm_window_mus.h" |
| 12 #include "ash/mus/container_ids.h" |
| 13 #include "ash/mus/drag_window_resizer.h" |
| 14 #include "ash/mus/root_window_controller.h" |
10 #include "base/memory/ptr_util.h" | 15 #include "base/memory/ptr_util.h" |
11 #include "components/mus/common/util.h" | 16 #include "components/mus/common/util.h" |
12 #include "components/mus/public/cpp/window.h" | 17 #include "components/mus/public/cpp/window.h" |
13 #include "components/mus/public/cpp/window_tree_client.h" | 18 #include "components/mus/public/cpp/window_tree_client.h" |
14 #include "mash/wm/bridge/wm_root_window_controller_mus.h" | |
15 #include "mash/wm/bridge/wm_window_mus.h" | |
16 #include "mash/wm/container_ids.h" | |
17 #include "mash/wm/drag_window_resizer.h" | |
18 #include "mash/wm/root_window_controller.h" | |
19 | 19 |
20 namespace mash { | 20 namespace ash { |
21 namespace wm { | 21 namespace mus { |
22 | 22 |
23 WmGlobalsMus::WmGlobalsMus(mus::WindowTreeClient* client) | 23 WmGlobalsMus::WmGlobalsMus(::mus::WindowTreeClient* client) : client_(client) { |
24 : client_(client) { | |
25 client_->AddObserver(this); | 24 client_->AddObserver(this); |
26 WmGlobals::Set(this); | 25 WmGlobals::Set(this); |
27 } | 26 } |
28 | 27 |
29 WmGlobalsMus::~WmGlobalsMus() { | 28 WmGlobalsMus::~WmGlobalsMus() { |
30 RemoveClientObserver(); | 29 RemoveClientObserver(); |
31 WmGlobals::Set(nullptr); | 30 WmGlobals::Set(nullptr); |
32 } | 31 } |
33 | 32 |
34 // static | 33 // static |
35 WmGlobalsMus* WmGlobalsMus::Get() { | 34 WmGlobalsMus* WmGlobalsMus::Get() { |
36 return static_cast<WmGlobalsMus*>(ash::wm::WmGlobals::Get()); | 35 return static_cast<WmGlobalsMus*>(wm::WmGlobals::Get()); |
37 } | 36 } |
38 | 37 |
39 void WmGlobalsMus::AddRootWindowController( | 38 void WmGlobalsMus::AddRootWindowController( |
40 WmRootWindowControllerMus* controller) { | 39 WmRootWindowControllerMus* controller) { |
41 root_window_controllers_.push_back(controller); | 40 root_window_controllers_.push_back(controller); |
42 } | 41 } |
43 | 42 |
44 void WmGlobalsMus::RemoveRootWindowController( | 43 void WmGlobalsMus::RemoveRootWindowController( |
45 WmRootWindowControllerMus* controller) { | 44 WmRootWindowControllerMus* controller) { |
46 auto iter = std::find(root_window_controllers_.begin(), | 45 auto iter = std::find(root_window_controllers_.begin(), |
47 root_window_controllers_.end(), controller); | 46 root_window_controllers_.end(), controller); |
48 DCHECK(iter != root_window_controllers_.end()); | 47 DCHECK(iter != root_window_controllers_.end()); |
49 root_window_controllers_.erase(iter); | 48 root_window_controllers_.erase(iter); |
50 } | 49 } |
51 | 50 |
52 // static | 51 // static |
53 WmWindowMus* WmGlobalsMus::GetToplevelAncestor(mus::Window* window) { | 52 WmWindowMus* WmGlobalsMus::GetToplevelAncestor(::mus::Window* window) { |
54 while (window) { | 53 while (window) { |
55 if (IsActivationParent(window->parent())) | 54 if (IsActivationParent(window->parent())) |
56 return WmWindowMus::Get(window); | 55 return WmWindowMus::Get(window); |
57 window = window->parent(); | 56 window = window->parent(); |
58 } | 57 } |
59 return nullptr; | 58 return nullptr; |
60 } | 59 } |
61 | 60 |
62 WmRootWindowControllerMus* WmGlobalsMus::GetRootWindowControllerWithDisplayId( | 61 WmRootWindowControllerMus* WmGlobalsMus::GetRootWindowControllerWithDisplayId( |
63 int64_t id) { | 62 int64_t id) { |
64 for (WmRootWindowControllerMus* root_window_controller : | 63 for (WmRootWindowControllerMus* root_window_controller : |
65 root_window_controllers_) { | 64 root_window_controllers_) { |
66 if (root_window_controller->GetDisplay().id() == id) | 65 if (root_window_controller->GetDisplay().id() == id) |
67 return root_window_controller; | 66 return root_window_controller; |
68 } | 67 } |
69 NOTREACHED(); | 68 NOTREACHED(); |
70 return nullptr; | 69 return nullptr; |
71 } | 70 } |
72 | 71 |
73 ash::wm::WmWindow* WmGlobalsMus::NewContainerWindow() { | 72 wm::WmWindow* WmGlobalsMus::NewContainerWindow() { |
74 return WmWindowMus::Get(client_->NewWindow()); | 73 return WmWindowMus::Get(client_->NewWindow()); |
75 } | 74 } |
76 | 75 |
77 ash::wm::WmWindow* WmGlobalsMus::GetFocusedWindow() { | 76 wm::WmWindow* WmGlobalsMus::GetFocusedWindow() { |
78 return WmWindowMus::Get(client_->GetFocusedWindow()); | 77 return WmWindowMus::Get(client_->GetFocusedWindow()); |
79 } | 78 } |
80 | 79 |
81 ash::wm::WmWindow* WmGlobalsMus::GetActiveWindow() { | 80 wm::WmWindow* WmGlobalsMus::GetActiveWindow() { |
82 return GetToplevelAncestor(client_->GetFocusedWindow()); | 81 return GetToplevelAncestor(client_->GetFocusedWindow()); |
83 } | 82 } |
84 | 83 |
85 ash::wm::WmWindow* WmGlobalsMus::GetPrimaryRootWindow() { | 84 wm::WmWindow* WmGlobalsMus::GetPrimaryRootWindow() { |
86 return root_window_controllers_[0]->GetWindow(); | 85 return root_window_controllers_[0]->GetWindow(); |
87 } | 86 } |
88 | 87 |
89 ash::wm::WmWindow* WmGlobalsMus::GetRootWindowForDisplayId(int64_t display_id) { | 88 wm::WmWindow* WmGlobalsMus::GetRootWindowForDisplayId(int64_t display_id) { |
90 return GetRootWindowControllerWithDisplayId(display_id)->GetWindow(); | 89 return GetRootWindowControllerWithDisplayId(display_id)->GetWindow(); |
91 } | 90 } |
92 | 91 |
93 ash::wm::WmWindow* WmGlobalsMus::GetRootWindowForNewWindows() { | 92 wm::WmWindow* WmGlobalsMus::GetRootWindowForNewWindows() { |
94 NOTIMPLEMENTED(); | 93 NOTIMPLEMENTED(); |
95 return root_window_controllers_[0]->GetWindow(); | 94 return root_window_controllers_[0]->GetWindow(); |
96 } | 95 } |
97 | 96 |
98 std::vector<ash::wm::WmWindow*> WmGlobalsMus::GetMruWindowList() { | 97 std::vector<wm::WmWindow*> WmGlobalsMus::GetMruWindowList() { |
99 NOTIMPLEMENTED(); | 98 NOTIMPLEMENTED(); |
100 return std::vector<ash::wm::WmWindow*>(); | 99 return std::vector<wm::WmWindow*>(); |
101 } | 100 } |
102 | 101 |
103 std::vector<ash::wm::WmWindow*> WmGlobalsMus::GetMruWindowListIgnoreModals() { | 102 std::vector<wm::WmWindow*> WmGlobalsMus::GetMruWindowListIgnoreModals() { |
104 NOTIMPLEMENTED(); | 103 NOTIMPLEMENTED(); |
105 return std::vector<ash::wm::WmWindow*>(); | 104 return std::vector<wm::WmWindow*>(); |
106 } | 105 } |
107 | 106 |
108 bool WmGlobalsMus::IsForceMaximizeOnFirstRun() { | 107 bool WmGlobalsMus::IsForceMaximizeOnFirstRun() { |
109 NOTIMPLEMENTED(); | 108 NOTIMPLEMENTED(); |
110 return false; | 109 return false; |
111 } | 110 } |
112 | 111 |
113 bool WmGlobalsMus::IsUserSessionBlocked() { | 112 bool WmGlobalsMus::IsUserSessionBlocked() { |
114 NOTIMPLEMENTED(); | 113 NOTIMPLEMENTED(); |
115 return false; | 114 return false; |
116 } | 115 } |
117 | 116 |
118 bool WmGlobalsMus::IsScreenLocked() { | 117 bool WmGlobalsMus::IsScreenLocked() { |
119 NOTIMPLEMENTED(); | 118 NOTIMPLEMENTED(); |
120 return false; | 119 return false; |
121 } | 120 } |
122 | 121 |
123 void WmGlobalsMus::LockCursor() { | 122 void WmGlobalsMus::LockCursor() { |
124 NOTIMPLEMENTED(); | 123 NOTIMPLEMENTED(); |
125 } | 124 } |
126 | 125 |
127 void WmGlobalsMus::UnlockCursor() { | 126 void WmGlobalsMus::UnlockCursor() { |
128 NOTIMPLEMENTED(); | 127 NOTIMPLEMENTED(); |
129 } | 128 } |
130 | 129 |
131 std::vector<ash::wm::WmWindow*> WmGlobalsMus::GetAllRootWindows() { | 130 std::vector<wm::WmWindow*> WmGlobalsMus::GetAllRootWindows() { |
132 std::vector<ash::wm::WmWindow*> wm_windows(root_window_controllers_.size()); | 131 std::vector<wm::WmWindow*> wm_windows(root_window_controllers_.size()); |
133 for (size_t i = 0; i < root_window_controllers_.size(); ++i) | 132 for (size_t i = 0; i < root_window_controllers_.size(); ++i) |
134 wm_windows[i] = root_window_controllers_[i]->GetWindow(); | 133 wm_windows[i] = root_window_controllers_[i]->GetWindow(); |
135 return wm_windows; | 134 return wm_windows; |
136 } | 135 } |
137 | 136 |
138 void WmGlobalsMus::RecordUserMetricsAction( | 137 void WmGlobalsMus::RecordUserMetricsAction(wm::WmUserMetricsAction action) { |
139 ash::wm::WmUserMetricsAction action) { | |
140 NOTIMPLEMENTED(); | 138 NOTIMPLEMENTED(); |
141 } | 139 } |
142 | 140 |
143 std::unique_ptr<ash::WindowResizer> WmGlobalsMus::CreateDragWindowResizer( | 141 std::unique_ptr<WindowResizer> WmGlobalsMus::CreateDragWindowResizer( |
144 std::unique_ptr<ash::WindowResizer> next_window_resizer, | 142 std::unique_ptr<WindowResizer> next_window_resizer, |
145 ash::wm::WindowState* window_state) { | 143 wm::WindowState* window_state) { |
146 return base::WrapUnique( | 144 return base::WrapUnique( |
147 new DragWindowResizer(std::move(next_window_resizer), window_state)); | 145 new DragWindowResizer(std::move(next_window_resizer), window_state)); |
148 } | 146 } |
149 | 147 |
150 bool WmGlobalsMus::IsOverviewModeSelecting() { | 148 bool WmGlobalsMus::IsOverviewModeSelecting() { |
151 NOTIMPLEMENTED(); | 149 NOTIMPLEMENTED(); |
152 return false; | 150 return false; |
153 } | 151 } |
154 | 152 |
155 bool WmGlobalsMus::IsOverviewModeRestoringMinimizedWindows() { | 153 bool WmGlobalsMus::IsOverviewModeRestoringMinimizedWindows() { |
156 NOTIMPLEMENTED(); | 154 NOTIMPLEMENTED(); |
157 return false; | 155 return false; |
158 } | 156 } |
159 | 157 |
160 void WmGlobalsMus::AddActivationObserver( | 158 void WmGlobalsMus::AddActivationObserver(wm::WmActivationObserver* observer) { |
161 ash::wm::WmActivationObserver* observer) { | |
162 activation_observers_.AddObserver(observer); | 159 activation_observers_.AddObserver(observer); |
163 } | 160 } |
164 | 161 |
165 void WmGlobalsMus::RemoveActivationObserver( | 162 void WmGlobalsMus::RemoveActivationObserver( |
166 ash::wm::WmActivationObserver* observer) { | 163 wm::WmActivationObserver* observer) { |
167 activation_observers_.RemoveObserver(observer); | 164 activation_observers_.RemoveObserver(observer); |
168 } | 165 } |
169 | 166 |
170 void WmGlobalsMus::AddDisplayObserver(ash::wm::WmDisplayObserver* observer) { | 167 void WmGlobalsMus::AddDisplayObserver(wm::WmDisplayObserver* observer) { |
171 NOTIMPLEMENTED(); | 168 NOTIMPLEMENTED(); |
172 } | 169 } |
173 | 170 |
174 void WmGlobalsMus::RemoveDisplayObserver(ash::wm::WmDisplayObserver* observer) { | 171 void WmGlobalsMus::RemoveDisplayObserver(wm::WmDisplayObserver* observer) { |
175 NOTIMPLEMENTED(); | 172 NOTIMPLEMENTED(); |
176 } | 173 } |
177 | 174 |
178 void WmGlobalsMus::AddOverviewModeObserver( | 175 void WmGlobalsMus::AddOverviewModeObserver( |
179 ash::wm::WmOverviewModeObserver* observer) { | 176 wm::WmOverviewModeObserver* observer) { |
180 NOTIMPLEMENTED(); | 177 NOTIMPLEMENTED(); |
181 } | 178 } |
182 | 179 |
183 void WmGlobalsMus::RemoveOverviewModeObserver( | 180 void WmGlobalsMus::RemoveOverviewModeObserver( |
184 ash::wm::WmOverviewModeObserver* observer) { | 181 wm::WmOverviewModeObserver* observer) { |
185 NOTIMPLEMENTED(); | 182 NOTIMPLEMENTED(); |
186 } | 183 } |
187 | 184 |
188 // static | 185 // static |
189 bool WmGlobalsMus::IsActivationParent(mus::Window* window) { | 186 bool WmGlobalsMus::IsActivationParent(::mus::Window* window) { |
190 if (!window) | 187 if (!window) |
191 return false; | 188 return false; |
192 | 189 |
193 for (size_t i = 0; i < kNumActivationContainers; ++i) { | 190 for (size_t i = 0; i < kNumActivationContainers; ++i) { |
194 if (window->local_id() == static_cast<int>(kActivationContainers[i])) | 191 if (window->local_id() == static_cast<int>(kActivationContainers[i])) |
195 return true; | 192 return true; |
196 } | 193 } |
197 return false; | 194 return false; |
198 } | 195 } |
199 | 196 |
200 void WmGlobalsMus::RemoveClientObserver() { | 197 void WmGlobalsMus::RemoveClientObserver() { |
201 if (!client_) | 198 if (!client_) |
202 return; | 199 return; |
203 | 200 |
204 client_->RemoveObserver(this); | 201 client_->RemoveObserver(this); |
205 client_ = nullptr; | 202 client_ = nullptr; |
206 } | 203 } |
207 | 204 |
208 // TODO: support OnAttemptToReactivateWindow, http://crbug.com/615114. | 205 // TODO: support OnAttemptToReactivateWindow, http://crbug.com/615114. |
209 void WmGlobalsMus::OnWindowTreeFocusChanged(mus::Window* gained_focus, | 206 void WmGlobalsMus::OnWindowTreeFocusChanged(::mus::Window* gained_focus, |
210 mus::Window* lost_focus) { | 207 ::mus::Window* lost_focus) { |
211 WmWindowMus* gained_active = GetToplevelAncestor(gained_focus); | 208 WmWindowMus* gained_active = GetToplevelAncestor(gained_focus); |
212 WmWindowMus* lost_active = GetToplevelAncestor(gained_focus); | 209 WmWindowMus* lost_active = GetToplevelAncestor(gained_focus); |
213 if (gained_active == lost_active) | 210 if (gained_active == lost_active) |
214 return; | 211 return; |
215 | 212 |
216 FOR_EACH_OBSERVER(ash::wm::WmActivationObserver, activation_observers_, | 213 FOR_EACH_OBSERVER(wm::WmActivationObserver, activation_observers_, |
217 OnWindowActivated(gained_active, lost_active)); | 214 OnWindowActivated(gained_active, lost_active)); |
218 } | 215 } |
219 | 216 |
220 void WmGlobalsMus::OnWillDestroyClient( | 217 void WmGlobalsMus::OnWillDestroyClient(::mus::WindowTreeClient* client) { |
221 mus::WindowTreeClient* client) { | |
222 DCHECK_EQ(client, client_); | 218 DCHECK_EQ(client, client_); |
223 RemoveClientObserver(); | 219 RemoveClientObserver(); |
224 } | 220 } |
225 | 221 |
226 } // namespace wm | 222 } // namespace mus |
227 } // namespace mash | 223 } // namespace ash |
OLD | NEW |