| 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 "components/arc/window_manager/arc_window_manager_bridge.h" | 5 #include "components/arc/window_manager/arc_window_manager_bridge.h" |
| 6 | 6 |
| 7 #include "ash/common/wm_shell.h" | 7 #include "ash/common/wm_shell.h" |
| 8 #include "ash/shell.h" | 8 #include "ash/shell.h" |
| 9 #include "ash/wm/maximize_mode/maximize_mode_controller.h" | 9 #include "ash/wm/maximize_mode/maximize_mode_controller.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "components/arc/arc_bridge_service.h" | 11 #include "components/arc/arc_bridge_service.h" |
| 12 | 12 |
| 13 namespace arc { | 13 namespace arc { |
| 14 | 14 |
| 15 ArcWindowManagerBridge::ArcWindowManagerBridge(ArcBridgeService* bridge_service) | 15 ArcWindowManagerBridge::ArcWindowManagerBridge(ArcBridgeService* bridge_service) |
| 16 : ArcService(bridge_service), | 16 : ArcService(bridge_service), |
| 17 current_mode_(mojom::WindowManagerMode::MODE_NORMAL) { | 17 current_mode_(mojom::WindowManagerMode::MODE_NORMAL) { |
| 18 arc_bridge_service()->AddObserver(this); | 18 arc_bridge_service()->window_manager()->AddObserver(this); |
| 19 if (!ash::WmShell::HasInstance()) { | 19 if (!ash::WmShell::HasInstance()) { |
| 20 // The shell gets always loaded before ARC. If there is no shell it can only | 20 // The shell gets always loaded before ARC. If there is no shell it can only |
| 21 // mean that a unit test is running. | 21 // mean that a unit test is running. |
| 22 return; | 22 return; |
| 23 } | 23 } |
| 24 // Monitor any mode changes from now on. | 24 // Monitor any mode changes from now on. |
| 25 ash::WmShell::Get()->AddShellObserver(this); | 25 ash::WmShell::Get()->AddShellObserver(this); |
| 26 } | 26 } |
| 27 | 27 |
| 28 void ArcWindowManagerBridge::OnWindowManagerInstanceReady() { | 28 void ArcWindowManagerBridge::OnInstanceReady() { |
| 29 if (!ash::Shell::HasInstance()) { | 29 if (!ash::Shell::HasInstance()) { |
| 30 // The shell gets always loaded before ARC. If there is no shell it can only | 30 // The shell gets always loaded before ARC. If there is no shell it can only |
| 31 // mean that a unit test is running. | 31 // mean that a unit test is running. |
| 32 return; | 32 return; |
| 33 } | 33 } |
| 34 ash::MaximizeModeController* controller = | 34 ash::MaximizeModeController* controller = |
| 35 ash::Shell::GetInstance()->maximize_mode_controller(); | 35 ash::Shell::GetInstance()->maximize_mode_controller(); |
| 36 if (!controller) | 36 if (!controller) |
| 37 return; | 37 return; |
| 38 | 38 |
| 39 // Set the initial mode configuration. | 39 // Set the initial mode configuration. |
| 40 SendWindowManagerModeChange(controller->IsMaximizeModeWindowManagerEnabled()); | 40 SendWindowManagerModeChange(controller->IsMaximizeModeWindowManagerEnabled()); |
| 41 } | 41 } |
| 42 | 42 |
| 43 ArcWindowManagerBridge::~ArcWindowManagerBridge() { | 43 ArcWindowManagerBridge::~ArcWindowManagerBridge() { |
| 44 if (ash::WmShell::HasInstance()) | 44 if (ash::WmShell::HasInstance()) |
| 45 ash::WmShell::Get()->RemoveShellObserver(this); | 45 ash::WmShell::Get()->RemoveShellObserver(this); |
| 46 arc_bridge_service()->RemoveObserver(this); | 46 arc_bridge_service()->window_manager()->RemoveObserver(this); |
| 47 } | 47 } |
| 48 | 48 |
| 49 void ArcWindowManagerBridge::OnMaximizeModeStarted() { | 49 void ArcWindowManagerBridge::OnMaximizeModeStarted() { |
| 50 SendWindowManagerModeChange(true); | 50 SendWindowManagerModeChange(true); |
| 51 } | 51 } |
| 52 | 52 |
| 53 void ArcWindowManagerBridge::OnMaximizeModeEnded() { | 53 void ArcWindowManagerBridge::OnMaximizeModeEnded() { |
| 54 SendWindowManagerModeChange(false); | 54 SendWindowManagerModeChange(false); |
| 55 } | 55 } |
| 56 | 56 |
| 57 void ArcWindowManagerBridge::SendWindowManagerModeChange( | 57 void ArcWindowManagerBridge::SendWindowManagerModeChange( |
| 58 bool touch_view_enabled) { | 58 bool touch_view_enabled) { |
| 59 // We let the ArcBridgeService check that we are calling on the right thread. | 59 // We let the ArcBridgeService check that we are calling on the right thread. |
| 60 DCHECK(ArcBridgeService::Get() != nullptr); | 60 DCHECK(ArcBridgeService::Get() != nullptr); |
| 61 mojom::WindowManagerMode wm_mode = touch_view_enabled ? | 61 mojom::WindowManagerMode wm_mode = |
| 62 mojom::WindowManagerMode::MODE_TOUCH_VIEW : | 62 touch_view_enabled ? mojom::WindowManagerMode::MODE_TOUCH_VIEW |
| 63 mojom::WindowManagerMode::MODE_NORMAL; | 63 : mojom::WindowManagerMode::MODE_NORMAL; |
| 64 | 64 |
| 65 mojom::WindowManagerInstance* wm_instance = | 65 mojom::WindowManagerInstance* wm_instance = |
| 66 arc_bridge_service()->window_manager_instance(); | 66 arc_bridge_service()->window_manager()->instance(); |
| 67 if (!wm_instance || wm_mode == current_mode_) { | 67 if (!wm_instance || wm_mode == current_mode_) { |
| 68 return; | 68 return; |
| 69 } | 69 } |
| 70 VLOG(1) << "Sending window manager mode change to " << wm_mode; | 70 VLOG(1) << "Sending window manager mode change to " << wm_mode; |
| 71 wm_instance->OnWindowManagerModeChange(wm_mode); | 71 wm_instance->OnWindowManagerModeChange(wm_mode); |
| 72 current_mode_ = wm_mode; | 72 current_mode_ = wm_mode; |
| 73 } | 73 } |
| 74 | 74 |
| 75 } // namespace arc | 75 } // namespace arc |
| OLD | NEW |