diff options
author | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-16 19:13:27 +0000 |
---|---|---|
committer | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-16 19:13:27 +0000 |
commit | 4b80aecb29f25ee1f5929dbd71f310b8096d2e14 (patch) | |
tree | 19999ab16dc5526e194e9e6ba7de3289f994f399 /ash/wm/session_state_controller.h | |
parent | 44a4b5669019201fec1f53e4e7c1064885d1dd68 (diff) | |
download | chromium_src-4b80aecb29f25ee1f5929dbd71f310b8096d2e14.zip chromium_src-4b80aecb29f25ee1f5929dbd71f310b8096d2e14.tar.gz chromium_src-4b80aecb29f25ee1f5929dbd71f310b8096d2e14.tar.bz2 |
Revert 162140 - ash : Decouple power button controller and session state controller.
Prepare code to introduce two versions of SessionStateController later.
BUG=138171, 139461
Review URL: https://chromiumcodereview.appspot.com/11091023
TBR=antrim@chromium.org
Review URL: https://codereview.chromium.org/11185006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@162201 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/wm/session_state_controller.h')
-rw-r--r-- | ash/wm/session_state_controller.h | 277 |
1 files changed, 0 insertions, 277 deletions
diff --git a/ash/wm/session_state_controller.h b/ash/wm/session_state_controller.h deleted file mode 100644 index fc3ae53..0000000 --- a/ash/wm/session_state_controller.h +++ /dev/null @@ -1,277 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_WM_SESSION_STATE_CONTROLLER_H_ -#define ASH_WM_SESSION_STATE_CONTROLLER_H_ - -#include "ash/ash_export.h" -#include "ash/shell_observer.h" -#include "ash/wm/session_state_animator.h" -#include "base/basictypes.h" -#include "base/memory/scoped_ptr.h" -#include "base/time.h" -#include "base/timer.h" -#include "ui/aura/root_window_observer.h" - -namespace gfx { -class Rect; -class Size; -} - -namespace ui { -class Layer; -} - -namespace ash { - -namespace test { -class PowerButtonControllerTest; -} - -// Performs system-related functions on behalf of SessionStateController. -class ASH_EXPORT SessionStateControllerDelegate { - public: - SessionStateControllerDelegate() {} - virtual ~SessionStateControllerDelegate() {} - - virtual void RequestLockScreen() = 0; - virtual void RequestShutdown() = 0; - - private: - DISALLOW_COPY_AND_ASSIGN(SessionStateControllerDelegate); -}; - -// Displays onscreen animations and locks or suspends the system in response to -// the power button being pressed or released. -class ASH_EXPORT SessionStateController : public aura::RootWindowObserver, - public ShellObserver { - public: - // Amount of time that the power button needs to be held before we lock the - // screen. - static const int kLockTimeoutMs; - - // Amount of time that the power button needs to be held before we shut down. - static const int kShutdownTimeoutMs; - - // Amount of time to wait for our lock requests to be honored before giving - // up. - static const int kLockFailTimeoutMs; - - // When the button has been held continuously from the unlocked state, amount - // of time that we wait after the screen locker window is shown before - // starting the pre-shutdown animation. - static const int kLockToShutdownTimeoutMs; - - // Amount of time taken to scale the snapshot of the screen down to a - // slightly-smaller size once the user starts holding the power button. Used - // for both the pre-lock and pre-shutdown animations. - static const int kSlowCloseAnimMs; - - // Amount of time taken to scale the snapshot of the screen back to its - // original size when the button is released. - static const int kUndoSlowCloseAnimMs; - - // Amount of time taken to scale the snapshot down to a point in the center of - // the screen once the screen has been locked or we've been notified that the - // system is shutting down. - static const int kFastCloseAnimMs; - - // Additional time (beyond kFastCloseAnimMs) to wait after starting the - // fast-close shutdown animation before actually requesting shutdown, to give - // the animation time to finish. - static const int kShutdownRequestDelayMs; - - // Helper class used by tests to access internal state. - class ASH_EXPORT TestApi { - public: - explicit TestApi(SessionStateController* controller); - - virtual ~TestApi(); - - bool lock_timer_is_running() const { - return controller_->lock_timer_.IsRunning(); - } - bool lock_fail_timer_is_running() const { - return controller_->lock_fail_timer_.IsRunning(); - } - bool lock_to_shutdown_timer_is_running() const { - return controller_->lock_to_shutdown_timer_.IsRunning(); - } - bool shutdown_timer_is_running() const { - return controller_->pre_shutdown_timer_.IsRunning(); - } - bool real_shutdown_timer_is_running() const { - return controller_->real_shutdown_timer_.IsRunning(); - } - - void trigger_lock_timeout() { - controller_->OnLockTimeout(); - controller_->lock_timer_.Stop(); - } - void trigger_lock_fail_timeout() { - controller_->OnLockFailTimeout(); - controller_->lock_fail_timer_.Stop(); - } - void trigger_lock_to_shutdown_timeout() { - controller_->OnLockToShutdownTimeout(); - controller_->lock_to_shutdown_timer_.Stop(); - } - void trigger_shutdown_timeout() { - controller_->OnPreShutdownAnimationTimeout(); - controller_->pre_shutdown_timer_.Stop(); - } - void trigger_real_shutdown_timeout() { - controller_->OnRealShutdownTimeout(); - controller_->real_shutdown_timer_.Stop(); - } - private: - SessionStateController* controller_; // not owned - - DISALLOW_COPY_AND_ASSIGN(TestApi); - }; - - SessionStateController(); - virtual ~SessionStateController(); - - // RootWindowObserver override: - virtual void OnRootWindowHostCloseRequested( - const aura::RootWindow* root) OVERRIDE; - - // ShellObserver overrides: - virtual void OnLoginStateChanged(user::LoginStatus status) OVERRIDE; - virtual void OnAppTerminating() OVERRIDE; - virtual void OnLockStateChanged(bool locked) OVERRIDE; - - void SetDelegate(SessionStateControllerDelegate* delegate); - - // Returns true iff when we're in state when user session can be locked. - virtual bool IsEligibleForLock(); - - // Returns true if system is locked. - virtual bool IsLocked(); - - // Starts locking (with slow animation) that can be cancelled. - // After locking and |kLockToShutdownTimeoutMs| StartShutdownAnimation() - // will be called unless CancelShutdown() is called. - virtual void StartLockAnimation(); - - // Starts shutting down (with slow animation) that can be cancelled. - virtual void StartShutdownAnimation(); - - // Starts usual lock animation, but locks immediately. - // Unlike StartLockAnimation it does no lead to StartShutdownAnimation. - virtual void StartLockAnimationAndLockImmediately(); - - // Returns true if we have requested system to lock, but haven't received - // confirmation yet. - virtual bool LockRequested(); - - // Returns true if we are shutting down. - virtual bool ShutdownRequested(); - - // Returns true if we are within cancellable lock timeframe. - virtual bool CanCancelLockAnimation(); - - // Cancels locking and reverts lock animation. - virtual void CancelLockAnimation(); - - // Cancels locking and reverts lock animation with slightly different - // parameters. Seems to be some bug, but refactoring should keep all bugs. - // TODO(antrim): remove this, animations should actually be the same. - virtual void CancelLockWithOtherAnimation(); - - // Returns true if we are within cancellable shutdown timeframe. - virtual bool CanCancelShutdownAnimation(); - - // Cancels shutting down and reverts shutdown animation. - virtual void CancelShutdownAnimation(); - - // Called when Chrome gets a request to display the lock screen. - virtual void OnStartingLock(); - - // Displays the shutdown animation and requests shutdown when it's done. - virtual void RequestShutdown(); - - protected: - friend class test::PowerButtonControllerTest; - - bool IsLoggedInAsNonGuest() const; - - private: - void RequestShutdownImpl(); - - // Starts lock timer. - void StartLockTimer(); - - // Requests that the screen be locked and starts |lock_fail_timer_|. - void OnLockTimeout(); - - // Reverts the pre-lock animation, reports the error. - void OnLockFailTimeout(); - - // Starts timer for gap between lock and shutdown. - void StartLockToShutdownTimer(); - - // Calls StartShutdownAnimation(). - void OnLockToShutdownTimeout(); - - // Starts timer for undoable shutdown animation. - void StartPreShutdownAnimationTimer(); - - // Calls RequestShutdownImpl(); - void OnPreShutdownAnimationTimeout(); - - // Starts timer for final shutdown animation. - void StartRealShutdownTimer(); - - // Requests that the machine be shut down. - void OnRealShutdownTimeout(); - - // The current login status. - user::LoginStatus login_status_; - - // Original login status from before we locked. LOGGED_IN_NONE if it's not - // locked. - user::LoginStatus unlocked_login_status_; - - // Are we in the process of shutting the machine down? - bool shutting_down_; - - // Indicates whether controller should proceed to (cancellable) shutdown after - // locking. - bool shutdown_after_lock_; - - // Started when the user first presses the power button while in a - // logged-in-as-a-non-guest-user, unlocked state. When it fires, we lock the - // screen. - base::OneShotTimer<SessionStateController> lock_timer_; - - // Started when we request that the screen be locked. When it fires, we - // assume that our request got dropped. - base::OneShotTimer<SessionStateController> lock_fail_timer_; - - // Started when the screen is locked while the power button is held. Adds a - // delay between the appearance of the lock screen and the beginning of the - // pre-shutdown animation. - base::OneShotTimer<SessionStateController> lock_to_shutdown_timer_; - - // Started when we begin displaying the pre-shutdown animation. When it - // fires, we start the shutdown animation and get ready to request shutdown. - base::OneShotTimer<SessionStateController> pre_shutdown_timer_; - - // Started when we display the shutdown animation. When it fires, we actually - // request shutdown. Gives the animation time to complete before Chrome, X, - // etc. are shut down. - base::OneShotTimer<SessionStateController> real_shutdown_timer_; - - scoped_ptr<internal::SessionStateAnimator> animator_; - - scoped_ptr<SessionStateControllerDelegate> delegate_; - - DISALLOW_COPY_AND_ASSIGN(SessionStateController); -}; - -} // namespace ash - -#endif // ASH_WM_SESSION_STATE_CONTROLLER_H_ |