| OLD | NEW |
| (Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "mash/wm/bridge/wm_globals_mus.h" |
| 6 |
| 7 #include "ash/wm/common/window_resizer.h" |
| 8 #include "ash/wm/common/wm_activation_observer.h" |
| 9 #include "ash/wm/common/wm_shell_window_ids.h" |
| 10 #include "components/mus/common/util.h" |
| 11 #include "components/mus/public/cpp/window.h" |
| 12 #include "components/mus/public/cpp/window_tree_connection.h" |
| 13 #include "mash/wm/bridge/wm_root_window_controller_mus.h" |
| 14 #include "mash/wm/bridge/wm_window_mus.h" |
| 15 #include "mash/wm/public/interfaces/container.mojom.h" |
| 16 #include "mash/wm/root_window_controller.h" |
| 17 |
| 18 namespace mash { |
| 19 namespace wm { |
| 20 |
| 21 WmGlobalsMus::WmGlobalsMus(mus::WindowTreeConnection* connection) |
| 22 : connection_(connection) { |
| 23 connection_->AddObserver(this); |
| 24 WmGlobals::Set(this); |
| 25 } |
| 26 |
| 27 WmGlobalsMus::~WmGlobalsMus() { |
| 28 connection_->RemoveObserver(this); |
| 29 WmGlobals::Set(nullptr); |
| 30 } |
| 31 |
| 32 // static |
| 33 WmGlobalsMus* WmGlobalsMus::Get() { |
| 34 return static_cast<WmGlobalsMus*>(ash::wm::WmGlobals::Get()); |
| 35 } |
| 36 |
| 37 void WmGlobalsMus::AddRootWindowController( |
| 38 WmRootWindowControllerMus* controller) { |
| 39 root_window_controllers_.push_back(controller); |
| 40 } |
| 41 |
| 42 void WmGlobalsMus::RemoveRootWindowController( |
| 43 WmRootWindowControllerMus* controller) { |
| 44 auto iter = std::find(root_window_controllers_.begin(), |
| 45 root_window_controllers_.end(), controller); |
| 46 DCHECK(iter != root_window_controllers_.end()); |
| 47 root_window_controllers_.erase(iter); |
| 48 } |
| 49 |
| 50 // static |
| 51 WmWindowMus* WmGlobalsMus::GetToplevelAncestor(mus::Window* window) { |
| 52 while (window) { |
| 53 if (IsActivationParent(window->parent())) |
| 54 return WmWindowMus::Get(window); |
| 55 window = window->parent(); |
| 56 } |
| 57 return nullptr; |
| 58 } |
| 59 |
| 60 WmRootWindowControllerMus* WmGlobalsMus::GetRootWindowControllerWithDisplayId( |
| 61 int64_t id) { |
| 62 for (WmRootWindowControllerMus* root_window_controller : |
| 63 root_window_controllers_) { |
| 64 if (root_window_controller->GetDisplay().id() == id) |
| 65 return root_window_controller; |
| 66 } |
| 67 NOTREACHED(); |
| 68 return nullptr; |
| 69 } |
| 70 |
| 71 ash::wm::WmWindow* WmGlobalsMus::GetFocusedWindow() { |
| 72 return WmWindowMus::Get(connection_->GetFocusedWindow()); |
| 73 } |
| 74 |
| 75 ash::wm::WmWindow* WmGlobalsMus::GetActiveWindow() { |
| 76 return GetToplevelAncestor(connection_->GetFocusedWindow()); |
| 77 } |
| 78 |
| 79 ash::wm::WmWindow* WmGlobalsMus::GetRootWindowForDisplayId(int64_t display_id) { |
| 80 return GetRootWindowControllerWithDisplayId(display_id)->GetWindow(); |
| 81 } |
| 82 |
| 83 ash::wm::WmWindow* WmGlobalsMus::GetRootWindowForNewWindows() { |
| 84 NOTIMPLEMENTED(); |
| 85 return root_window_controllers_[0]->GetWindow(); |
| 86 } |
| 87 |
| 88 std::vector<ash::wm::WmWindow*> WmGlobalsMus::GetMruWindowListIgnoreModals() { |
| 89 NOTIMPLEMENTED(); |
| 90 return std::vector<ash::wm::WmWindow*>(); |
| 91 } |
| 92 |
| 93 bool WmGlobalsMus::IsForceMaximizeOnFirstRun() { |
| 94 NOTIMPLEMENTED(); |
| 95 return false; |
| 96 } |
| 97 |
| 98 bool WmGlobalsMus::IsUserSessionBlocked() { |
| 99 NOTIMPLEMENTED(); |
| 100 return false; |
| 101 } |
| 102 |
| 103 bool WmGlobalsMus::IsScreenLocked() { |
| 104 NOTIMPLEMENTED(); |
| 105 return false; |
| 106 } |
| 107 |
| 108 void WmGlobalsMus::LockCursor() { |
| 109 NOTIMPLEMENTED(); |
| 110 } |
| 111 |
| 112 void WmGlobalsMus::UnlockCursor() { |
| 113 NOTIMPLEMENTED(); |
| 114 } |
| 115 |
| 116 std::vector<ash::wm::WmWindow*> WmGlobalsMus::GetAllRootWindows() { |
| 117 std::vector<ash::wm::WmWindow*> wm_windows(root_window_controllers_.size()); |
| 118 for (size_t i = 0; i < root_window_controllers_.size(); ++i) |
| 119 wm_windows[i] = root_window_controllers_[i]->GetWindow(); |
| 120 return wm_windows; |
| 121 } |
| 122 |
| 123 void WmGlobalsMus::RecordUserMetricsAction( |
| 124 ash::wm::WmUserMetricsAction action) { |
| 125 NOTIMPLEMENTED(); |
| 126 } |
| 127 |
| 128 std::unique_ptr<ash::WindowResizer> WmGlobalsMus::CreateDragWindowResizer( |
| 129 std::unique_ptr<ash::WindowResizer> next_window_resizer, |
| 130 ash::wm::WindowState* window_state) { |
| 131 NOTIMPLEMENTED(); |
| 132 return next_window_resizer; |
| 133 } |
| 134 |
| 135 bool WmGlobalsMus::IsOverviewModeSelecting() { |
| 136 NOTIMPLEMENTED(); |
| 137 return false; |
| 138 } |
| 139 |
| 140 bool WmGlobalsMus::IsOverviewModeRestoringMinimizedWindows() { |
| 141 NOTIMPLEMENTED(); |
| 142 return false; |
| 143 } |
| 144 |
| 145 void WmGlobalsMus::AddActivationObserver( |
| 146 ash::wm::WmActivationObserver* observer) { |
| 147 activation_observers_.AddObserver(observer); |
| 148 } |
| 149 |
| 150 void WmGlobalsMus::RemoveActivationObserver( |
| 151 ash::wm::WmActivationObserver* observer) { |
| 152 activation_observers_.RemoveObserver(observer); |
| 153 } |
| 154 |
| 155 void WmGlobalsMus::AddDisplayObserver(ash::wm::WmDisplayObserver* observer) { |
| 156 NOTIMPLEMENTED(); |
| 157 } |
| 158 |
| 159 void WmGlobalsMus::RemoveDisplayObserver(ash::wm::WmDisplayObserver* observer) { |
| 160 NOTIMPLEMENTED(); |
| 161 } |
| 162 |
| 163 void WmGlobalsMus::AddOverviewModeObserver( |
| 164 ash::wm::WmOverviewModeObserver* observer) { |
| 165 NOTIMPLEMENTED(); |
| 166 } |
| 167 |
| 168 void WmGlobalsMus::RemoveOverviewModeObserver( |
| 169 ash::wm::WmOverviewModeObserver* observer) { |
| 170 NOTIMPLEMENTED(); |
| 171 } |
| 172 |
| 173 // static |
| 174 bool WmGlobalsMus::IsActivationParent(mus::Window* window) { |
| 175 return window && window->local_id() == ash::kShellWindowId_DefaultContainer; |
| 176 } |
| 177 |
| 178 void WmGlobalsMus::OnWindowTreeFocusChanged(mus::Window* gained_focus, |
| 179 mus::Window* lost_focus) { |
| 180 WmWindowMus* gained_active = GetToplevelAncestor(gained_focus); |
| 181 WmWindowMus* lost_active = GetToplevelAncestor(gained_focus); |
| 182 if (gained_active == lost_active) |
| 183 return; |
| 184 |
| 185 FOR_EACH_OBSERVER(ash::wm::WmActivationObserver, activation_observers_, |
| 186 OnWindowActivated(gained_active, lost_active)); |
| 187 } |
| 188 |
| 189 } // namespace wm |
| 190 } // namespace mash |
| OLD | NEW |