Chromium Code Reviews| Index: ash/wm/maximize_mode/maximize_mode_controller.cc |
| diff --git a/ash/wm/maximize_mode/maximize_mode_controller.cc b/ash/wm/maximize_mode/maximize_mode_controller.cc |
| index 0b42e240af2e68cfd72cf5988083503f90a3a410..1faeb193d8c5c47b2cc54896eb595635d9fb8cdf 100644 |
| --- a/ash/wm/maximize_mode/maximize_mode_controller.cc |
| +++ b/ash/wm/maximize_mode/maximize_mode_controller.cc |
| @@ -11,6 +11,7 @@ |
| #include "ash/display/display_manager.h" |
| #include "ash/shell.h" |
| #include "ash/wm/maximize_mode/maximize_mode_event_blocker.h" |
| +#include "ash/wm/maximize_mode/maximize_mode_window_manager.h" |
| #include "base/auto_reset.h" |
| #include "base/command_line.h" |
| #include "ui/base/accelerators/accelerator.h" |
| @@ -155,6 +156,20 @@ bool MaximizeModeController::CanEnterMaximizeMode() { |
| switches::kAshEnableTouchViewTesting); |
| } |
| +void MaximizeModeController::EnableMaximizeModeWindowManager(bool enable) { |
| + if (enable && !maximize_mode_window_manager_.get()) { |
| + maximize_mode_window_manager_.reset(new MaximizeModeWindowManager()); |
| + Shell::GetInstance()->OnMaximizeModeStarted(); |
|
flackr
2014/05/29 16:10:06
Can you add a TODO (probably to ShellObserver) to
jonross
2014/05/29 17:40:00
Done.
|
| + } else if (!enable && maximize_mode_window_manager_.get()) { |
| + maximize_mode_window_manager_.reset(); |
| + Shell::GetInstance()->OnMaximizeModeEnded(); |
| + } |
| +} |
| + |
| +bool MaximizeModeController::IsMaximizeModeWindowManagerEnabled() const { |
| + return maximize_mode_window_manager_.get() != NULL; |
| +} |
| + |
| void MaximizeModeController::OnAccelerometerUpdated( |
| const gfx::Vector3dF& base, |
| const gfx::Vector3dF& lid) { |
| @@ -180,8 +195,7 @@ void MaximizeModeController::OnAccelerometerUpdated( |
| void MaximizeModeController::HandleHingeRotation(const gfx::Vector3dF& base, |
| const gfx::Vector3dF& lid) { |
| static const gfx::Vector3dF hinge_vector(0.0f, 1.0f, 0.0f); |
| - bool maximize_mode_engaged = |
| - Shell::GetInstance()->IsMaximizeModeWindowManagerEnabled(); |
| + bool maximize_mode_engaged = IsMaximizeModeWindowManagerEnabled(); |
| // Ignore the component of acceleration parallel to the hinge for the purposes |
| // of hinge angle calculation. |
| gfx::Vector3dF base_flattened(base); |
| @@ -216,8 +230,7 @@ void MaximizeModeController::HandleHingeRotation(const gfx::Vector3dF& base, |
| } |
| void MaximizeModeController::HandleScreenRotation(const gfx::Vector3dF& lid) { |
| - bool maximize_mode_engaged = |
| - Shell::GetInstance()->IsMaximizeModeWindowManagerEnabled(); |
| + bool maximize_mode_engaged = IsMaximizeModeWindowManagerEnabled(); |
| if (!maximize_mode_engaged || rotation_locked_) |
| return; |
| @@ -292,7 +305,7 @@ void MaximizeModeController::EnterMaximizeMode() { |
| DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
| user_rotation_ = display_manager-> |
| GetDisplayInfo(gfx::Display::InternalDisplayId()).rotation(); |
| - Shell::GetInstance()->EnableMaximizeModeWindowManager(true); |
| + EnableMaximizeModeWindowManager(true); |
| event_blocker_.reset(new MaximizeModeEventBlocker); |
| #if defined(OS_CHROMEOS) |
| event_handler_.reset(new ScreenshotActionHandler); |
| @@ -307,7 +320,7 @@ void MaximizeModeController::LeaveMaximizeMode() { |
| if (current_rotation != user_rotation_) |
| SetDisplayRotation(display_manager, user_rotation_); |
| rotation_locked_ = false; |
| - Shell::GetInstance()->EnableMaximizeModeWindowManager(false); |
| + EnableMaximizeModeWindowManager(false); |
| event_blocker_.reset(); |
| event_handler_.reset(); |
| } |