X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fash%2Fwm%2Fmaximize_mode%2Fmaximize_mode_controller.h;h=bc4b2240c6bf7b9731915e3b98146187c9e5a595;hb=4a1a0bdd01eef90b0826a0e761d3379d3715c10f;hp=8c0f7193d4db943c8692f39fa908165e8ffc21de;hpb=b1be5ca53587d23e7aeb77b26861fdc0a181ffd8;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/ash/wm/maximize_mode/maximize_mode_controller.h b/src/ash/wm/maximize_mode/maximize_mode_controller.h index 8c0f719..bc4b224 100644 --- a/src/ash/wm/maximize_mode/maximize_mode_controller.h +++ b/src/ash/wm/maximize_mode/maximize_mode_controller.h @@ -13,9 +13,16 @@ #include "base/macros.h" #include "base/memory/scoped_ptr.h" #include "base/observer_list.h" -#include "base/power_monitor/power_observer.h" #include "ui/gfx/display.h" +#if defined(OS_CHROMEOS) +#include "chromeos/dbus/power_manager_client.h" +#endif // OS_CHROMEOS + +namespace base { +class TickClock; +} + namespace ui { class EventHandler; } @@ -23,7 +30,7 @@ class EventHandler; namespace ash { class MaximizeModeControllerTest; -class MaximizeModeEventBlocker; +class ScopedDisableInternalMouseAndKeyboard; class MaximizeModeWindowManager; class MaximizeModeWindowManagerTest; namespace test { @@ -33,10 +40,13 @@ class MultiUserWindowManagerChromeOSTest; // MaximizeModeController listens to accelerometer events and automatically // enters and exits maximize mode when the lid is opened beyond the triggering // angle and rotates the display to match the device when in maximize mode. -class ASH_EXPORT MaximizeModeController : public AccelerometerObserver, - public base::PowerObserver, - public ShellObserver, - public DisplayController::Observer { +class ASH_EXPORT MaximizeModeController + : public AccelerometerObserver, +#if defined(OS_CHROMEOS) + public chromeos::PowerManagerClient::Observer, +#endif // OS_CHROMEOS + public ShellObserver, + public DisplayController::Observer { public: // Observer that reports changes to the state of MaximizeModeController's // rotation lock. @@ -107,18 +117,26 @@ class ASH_EXPORT MaximizeModeController : public AccelerometerObserver, virtual void OnMaximizeModeStarted() OVERRIDE; virtual void OnMaximizeModeEnded() OVERRIDE; - // base::PowerObserver: - virtual void OnSuspend() OVERRIDE; - virtual void OnResume() OVERRIDE; - // DisplayController::Observer: virtual void OnDisplayConfigurationChanged() OVERRIDE; +#if defined(OS_CHROMEOS) + // PowerManagerClient::Observer: + virtual void LidEventReceived(bool open, + const base::TimeTicks& time) OVERRIDE; + virtual void SuspendImminent() OVERRIDE; + virtual void SuspendDone(const base::TimeDelta& sleep_duration) OVERRIDE; +#endif // OS_CHROMEOS + private: friend class MaximizeModeControllerTest; friend class MaximizeModeWindowManagerTest; friend class test::MultiUserWindowManagerChromeOSTest; + // Set the TickClock. This is only to be used by tests that need to + // artificially and deterministically control the current time. + void SetTickClockForTest(scoped_ptr tick_clock); + // Detect hinge rotation from |base| and |lid| accelerometers and // automatically start / stop maximize mode. void HandleHingeRotation(const gfx::Vector3dF& base, @@ -132,6 +150,9 @@ class ASH_EXPORT MaximizeModeController : public AccelerometerObserver, void SetDisplayRotation(DisplayManager* display_manager, gfx::Display::Rotation rotation); + // Returns true if the lid was recently opened. + bool WasLidOpenedRecently() const; + // Enables MaximizeModeWindowManager, and determines the current state of // rotation lock. void EnterMaximizeMode(); @@ -146,9 +167,9 @@ class ASH_EXPORT MaximizeModeController : public AccelerometerObserver, // The maximized window manager (if enabled). scoped_ptr maximize_mode_window_manager_; - // An event targeter controller which traps mouse and keyboard events while - // maximize mode is engaged. - scoped_ptr event_blocker_; + // A helper class which when instantiated will block native events from the + // internal keyboard and touchpad. + scoped_ptr event_blocker_; // An event handler used to detect screenshot actions while in maximize mode. scoped_ptr event_handler_; @@ -179,6 +200,17 @@ class ASH_EXPORT MaximizeModeController : public AccelerometerObserver, base::TimeDelta total_touchview_time_; base::TimeDelta total_non_touchview_time_; + // Tracks the last time we received a lid open event. This is used to suppress + // erroneous accelerometer readings as the lid is opened but the accelerometer + // reports readings that make the lid to appear near fully open. + base::TimeTicks last_lid_open_time_; + + // Source for the current time in base::TimeTicks. + scoped_ptr tick_clock_; + + // Tracks when the lid is closed. Used to prevent entering maximize mode. + bool lid_is_closed_; + DISALLOW_COPY_AND_ASSIGN(MaximizeModeController); };