Chromium Code Reviews| 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 root_window_controllers_.erase(std::find(root_window_controllers_.begin(), | |
|
James Cook
2016/05/06 19:46:46
optional: Maybe DCHECK that controller is in the c
sky
2016/05/06 22:12:57
Done.
| |
| 45 root_window_controllers_.end(), | |
| 46 controller)); | |
| 47 } | |
| 48 | |
| 49 // static | |
| 50 WmWindowMus* WmGlobalsMus::GetToplevelAncestor(mus::Window* window) { | |
| 51 while (window) { | |
| 52 if (!window->parent()) | |
| 53 return nullptr; | |
|
James Cook
2016/05/06 19:46:46
Does this match the function comment? Or is this h
sky
2016/05/06 22:12:57
Good catch, updated.
| |
| 54 if (IsActivationParent(window->parent())) | |
| 55 return WmWindowMus::Get(window); | |
| 56 window = window->parent(); | |
| 57 } | |
| 58 return nullptr; | |
| 59 } | |
| 60 | |
| 61 WmRootWindowControllerMus* WmGlobalsMus::GetRootWindowControllerWithDisplayId( | |
| 62 int64_t id) { | |
| 63 for (WmRootWindowControllerMus* root_window_controller : | |
| 64 root_window_controllers_) { | |
| 65 if (root_window_controller->GetDisplay().id() == id) | |
| 66 return root_window_controller; | |
| 67 } | |
| 68 NOTREACHED(); | |
| 69 return nullptr; | |
| 70 } | |
| 71 | |
| 72 ash::wm::WmWindow* WmGlobalsMus::GetFocusedWindow() { | |
| 73 return WmWindowMus::Get(connection_->GetFocusedWindow()); | |
| 74 } | |
| 75 | |
| 76 ash::wm::WmWindow* WmGlobalsMus::GetActiveWindow() { | |
| 77 return GetToplevelAncestor(connection_->GetFocusedWindow()); | |
| 78 } | |
| 79 | |
| 80 ash::wm::WmWindow* WmGlobalsMus::GetRootWindowForDisplayId(int64_t display_id) { | |
| 81 return GetRootWindowControllerWithDisplayId(display_id)->GetWindow(); | |
| 82 } | |
| 83 | |
| 84 ash::wm::WmWindow* WmGlobalsMus::GetRootWindowForNewWindows() { | |
| 85 NOTIMPLEMENTED(); | |
| 86 return root_window_controllers_[0]->GetWindow(); | |
| 87 } | |
| 88 | |
| 89 std::vector<ash::wm::WmWindow*> WmGlobalsMus::GetMruWindowListIgnoreModals() { | |
| 90 NOTIMPLEMENTED(); | |
| 91 return std::vector<ash::wm::WmWindow*>(); | |
| 92 } | |
| 93 | |
| 94 bool WmGlobalsMus::IsForceMaximizeOnFirstRun() { | |
| 95 NOTIMPLEMENTED(); | |
| 96 return false; | |
| 97 } | |
| 98 | |
| 99 bool WmGlobalsMus::IsUserSessionBlocked() { | |
| 100 NOTIMPLEMENTED(); | |
| 101 return false; | |
| 102 } | |
| 103 | |
| 104 bool WmGlobalsMus::IsScreenLocked() { | |
| 105 NOTIMPLEMENTED(); | |
| 106 return false; | |
| 107 } | |
| 108 | |
| 109 void WmGlobalsMus::LockCursor() { | |
| 110 NOTIMPLEMENTED(); | |
| 111 } | |
| 112 | |
| 113 void WmGlobalsMus::UnlockCursor() { | |
| 114 NOTIMPLEMENTED(); | |
| 115 } | |
| 116 | |
| 117 std::vector<ash::wm::WmWindow*> WmGlobalsMus::GetAllRootWindows() { | |
| 118 std::vector<ash::wm::WmWindow*> wm_windows(root_window_controllers_.size()); | |
| 119 for (size_t i = 0; i < root_window_controllers_.size(); ++i) | |
| 120 wm_windows[i] = root_window_controllers_[i]->GetWindow(); | |
| 121 return wm_windows; | |
| 122 } | |
| 123 | |
| 124 void WmGlobalsMus::RecordUserMetricsAction( | |
| 125 ash::wm::WmUserMetricsAction action) { | |
| 126 NOTIMPLEMENTED(); | |
| 127 } | |
| 128 | |
| 129 std::unique_ptr<ash::WindowResizer> WmGlobalsMus::CreateDragWindowResizer( | |
| 130 std::unique_ptr<ash::WindowResizer> next_window_resizer, | |
| 131 ash::wm::WindowState* window_state) { | |
| 132 NOTIMPLEMENTED(); | |
| 133 return next_window_resizer; | |
| 134 } | |
| 135 | |
| 136 bool WmGlobalsMus::IsOverviewModeSelecting() { | |
| 137 NOTIMPLEMENTED(); | |
| 138 return false; | |
| 139 } | |
| 140 | |
| 141 bool WmGlobalsMus::IsOverviewModeRestoringMinimizedWindows() { | |
| 142 NOTIMPLEMENTED(); | |
| 143 return false; | |
| 144 } | |
| 145 | |
| 146 void WmGlobalsMus::AddActivationObserver( | |
| 147 ash::wm::WmActivationObserver* observer) { | |
| 148 activation_observers_.AddObserver(observer); | |
| 149 } | |
| 150 | |
| 151 void WmGlobalsMus::RemoveActivationObserver( | |
| 152 ash::wm::WmActivationObserver* observer) { | |
| 153 activation_observers_.RemoveObserver(observer); | |
| 154 } | |
| 155 | |
| 156 void WmGlobalsMus::AddDisplayObserver(ash::wm::WmDisplayObserver* observer) { | |
| 157 NOTIMPLEMENTED(); | |
| 158 } | |
| 159 | |
| 160 void WmGlobalsMus::RemoveDisplayObserver(ash::wm::WmDisplayObserver* observer) { | |
| 161 NOTIMPLEMENTED(); | |
| 162 } | |
| 163 | |
| 164 void WmGlobalsMus::AddOverviewModeObserver( | |
| 165 ash::wm::WmOverviewModeObserver* observer) { | |
| 166 NOTIMPLEMENTED(); | |
| 167 } | |
| 168 | |
| 169 void WmGlobalsMus::RemoveOverviewModeObserver( | |
| 170 ash::wm::WmOverviewModeObserver* observer) { | |
| 171 NOTIMPLEMENTED(); | |
| 172 } | |
| 173 | |
| 174 // static | |
| 175 bool WmGlobalsMus::IsActivationParent(mus::Window* window) { | |
| 176 return window->local_id() == ash::kShellWindowId_DefaultContainer; | |
| 177 } | |
| 178 | |
| 179 void WmGlobalsMus::OnWindowTreeFocusChanged(mus::Window* gained_focus, | |
| 180 mus::Window* lost_focus) { | |
| 181 WmWindowMus* gained_active = GetToplevelAncestor(gained_focus); | |
| 182 WmWindowMus* lost_active = GetToplevelAncestor(gained_focus); | |
| 183 if (gained_active == lost_active) | |
| 184 return; | |
| 185 | |
| 186 FOR_EACH_OBSERVER(ash::wm::WmActivationObserver, activation_observers_, | |
| 187 OnWindowActivated(gained_active, lost_active)); | |
| 188 } | |
| 189 | |
| 190 } // namespace wm | |
| 191 } // namespace mash | |
| OLD | NEW |