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 f438d4944b44d52792d28594d0ce0c858e44ec54..b8f6f2651e939cec9e002ace511b59cc9cd2a1e2 100644 |
--- a/ash/wm/maximize_mode/maximize_mode_controller.cc |
+++ b/ash/wm/maximize_mode/maximize_mode_controller.cc |
@@ -5,9 +5,11 @@ |
#include "ash/wm/maximize_mode/maximize_mode_controller.h" |
#include "ash/accelerometer/accelerometer_controller.h" |
+#include "ash/ash_switches.h" |
#include "ash/display/display_manager.h" |
#include "ash/shell.h" |
#include "ash/wm/maximize_mode/maximize_mode_event_blocker.h" |
+#include "base/command_line.h" |
#include "ui/gfx/vector3d_f.h" |
namespace ash { |
@@ -82,7 +84,8 @@ float ClockwiseAngleBetweenVectorsInDegrees(const gfx::Vector3dF& base, |
} // namespace |
MaximizeModeController::MaximizeModeController() |
- : rotation_locked_(false) { |
+ : rotation_locked_(false), |
+ have_seen_accelerometer_data_(false) { |
Shell::GetInstance()->accelerometer_controller()->AddObserver(this); |
} |
@@ -90,9 +93,21 @@ MaximizeModeController::~MaximizeModeController() { |
Shell::GetInstance()->accelerometer_controller()->RemoveObserver(this); |
} |
+bool MaximizeModeController::CanEnterMaximizeMode() { |
+ // If we have ever seen accelerometer data, then HandleHingeRotation may |
+ // trigger maximize mode at some point in the future. |
+ // The --enable-touch-view-testing switch can also mean that we may enter |
+ // maximize mode. |
+ return have_seen_accelerometer_data_ || |
+ CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kAshEnableTouchViewTesting); |
+} |
+ |
void MaximizeModeController::OnAccelerometerUpdated( |
const gfx::Vector3dF& base, |
const gfx::Vector3dF& lid) { |
+ have_seen_accelerometer_data_ = true; |
+ |
// Ignore the reading if it appears unstable. The reading is considered |
// unstable if it deviates too much from gravity and/or the magnitude of the |
// reading from the lid differs too much from the reading from the base. |