Index: ash/mus/bridge/wm_shell_mus.cc |
diff --git a/ash/mus/bridge/wm_shell_mus.cc b/ash/mus/bridge/wm_shell_mus.cc |
index acfd3d1a3dd06df6eec5e5244c74bfabf261fa82..ed59997c24d00ba8ceeca036a3c69afb62091911 100644 |
--- a/ash/mus/bridge/wm_shell_mus.cc |
+++ b/ash/mus/bridge/wm_shell_mus.cc |
@@ -33,12 +33,13 @@ |
#include "ash/shared/immersive_fullscreen_controller.h" |
#include "base/memory/ptr_util.h" |
#include "components/user_manager/user_info_impl.h" |
-#include "services/ui/common/util.h" |
-#include "services/ui/public/cpp/window.h" |
-#include "services/ui/public/cpp/window_tree_client.h" |
+#include "ui/aura/mus/window_tree_client.h" |
+#include "ui/aura/window.h" |
#include "ui/display/manager/managed_display_info.h" |
#include "ui/display/screen.h" |
-#include "ui/views/mus/pointer_watcher_event_router.h" |
+#include "ui/views/mus/pointer_watcher_event_router2.h" |
+#include "ui/wm/core/capture_controller.h" |
+#include "ui/wm/core/focus_controller.h" |
namespace ash { |
namespace mus { |
@@ -111,12 +112,11 @@ class SessionStateDelegateStub : public SessionStateDelegate { |
WmShellMus::WmShellMus( |
std::unique_ptr<ShellDelegate> shell_delegate, |
WindowManager* window_manager, |
- views::PointerWatcherEventRouter* pointer_watcher_event_router) |
+ views::PointerWatcherEventRouter2* pointer_watcher_event_router) |
: WmShell(std::move(shell_delegate)), |
window_manager_(window_manager), |
pointer_watcher_event_router_(pointer_watcher_event_router), |
session_state_delegate_(new SessionStateDelegateStub) { |
- window_tree_client()->AddObserver(this); |
WmShell::Set(this); |
uint16_t accelerator_namespace_id = 0u; |
@@ -157,8 +157,6 @@ WmShellMus::~WmShellMus() { |
DeleteWindowCycleController(); |
DeleteWindowSelectorController(); |
DeleteMruWindowTracker(); |
- if (window_tree_client()) |
- window_tree_client()->RemoveObserver(this); |
WmShell::Set(nullptr); |
} |
@@ -184,7 +182,7 @@ void WmShellMus::RemoveRootWindowController( |
} |
// static |
-WmWindowMus* WmShellMus::GetToplevelAncestor(ui::Window* window) { |
+WmWindowMus* WmShellMus::GetToplevelAncestor(aura::Window* window) { |
while (window) { |
if (IsActivationParent(window->parent())) |
return WmWindowMus::Get(window); |
@@ -204,29 +202,39 @@ WmRootWindowControllerMus* WmShellMus::GetRootWindowControllerWithDisplayId( |
return nullptr; |
} |
+aura::WindowTreeClient* WmShellMus::window_tree_client() { |
+ return window_manager_->window_tree_client(); |
+} |
+ |
bool WmShellMus::IsRunningInMash() const { |
return true; |
} |
WmWindow* WmShellMus::NewWindow(ui::wm::WindowType window_type, |
ui::LayerType layer_type) { |
- WmWindowMus* window = WmWindowMus::Get(window_tree_client()->NewWindow()); |
- window->set_wm_window_type(window_type); |
- // TODO(sky): support layer_type. |
- NOTIMPLEMENTED(); |
- return window; |
+ aura::Window* window = new aura::Window(nullptr); |
+ window->SetType(window_type); |
+ window->Init(layer_type); |
+ return WmWindowMus::Get(window); |
} |
WmWindow* WmShellMus::GetFocusedWindow() { |
- return WmWindowMus::Get(window_tree_client()->GetFocusedWindow()); |
+ // TODO: remove as both WmShells use same implementation. |
+ return WmWindowMus::Get(static_cast<aura::client::FocusClient*>( |
+ window_manager_->focus_controller()) |
+ ->GetFocusedWindow()); |
} |
WmWindow* WmShellMus::GetActiveWindow() { |
- return GetToplevelAncestor(window_tree_client()->GetFocusedWindow()); |
+ // TODO: remove as both WmShells use same implementation. |
+ return WmWindowMus::Get(static_cast<aura::client::ActivationClient*>( |
+ window_manager_->focus_controller()) |
+ ->GetActiveWindow()); |
} |
WmWindow* WmShellMus::GetCaptureWindow() { |
- return WmWindowMus::Get(window_tree_client()->GetCaptureWindow()); |
+ // TODO: remove as both WmShells use same implementation. |
+ return WmWindowMus::Get(::wm::CaptureController::Get()->GetCaptureWindow()); |
} |
WmWindow* WmShellMus::GetPrimaryRootWindow() { |
@@ -276,11 +284,12 @@ bool WmShellMus::IsForceMaximizeOnFirstRun() { |
void WmShellMus::SetDisplayWorkAreaInsets(WmWindow* window, |
const gfx::Insets& insets) { |
- RootWindowController* root_window_controller = |
- GetRootWindowControllerWithDisplayId( |
- WmWindowMus::GetMusWindow(window)->display_id()) |
- ->root_window_controller(); |
- root_window_controller->SetWorkAreaInests(insets); |
+ WmRootWindowControllerMus* root_window_controller_mus = |
+ static_cast<WmWindowMus*>(window)->GetRootWindowControllerMus(); |
+ if (!root_window_controller_mus) |
James Cook
2016/12/05 19:21:44
Q: How could this be null when root_window_control
sky
2016/12/05 21:39:19
You are right. Fixed.
|
+ return; |
+ root_window_controller_mus->root_window_controller()->SetWorkAreaInests( |
+ insets); |
} |
bool WmShellMus::IsPinned() { |
@@ -361,7 +370,7 @@ WmShellMus::CreateScopedDisableInternalMouseAndKeyboard() { |
std::unique_ptr<WorkspaceEventHandler> WmShellMus::CreateWorkspaceEventHandler( |
WmWindow* workspace_window) { |
return base::MakeUnique<WorkspaceEventHandlerMus>( |
- WmWindowMus::GetMusWindow(workspace_window)); |
+ WmWindowMus::GetAuraWindow(workspace_window)); |
} |
std::unique_ptr<ImmersiveFullscreenController> |
@@ -437,34 +446,23 @@ void WmShellMus::SetLaserPointerEnabled(bool enabled) { |
} |
#endif // defined(OS_CHROMEOS) |
-ui::WindowTreeClient* WmShellMus::window_tree_client() { |
- return window_manager_->window_tree_client(); |
-} |
- |
// static |
-bool WmShellMus::IsActivationParent(ui::Window* window) { |
+bool WmShellMus::IsActivationParent(aura::Window* window) { |
return window && IsActivatableShellWindowId( |
WmWindowMus::Get(window)->GetShellWindowId()); |
} |
// TODO: support OnAttemptToReactivateWindow, http://crbug.com/615114. |
-void WmShellMus::OnWindowTreeFocusChanged(ui::Window* gained_focus, |
- ui::Window* lost_focus) { |
- WmWindow* gained_active = GetToplevelAncestor(gained_focus); |
- if (gained_active) |
- set_root_window_for_new_windows(gained_active->GetRootWindow()); |
- |
- WmWindow* lost_active = GetToplevelAncestor(lost_focus); |
- if (gained_active == lost_active) |
- return; |
- |
+// TODO: Nuke and let client code use ActivationChangeObserver directly. |
+void WmShellMus::OnWindowActivated(ActivationReason reason, |
+ aura::Window* gained_active, |
+ aura::Window* lost_active) { |
+ WmWindow* gained_active_wm = WmWindowMus::Get(gained_active); |
+ if (gained_active_wm) |
+ set_root_window_for_new_windows(gained_active_wm->GetRootWindow()); |
+ WmWindow* lost_active_wm = WmWindowMus::Get(lost_active); |
for (auto& observer : activation_observers_) |
- observer.OnWindowActivated(gained_active, lost_active); |
-} |
- |
-void WmShellMus::OnDidDestroyClient(ui::WindowTreeClient* client) { |
- DCHECK_EQ(window_tree_client(), client); |
- client->RemoveObserver(this); |
+ observer.OnWindowActivated(gained_active_wm, lost_active_wm); |
} |
} // namespace mus |