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 "ash/mus/bridge/shell_port_mash.h" | 5 #include "ash/mus/bridge/shell_port_mash.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "ash/accelerators/accelerator_controller.h" | 9 #include "ash/accelerators/accelerator_controller.h" |
10 #include "ash/accelerators/accelerator_controller_delegate_aura.h" | 10 #include "ash/accelerators/accelerator_controller_delegate_aura.h" |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 display_synchronizer_.reset(); | 129 display_synchronizer_.reset(); |
130 | 130 |
131 if (added_display_observer_) | 131 if (added_display_observer_) |
132 Shell::Get()->window_tree_host_manager()->RemoveObserver(this); | 132 Shell::Get()->window_tree_host_manager()->RemoveObserver(this); |
133 | 133 |
134 if (mus_state_) | 134 if (mus_state_) |
135 mus_state_->pointer_watcher_adapter.reset(); | 135 mus_state_->pointer_watcher_adapter.reset(); |
136 | 136 |
137 ShellPort::Shutdown(); | 137 ShellPort::Shutdown(); |
138 | 138 |
139 // TODO(sky): Config::MASH should use WindowTreeHostManager too. | 139 if (Shell::ShouldEnableSimplifiedDisplayManagement()) |
140 if (GetAshConfig() == Config::MUS) | |
141 Shell::Get()->window_tree_host_manager()->Shutdown(); | 140 Shell::Get()->window_tree_host_manager()->Shutdown(); |
142 else | 141 else |
143 window_manager_->DeleteAllRootWindowControllers(); | 142 window_manager_->DeleteAllRootWindowControllers(); |
144 } | 143 } |
145 | 144 |
146 Config ShellPortMash::GetAshConfig() const { | 145 Config ShellPortMash::GetAshConfig() const { |
147 return window_manager_->config(); | 146 return window_manager_->config(); |
148 } | 147 } |
149 | 148 |
150 aura::Window* ShellPortMash::GetPrimaryRootWindow() { | 149 aura::Window* ShellPortMash::GetPrimaryRootWindow() { |
151 if (GetAshConfig() == Config::MUS) | 150 if (Shell::ShouldEnableSimplifiedDisplayManagement()) |
152 return Shell::Get()->window_tree_host_manager()->GetPrimaryRootWindow(); | 151 return Shell::Get()->window_tree_host_manager()->GetPrimaryRootWindow(); |
153 // NOTE: This is called before the RootWindowController has been created, so | 152 // NOTE: This is called before the RootWindowController has been created, so |
154 // it can't call through to RootWindowController to get all windows. | 153 // it can't call through to RootWindowController to get all windows. |
155 return primary_root_window_; | 154 return primary_root_window_; |
156 } | 155 } |
157 | 156 |
158 aura::Window* ShellPortMash::GetRootWindowForDisplayId(int64_t display_id) { | 157 aura::Window* ShellPortMash::GetRootWindowForDisplayId(int64_t display_id) { |
159 if (GetAshConfig() == Config::MUS) { | 158 if (Shell::ShouldEnableSimplifiedDisplayManagement()) { |
160 return Shell::Get()->window_tree_host_manager()->GetRootWindowForDisplayId( | 159 return Shell::Get()->window_tree_host_manager()->GetRootWindowForDisplayId( |
161 display_id); | 160 display_id); |
162 } | 161 } |
163 RootWindowController* root_window_controller = | 162 RootWindowController* root_window_controller = |
164 GetRootWindowControllerWithDisplayId(display_id); | 163 GetRootWindowControllerWithDisplayId(display_id); |
165 return root_window_controller ? root_window_controller->GetRootWindow() | 164 return root_window_controller ? root_window_controller->GetRootWindow() |
166 : nullptr; | 165 : nullptr; |
167 } | 166 } |
168 | 167 |
169 const display::ManagedDisplayInfo& ShellPortMash::GetDisplayInfo( | 168 const display::ManagedDisplayInfo& ShellPortMash::GetDisplayInfo( |
170 int64_t display_id) const { | 169 int64_t display_id) const { |
171 // TODO(sky): mash should use this too http://crbug.com/718860. | 170 if (Shell::ShouldEnableSimplifiedDisplayManagement()) |
172 if (GetAshConfig() == Config::MUS) | |
173 return Shell::Get()->display_manager()->GetDisplayInfo(display_id); | 171 return Shell::Get()->display_manager()->GetDisplayInfo(display_id); |
174 | 172 |
175 // TODO(mash): implement http://crbug.com/622480. | 173 // TODO(mash): implement http://crbug.com/622480. |
176 NOTIMPLEMENTED(); | 174 NOTIMPLEMENTED(); |
177 static display::ManagedDisplayInfo fake_info; | 175 static display::ManagedDisplayInfo fake_info; |
178 return fake_info; | 176 return fake_info; |
179 } | 177 } |
180 | 178 |
181 bool ShellPortMash::IsActiveDisplayId(int64_t display_id) const { | 179 bool ShellPortMash::IsActiveDisplayId(int64_t display_id) const { |
182 // TODO(sky): mash should use this too http://crbug.com/718860. | 180 if (Shell::ShouldEnableSimplifiedDisplayManagement()) |
183 if (GetAshConfig() == Config::MUS) | |
184 return Shell::Get()->display_manager()->IsActiveDisplayId(display_id); | 181 return Shell::Get()->display_manager()->IsActiveDisplayId(display_id); |
185 | 182 |
186 // TODO(mash): implement http://crbug.com/622480. | 183 // TODO(mash): implement http://crbug.com/622480. |
187 NOTIMPLEMENTED(); | 184 NOTIMPLEMENTED(); |
188 return true; | 185 return true; |
189 } | 186 } |
190 | 187 |
191 display::Display ShellPortMash::GetFirstDisplay() const { | 188 display::Display ShellPortMash::GetFirstDisplay() const { |
192 // TODO(sky): mash should use this too http://crbug.com/718860. | 189 if (Shell::ShouldEnableSimplifiedDisplayManagement()) { |
193 if (GetAshConfig() == Config::MUS) { | |
194 return Shell::Get() | 190 return Shell::Get() |
195 ->display_manager() | 191 ->display_manager() |
196 ->software_mirroring_display_list()[0]; | 192 ->software_mirroring_display_list()[0]; |
197 } | 193 } |
198 | 194 |
199 // TODO(mash): implement http://crbug.com/622480. | 195 // TODO(mash): implement http://crbug.com/622480. |
200 NOTIMPLEMENTED(); | 196 NOTIMPLEMENTED(); |
201 return display::Screen::GetScreen()->GetPrimaryDisplay(); | 197 return display::Screen::GetScreen()->GetPrimaryDisplay(); |
202 } | 198 } |
203 | 199 |
204 bool ShellPortMash::IsInUnifiedMode() const { | 200 bool ShellPortMash::IsInUnifiedMode() const { |
205 // TODO(sky): mash should use this too http://crbug.com/718860. | 201 if (Shell::ShouldEnableSimplifiedDisplayManagement()) |
206 if (GetAshConfig() == Config::MUS) | |
207 return Shell::Get()->display_manager()->IsInUnifiedMode(); | 202 return Shell::Get()->display_manager()->IsInUnifiedMode(); |
208 | 203 |
209 // TODO(mash): implement http://crbug.com/622480. | 204 // TODO(mash): implement http://crbug.com/622480. |
210 NOTIMPLEMENTED(); | 205 NOTIMPLEMENTED(); |
211 return false; | 206 return false; |
212 } | 207 } |
213 | 208 |
214 bool ShellPortMash::IsInUnifiedModeIgnoreMirroring() const { | 209 bool ShellPortMash::IsInUnifiedModeIgnoreMirroring() const { |
215 // TODO(sky): mash should use this too http://crbug.com/718860. | 210 if (Shell::ShouldEnableSimplifiedDisplayManagement()) { |
216 if (GetAshConfig() == Config::MUS) { | |
217 return Shell::Get() | 211 return Shell::Get() |
218 ->display_manager() | 212 ->display_manager() |
219 ->current_default_multi_display_mode() == | 213 ->current_default_multi_display_mode() == |
220 display::DisplayManager::UNIFIED; | 214 display::DisplayManager::UNIFIED; |
221 } | 215 } |
222 | 216 |
223 // TODO(mash): implement http://crbug.com/622480. | 217 // TODO(mash): implement http://crbug.com/622480. |
224 NOTIMPLEMENTED(); | 218 NOTIMPLEMENTED(); |
225 return false; | 219 return false; |
226 } | 220 } |
227 | 221 |
228 void ShellPortMash::SetDisplayWorkAreaInsets(aura::Window* window, | 222 void ShellPortMash::SetDisplayWorkAreaInsets(aura::Window* window, |
229 const gfx::Insets& insets) { | 223 const gfx::Insets& insets) { |
230 if (GetAshConfig() == Config::MUS) { | 224 if (Shell::ShouldEnableSimplifiedDisplayManagement()) { |
231 Shell::Get() | 225 Shell::Get() |
232 ->window_tree_host_manager() | 226 ->window_tree_host_manager() |
233 ->UpdateWorkAreaOfDisplayNearestWindow(window, insets); | 227 ->UpdateWorkAreaOfDisplayNearestWindow(window, insets); |
234 return; | 228 return; |
235 } | 229 } |
236 window_manager_->screen()->SetWorkAreaInsets(window, insets); | 230 window_manager_->screen()->SetWorkAreaInsets(window, insets); |
237 } | 231 } |
238 | 232 |
239 std::unique_ptr<display::TouchTransformSetter> | 233 std::unique_ptr<display::TouchTransformSetter> |
240 ShellPortMash::CreateTouchTransformDelegate() { | 234 ShellPortMash::CreateTouchTransformDelegate() { |
(...skipping 23 matching lines...) Expand all Loading... |
264 std::move(cursor)); | 258 std::move(cursor)); |
265 } | 259 } |
266 | 260 |
267 bool ShellPortMash::IsMouseEventsEnabled() { | 261 bool ShellPortMash::IsMouseEventsEnabled() { |
268 // TODO: http://crbug.com/637853 | 262 // TODO: http://crbug.com/637853 |
269 NOTIMPLEMENTED(); | 263 NOTIMPLEMENTED(); |
270 return true; | 264 return true; |
271 } | 265 } |
272 | 266 |
273 std::vector<aura::Window*> ShellPortMash::GetAllRootWindows() { | 267 std::vector<aura::Window*> ShellPortMash::GetAllRootWindows() { |
274 if (GetAshConfig() == Config::MUS) | 268 if (Shell::ShouldEnableSimplifiedDisplayManagement()) |
275 return Shell::Get()->window_tree_host_manager()->GetAllRootWindows(); | 269 return Shell::Get()->window_tree_host_manager()->GetAllRootWindows(); |
276 | 270 |
277 aura::Window::Windows root_windows; | 271 aura::Window::Windows root_windows; |
278 for (RootWindowController* root_window_controller : | 272 for (RootWindowController* root_window_controller : |
279 RootWindowController::root_window_controllers()) { | 273 RootWindowController::root_window_controllers()) { |
280 root_windows.push_back(root_window_controller->GetRootWindow()); | 274 root_windows.push_back(root_window_controller->GetRootWindow()); |
281 } | 275 } |
282 return root_windows; | 276 return root_windows; |
283 } | 277 } |
284 | 278 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
336 return base::MakeUnique<wm::MaximizeModeEventHandlerAura>(); | 330 return base::MakeUnique<wm::MaximizeModeEventHandlerAura>(); |
337 | 331 |
338 // TODO: need support for window manager to get events before client: | 332 // TODO: need support for window manager to get events before client: |
339 // http://crbug.com/624157. | 333 // http://crbug.com/624157. |
340 NOTIMPLEMENTED(); | 334 NOTIMPLEMENTED(); |
341 return nullptr; | 335 return nullptr; |
342 } | 336 } |
343 | 337 |
344 std::unique_ptr<ScopedDisableInternalMouseAndKeyboard> | 338 std::unique_ptr<ScopedDisableInternalMouseAndKeyboard> |
345 ShellPortMash::CreateScopedDisableInternalMouseAndKeyboard() { | 339 ShellPortMash::CreateScopedDisableInternalMouseAndKeyboard() { |
346 if (GetAshConfig() == Config::MUS) { | 340 if (Shell::ShouldEnableSimplifiedDisplayManagement()) { |
347 #if defined(USE_OZONE) | 341 #if defined(USE_OZONE) |
348 return base::MakeUnique<ScopedDisableInternalMouseAndKeyboardOzone>(); | 342 return base::MakeUnique<ScopedDisableInternalMouseAndKeyboardOzone>(); |
349 #else | 343 #else |
350 // TODO: remove this conditional. Bots build this config, but it is never | 344 // TODO: remove this conditional. Bots build this config, but it is never |
351 // actually used. http://crbug.com/671355. | 345 // actually used. http://crbug.com/671355. |
352 NOTREACHED(); | 346 NOTREACHED(); |
353 return nullptr; | 347 return nullptr; |
354 #endif | 348 #endif |
355 } | 349 } |
356 | 350 |
(...skipping 25 matching lines...) Expand all Loading... |
382 std::unique_ptr<KeyEventWatcher> ShellPortMash::CreateKeyEventWatcher() { | 376 std::unique_ptr<KeyEventWatcher> ShellPortMash::CreateKeyEventWatcher() { |
383 if (GetAshConfig() == Config::MUS) | 377 if (GetAshConfig() == Config::MUS) |
384 return base::MakeUnique<KeyEventWatcherAura>(); | 378 return base::MakeUnique<KeyEventWatcherAura>(); |
385 | 379 |
386 // TODO: needs implementation for mus, http://crbug.com/649600. | 380 // TODO: needs implementation for mus, http://crbug.com/649600. |
387 NOTIMPLEMENTED(); | 381 NOTIMPLEMENTED(); |
388 return std::unique_ptr<KeyEventWatcher>(); | 382 return std::unique_ptr<KeyEventWatcher>(); |
389 } | 383 } |
390 | 384 |
391 void ShellPortMash::AddDisplayObserver(WmDisplayObserver* observer) { | 385 void ShellPortMash::AddDisplayObserver(WmDisplayObserver* observer) { |
392 // TODO(sky): mash should use the same code as mus/classic and | 386 // TODO(sky): WmDisplayObserver should be removed; http://crbug.com/718860. |
393 // WmDisplayObserver should be removed; http://crbug.com/718860. | 387 if (!Shell::ShouldEnableSimplifiedDisplayManagement()) { |
394 if (GetAshConfig() == Config::MASH) { | |
395 NOTIMPLEMENTED(); | 388 NOTIMPLEMENTED(); |
396 return; | 389 return; |
397 } | 390 } |
398 if (!added_display_observer_) { | 391 if (!added_display_observer_) { |
399 added_display_observer_ = true; | 392 added_display_observer_ = true; |
400 Shell::Get()->window_tree_host_manager()->AddObserver(this); | 393 Shell::Get()->window_tree_host_manager()->AddObserver(this); |
401 } | 394 } |
402 display_observers_.AddObserver(observer); | 395 display_observers_.AddObserver(observer); |
403 } | 396 } |
404 | 397 |
405 void ShellPortMash::RemoveDisplayObserver(WmDisplayObserver* observer) { | 398 void ShellPortMash::RemoveDisplayObserver(WmDisplayObserver* observer) { |
406 // TODO(sky): mash should use the same code as mus/classic and | 399 // TODO(sky): WmDisplayObserver should be removed; http://crbug.com/718860. |
407 // WmDisplayObserver should be removed; http://crbug.com/718860. | 400 if (!Shell::ShouldEnableSimplifiedDisplayManagement()) { |
408 if (GetAshConfig() == Config::MASH) { | |
409 NOTIMPLEMENTED(); | 401 NOTIMPLEMENTED(); |
410 return; | 402 return; |
411 } | 403 } |
412 display_observers_.RemoveObserver(observer); | 404 display_observers_.RemoveObserver(observer); |
413 } | 405 } |
414 | 406 |
415 void ShellPortMash::AddPointerWatcher(views::PointerWatcher* watcher, | 407 void ShellPortMash::AddPointerWatcher(views::PointerWatcher* watcher, |
416 views::PointerWatcherEventTypes events) { | 408 views::PointerWatcherEventTypes events) { |
417 if (GetAshConfig() == Config::MUS) { | 409 if (GetAshConfig() == Config::MUS) { |
418 mus_state_->pointer_watcher_adapter->AddPointerWatcher(watcher, events); | 410 mus_state_->pointer_watcher_adapter->AddPointerWatcher(watcher, events); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
513 // TODO: To avoid lots of IPC AddActivationParent() should take an array. | 505 // TODO: To avoid lots of IPC AddActivationParent() should take an array. |
514 // http://crbug.com/682048. | 506 // http://crbug.com/682048. |
515 aura::Window* root_window = root_window_controller->GetRootWindow(); | 507 aura::Window* root_window = root_window_controller->GetRootWindow(); |
516 for (size_t i = 0; i < kNumActivatableShellWindowIds; ++i) { | 508 for (size_t i = 0; i < kNumActivatableShellWindowIds; ++i) { |
517 window_manager_->window_manager_client()->AddActivationParent( | 509 window_manager_->window_manager_client()->AddActivationParent( |
518 root_window->GetChildById(kActivatableShellWindowIds[i])); | 510 root_window->GetChildById(kActivatableShellWindowIds[i])); |
519 } | 511 } |
520 } | 512 } |
521 | 513 |
522 void ShellPortMash::CreatePrimaryHost() { | 514 void ShellPortMash::CreatePrimaryHost() { |
523 if (GetAshConfig() == Config::MASH) | 515 if (!Shell::ShouldEnableSimplifiedDisplayManagement()) |
524 return; | 516 return; |
525 | 517 |
526 DCHECK_EQ(Config::MUS, GetAshConfig()); | |
527 Shell::Get()->window_tree_host_manager()->Start(); | 518 Shell::Get()->window_tree_host_manager()->Start(); |
528 AshWindowTreeHostInitParams ash_init_params; | 519 AshWindowTreeHostInitParams ash_init_params; |
529 Shell::Get()->window_tree_host_manager()->CreatePrimaryHost(ash_init_params); | 520 Shell::Get()->window_tree_host_manager()->CreatePrimaryHost(ash_init_params); |
530 } | 521 } |
531 | 522 |
532 void ShellPortMash::InitHosts(const ShellInitParams& init_params) { | 523 void ShellPortMash::InitHosts(const ShellInitParams& init_params) { |
533 if (Shell::ShouldEnableSimplifiedDisplayManagement()) { | 524 if (Shell::ShouldEnableSimplifiedDisplayManagement()) { |
534 Shell::Get()->window_tree_host_manager()->InitHosts(); | 525 Shell::Get()->window_tree_host_manager()->InitHosts(); |
535 display_synchronizer_ = base::MakeUnique<DisplaySynchronizer>( | 526 display_synchronizer_ = base::MakeUnique<DisplaySynchronizer>( |
536 window_manager_->window_manager_client()); | 527 window_manager_->window_manager_client()); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
591 observer.OnDisplayConfigurationChanging(); | 582 observer.OnDisplayConfigurationChanging(); |
592 } | 583 } |
593 | 584 |
594 void ShellPortMash::OnDisplayConfigurationChanged() { | 585 void ShellPortMash::OnDisplayConfigurationChanged() { |
595 for (auto& observer : display_observers_) | 586 for (auto& observer : display_observers_) |
596 observer.OnDisplayConfigurationChanged(); | 587 observer.OnDisplayConfigurationChanged(); |
597 } | 588 } |
598 | 589 |
599 } // namespace mus | 590 } // namespace mus |
600 } // namespace ash | 591 } // namespace ash |
OLD | NEW |