Index: ash/wm/session_state_controller_impl2.h |
diff --git a/ash/wm/session_state_controller_impl2.h b/ash/wm/session_state_controller_impl2.h |
index d5546795db2a2a002459a3c368d5b6ff9613a713..2bd76ebfcd1b56fa65ee503cccf97eac9d67c44a 100644 |
--- a/ash/wm/session_state_controller_impl2.h |
+++ b/ash/wm/session_state_controller_impl2.h |
@@ -42,9 +42,6 @@ class ASH_EXPORT SessionStateControllerImpl2 : public SessionStateController { |
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(); |
} |
@@ -57,11 +54,13 @@ class ASH_EXPORT SessionStateControllerImpl2 : public SessionStateController { |
bool real_shutdown_timer_is_running() const { |
return controller_->real_shutdown_timer_.IsRunning(); |
} |
- |
- void trigger_lock_timeout() { |
- controller_->OnLockTimeout(); |
- controller_->lock_timer_.Stop(); |
+ bool is_animating_lock() const { |
+ return controller_->animating_lock_; |
+ } |
+ bool is_lock_undoable() const { |
+ return controller_->undoable_lock_animation_; |
} |
+ |
void trigger_lock_fail_timeout() { |
controller_->OnLockFailTimeout(); |
controller_->lock_fail_timer_.Stop(); |
@@ -84,6 +83,10 @@ class ASH_EXPORT SessionStateControllerImpl2 : public SessionStateController { |
DISALLOW_COPY_AND_ASSIGN(TestApi); |
}; |
+ struct UnlockedStateProperties { |
+ bool background_is_hidden; |
+ }; |
+ |
SessionStateControllerImpl2(); |
virtual ~SessionStateControllerImpl2(); |
@@ -123,12 +126,6 @@ class ASH_EXPORT SessionStateControllerImpl2 : public SessionStateController { |
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(); |
@@ -153,6 +150,41 @@ class ASH_EXPORT SessionStateControllerImpl2 : public SessionStateController { |
// Triggers late animations on the lock screen. |
void OnLockScreenAnimationFinished(); |
+ // Methods for initiating and checking different phases of |
+ // lock/unlock animations: |
+ // Lock phase one : windows lift (can be undone in some cases) |
+ // Lock phase two : lock screen raises |
+ // Unlock phase one : lock screen lowers |
+ // Unlock phase two : windows drop down |
+ |
+ void StartImmediateLockAnimationPhaseOne(); |
+ void StartUndoableLockAnimationPhaseOne(); |
+ void UndoLockAnimationPhaseOne(); |
+ void StartLockAnimationPhaseTwo(); |
+ // This method calls |callback| when animation completes. |
+ void StartUnlockAnimationPhaseOne(base::Closure &callback); |
+ void StartUnlockAnimationPhaseTwo(); |
+ |
+ // These methods are called when corresponding animation completes. |
+ void LockAnimationUndone(); |
+ void LockAnimationPhaseOneCompleted(); |
+ void LockAnimationPhaseTwoCompleted(); |
+ void UnlockAnimationPhaseTwoCompleted(); |
+ |
+ // Stores properties of UI that have to be temporary modified while locking. |
+ void StoreUnlockedProperties(); |
+ void RestoreUnlockedProperties(); |
+ |
+ // Fades in background layer with |speed| if it was hidden in unlocked state. |
+ void AnimateBackgroundAppearanceIfNecessary( |
+ ash::internal::SessionStateAnimator::AnimationSpeed speed, |
+ ui::LayerAnimationObserver* observer); |
+ |
+ // Fades out background layer with |speed| if it was hidden in unlocked state. |
+ void AnimateBackgroundHidingIfNecessary( |
+ ash::internal::SessionStateAnimator::AnimationSpeed speed, |
+ ui::LayerAnimationObserver* observer); |
+ |
// The current login status, or original login status from before we locked. |
user::LoginStatus login_status_; |
@@ -166,10 +198,13 @@ class ASH_EXPORT SessionStateControllerImpl2 : public SessionStateController { |
// 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<SessionStateControllerImpl2> lock_timer_; |
+ // Indicates that controller displays lock animation. |
+ bool animating_lock_; |
+ |
+ // Indicates that lock animation can be undone. |
+ bool undoable_lock_animation_; |
+ |
+ scoped_ptr<UnlockedStateProperties> unlocked_properties_; |
// Started when we request that the screen be locked. When it fires, we |
// assume that our request got dropped. |