Index: ash/wm/lock_state_controller_unittest.cc |
diff --git a/ash/wm/lock_state_controller_unittest.cc b/ash/wm/lock_state_controller_unittest.cc |
index 80db34923ae149c837685486d42d91d2691f77b8..cca575f0b293845d4e56a69d2420a63496a36102 100644 |
--- a/ash/wm/lock_state_controller_unittest.cc |
+++ b/ash/wm/lock_state_controller_unittest.cc |
@@ -4,26 +4,20 @@ |
#include "ash/wm/lock_state_controller.h" |
-#include "ash/ash_switches.h" |
#include "ash/session/session_state_delegate.h" |
#include "ash/shell.h" |
-#include "ash/shell_window_ids.h" |
#include "ash/test/ash_test_base.h" |
#include "ash/test/test_lock_state_controller_delegate.h" |
+#include "ash/test/test_screenshot_delegate.h" |
+#include "ash/test/test_session_state_animator.h" |
#include "ash/test/test_shell_delegate.h" |
+#include "ash/wm/maximize_mode/maximize_mode_controller.h" |
#include "ash/wm/power_button_controller.h" |
#include "ash/wm/session_state_animator.h" |
-#include "base/command_line.h" |
#include "base/memory/scoped_ptr.h" |
+#include "base/memory/scoped_vector.h" |
#include "base/time/time.h" |
-#include "ui/aura/env.h" |
-#include "ui/aura/test/test_window_delegate.h" |
-#include "ui/aura/window_event_dispatcher.h" |
-#include "ui/compositor/layer_animator.h" |
-#include "ui/compositor/scoped_animation_duration_scale_mode.h" |
-#include "ui/compositor/scoped_layer_animation_settings.h" |
#include "ui/events/test/event_generator.h" |
-#include "ui/gfx/rect.h" |
#include "ui/gfx/size.h" |
#if defined(OS_CHROMEOS) |
@@ -32,10 +26,6 @@ |
#include "ui/display/types/display_constants.h" |
#endif |
-#if defined(OS_WIN) |
-#include "base/win/windows_version.h" |
-#endif |
- |
namespace ash { |
namespace test { |
namespace { |
@@ -49,66 +39,35 @@ void CheckCalledCallback(bool* flag) { |
(*flag) = true; |
} |
-aura::Window* GetContainer(int container ) { |
- aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
- return Shell::GetContainer(root_window, container); |
-} |
- |
-bool IsBackgroundHidden() { |
- return !GetContainer(kShellWindowId_DesktopBackgroundContainer)->IsVisible(); |
-} |
- |
-void HideBackground() { |
- ui::ScopedLayerAnimationSettings settings( |
- GetContainer(kShellWindowId_DesktopBackgroundContainer) |
- ->layer() |
- ->GetAnimator()); |
- settings.SetTransitionDuration(base::TimeDelta()); |
- GetContainer(kShellWindowId_DesktopBackgroundContainer)->Hide(); |
-} |
- |
-} // namespace |
+} // namespace |
class LockStateControllerTest : public AshTestBase { |
public: |
- LockStateControllerTest() : controller_(NULL), delegate_(NULL) {} |
+ LockStateControllerTest() : power_button_controller_(NULL), |
+ lock_state_controller_(NULL), |
+ lock_state_controller_delegate_(NULL), |
+ test_animator_(NULL) { |
+ } |
virtual ~LockStateControllerTest() {} |
virtual void SetUp() OVERRIDE { |
AshTestBase::SetUp(); |
- // We would control animations in a fine way: |
- animation_duration_mode_.reset(new ui::ScopedAnimationDurationScaleMode( |
- ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION)); |
- // TODO(antrim) : restore |
- // animator_helper_ = ui::test::CreateLayerAnimatorHelperForTest(); |
- |
- // Temporary disable animations so that observer is always called, and |
- // no leaks happen during tests. |
- animation_duration_mode_.reset(new ui::ScopedAnimationDurationScaleMode( |
- ui::ScopedAnimationDurationScaleMode::ZERO_DURATION)); |
- // TODO(antrim): once there is a way to mock time and run animations, make |
- // sure that animations are finished even in simple tests. |
- |
- delegate_ = new TestLockStateControllerDelegate; |
- controller_ = Shell::GetInstance()->power_button_controller(); |
- lock_state_controller_ = static_cast<LockStateController*>( |
- Shell::GetInstance()->lock_state_controller()); |
- lock_state_controller_->SetDelegate(delegate_); // transfers ownership |
+ scoped_ptr<LockStateControllerDelegate> lock_state_controller_delegate( |
+ lock_state_controller_delegate_ = new TestLockStateControllerDelegate); |
+ test_animator_ = new TestSessionStateAnimator; |
+ |
+ lock_state_controller_ = Shell::GetInstance()->lock_state_controller(); |
+ lock_state_controller_->SetDelegate(lock_state_controller_delegate.Pass()); |
+ lock_state_controller_->set_animator_for_test(test_animator_); |
+ |
test_api_.reset(new LockStateController::TestApi(lock_state_controller_)); |
- animator_api_.reset( |
- new SessionStateAnimator::TestApi(lock_state_controller_-> |
- animator_.get())); |
- shell_delegate_ = reinterpret_cast<TestShellDelegate*>( |
- ash::Shell::GetInstance()->delegate()); |
+ |
+ power_button_controller_ = Shell::GetInstance()->power_button_controller(); |
session_state_delegate_ = Shell::GetInstance()->session_state_delegate(); |
- } |
- virtual void TearDown() { |
- // TODO(antrim) : restore |
- // animator_helper_->AdvanceUntilDone(); |
- window_.reset(); |
- AshTestBase::TearDown(); |
+ shell_delegate_ = reinterpret_cast<TestShellDelegate*>( |
+ ash::Shell::GetInstance()->delegate()); |
} |
protected: |
@@ -118,241 +77,260 @@ class LockStateControllerTest : public AshTestBase { |
} |
int NumShutdownRequests() { |
- return delegate_->num_shutdown_requests() + |
- shell_delegate_->num_exit_requests(); |
+ return lock_state_controller_delegate_->num_shutdown_requests() + |
+ shell_delegate_->num_exit_requests(); |
} |
void Advance(SessionStateAnimator::AnimationSpeed speed) { |
- // TODO (antrim) : restore |
- // animator_helper_->Advance(SessionStateAnimator::GetDuration(speed)); |
+ test_animator_->Advance(test_animator_->GetDuration(speed)); |
} |
void AdvancePartially(SessionStateAnimator::AnimationSpeed speed, |
float factor) { |
-// TODO (antrim) : restore |
-// base::TimeDelta duration = SessionStateAnimator::GetDuration(speed); |
-// base::TimeDelta partial_duration = |
-// base::TimeDelta::FromInternalValue(duration.ToInternalValue() * factor); |
-// animator_helper_->Advance(partial_duration); |
+ base::TimeDelta duration = test_animator_->GetDuration(speed); |
+ base::TimeDelta partial_duration = |
+ base::TimeDelta::FromInternalValue(duration.ToInternalValue() * factor); |
+ test_animator_->Advance(partial_duration); |
} |
void ExpectPreLockAnimationStarted() { |
- //TODO (antrim) : restore EXPECT_TRUE(animator_helper_->IsAnimating()); |
+ SCOPED_TRACE("Failure in ExpectPreLockAnimationStarted"); |
+ EXPECT_LT(0u, test_animator_->GetAnimationCount()); |
EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, |
SessionStateAnimator::ANIMATION_LIFT)); |
EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::LAUNCHER, |
SessionStateAnimator::ANIMATION_FADE_OUT)); |
EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::LOCK_SCREEN_CONTAINERS, |
SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY)); |
EXPECT_TRUE(test_api_->is_animating_lock()); |
} |
+ void ExpectPreLockAnimationRunning() { |
+ SCOPED_TRACE("Failure in ExpectPreLockAnimationRunning"); |
+ EXPECT_LT(0u, test_animator_->GetAnimationCount()); |
+ EXPECT_TRUE( |
+ test_animator_->AreContainersAnimated( |
+ SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, |
+ SessionStateAnimator::ANIMATION_LIFT)); |
+ EXPECT_TRUE( |
+ test_animator_->AreContainersAnimated( |
+ SessionStateAnimator::LAUNCHER, |
+ SessionStateAnimator::ANIMATION_FADE_OUT)); |
+ EXPECT_TRUE(test_api_->is_animating_lock()); |
+ } |
+ |
void ExpectPreLockAnimationCancel() { |
+ SCOPED_TRACE("Failure in ExpectPreLockAnimationCancel"); |
+ EXPECT_LT(0u, test_animator_->GetAnimationCount()); |
EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, |
- SessionStateAnimator::ANIMATION_DROP)); |
+ SessionStateAnimator::ANIMATION_UNDO_LIFT)); |
EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::LAUNCHER, |
SessionStateAnimator::ANIMATION_FADE_IN)); |
} |
void ExpectPreLockAnimationFinished() { |
- //TODO (antrim) : restore EXPECT_FALSE(animator_helper_->IsAnimating()); |
- EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ SCOPED_TRACE("Failure in ExpectPreLockAnimationFinished"); |
+ EXPECT_FALSE( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, |
SessionStateAnimator::ANIMATION_LIFT)); |
- EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ EXPECT_FALSE( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::LAUNCHER, |
SessionStateAnimator::ANIMATION_FADE_OUT)); |
- EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ EXPECT_FALSE( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::LOCK_SCREEN_CONTAINERS, |
SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY)); |
} |
void ExpectPostLockAnimationStarted() { |
- //TODO (antrim) : restore EXPECT_TRUE(animator_helper_->IsAnimating()); |
+ SCOPED_TRACE("Failure in ExpectPostLockAnimationStarted"); |
+ EXPECT_LT(0u, test_animator_->GetAnimationCount()); |
EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::LOCK_SCREEN_CONTAINERS, |
SessionStateAnimator::ANIMATION_RAISE_TO_SCREEN)); |
} |
- void ExpectPastLockAnimationFinished() { |
- //TODO (antrim) : restore EXPECT_FALSE(animator_helper_->IsAnimating()); |
- EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ void ExpectPostLockAnimationFinished() { |
+ SCOPED_TRACE("Failure in ExpectPostLockAnimationFinished"); |
+ EXPECT_FALSE( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::LOCK_SCREEN_CONTAINERS, |
SessionStateAnimator::ANIMATION_RAISE_TO_SCREEN)); |
} |
void ExpectUnlockBeforeUIDestroyedAnimationStarted() { |
- //TODO (antrim) : restore EXPECT_TRUE(animator_helper_->IsAnimating()); |
+ SCOPED_TRACE("Failure in ExpectUnlockBeforeUIDestroyedAnimationStarted"); |
+ EXPECT_LT(0u, test_animator_->GetAnimationCount()); |
EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::LOCK_SCREEN_CONTAINERS, |
SessionStateAnimator::ANIMATION_LIFT)); |
} |
void ExpectUnlockBeforeUIDestroyedAnimationFinished() { |
- //TODO (antrim) : restore EXPECT_FALSE(animator_helper_->IsAnimating()); |
- EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ SCOPED_TRACE("Failure in ExpectUnlockBeforeUIDestroyedAnimationFinished"); |
+ EXPECT_FALSE( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::LOCK_SCREEN_CONTAINERS, |
SessionStateAnimator::ANIMATION_LIFT)); |
} |
void ExpectUnlockAfterUIDestroyedAnimationStarted() { |
- //TODO (antrim) : restore EXPECT_TRUE(animator_helper_->IsAnimating()); |
+ SCOPED_TRACE("Failure in ExpectUnlockAfterUIDestroyedAnimationStarted"); |
+ EXPECT_LT(0u, test_animator_->GetAnimationCount()); |
EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, |
SessionStateAnimator::ANIMATION_DROP)); |
EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::LAUNCHER, |
SessionStateAnimator::ANIMATION_FADE_IN)); |
} |
void ExpectUnlockAfterUIDestroyedAnimationFinished() { |
- //TODO (antrim) : restore EXPECT_FALSE(animator_helper_->IsAnimating()); |
- EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ SCOPED_TRACE("Failure in ExpectUnlockAfterUIDestroyedAnimationFinished"); |
+ EXPECT_EQ(0u, test_animator_->GetAnimationCount()); |
+ EXPECT_FALSE( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, |
SessionStateAnimator::ANIMATION_DROP)); |
- EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ EXPECT_FALSE( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::LAUNCHER, |
SessionStateAnimator::ANIMATION_FADE_IN)); |
} |
void ExpectShutdownAnimationStarted() { |
- //TODO (antrim) : restore EXPECT_TRUE(animator_helper_->IsAnimating()); |
+ SCOPED_TRACE("Failure in ExpectShutdownAnimationStarted"); |
+ EXPECT_LT(0u, test_animator_->GetAnimationCount()); |
EXPECT_TRUE( |
- animator_api_->RootWindowIsAnimated( |
+ test_animator_->AreContainersAnimated( |
+ SessionStateAnimator::ROOT_CONTAINER, |
SessionStateAnimator::ANIMATION_GRAYSCALE_BRIGHTNESS)); |
} |
- void ExpectShutdownAnimationFinished() { |
- //TODO (antrim) : restore EXPECT_FALSE(animator_helper_->IsAnimating()); |
- EXPECT_TRUE( |
- animator_api_->RootWindowIsAnimated( |
+ void ExpectShutdownAnimationFinished() { |
+ SCOPED_TRACE("Failure in ExpectShutdownAnimationFinished"); |
+ EXPECT_EQ(0u, test_animator_->GetAnimationCount()); |
+ EXPECT_FALSE( |
+ test_animator_->AreContainersAnimated( |
+ SessionStateAnimator::ROOT_CONTAINER, |
SessionStateAnimator::ANIMATION_GRAYSCALE_BRIGHTNESS)); |
} |
void ExpectShutdownAnimationCancel() { |
- //TODO (antrim) : restore EXPECT_TRUE(animator_helper_->IsAnimating()); |
+ SCOPED_TRACE("Failure in ExpectShutdownAnimationCancel"); |
+ EXPECT_LT(0u, test_animator_->GetAnimationCount()); |
EXPECT_TRUE( |
- animator_api_->RootWindowIsAnimated( |
+ test_animator_->AreContainersAnimated( |
+ SessionStateAnimator::ROOT_CONTAINER, |
SessionStateAnimator::ANIMATION_UNDO_GRAYSCALE_BRIGHTNESS)); |
} |
void ExpectBackgroundIsShowing() { |
- //TODO (antrim) : restore EXPECT_TRUE(animator_helper_->IsAnimating()); |
+ SCOPED_TRACE("Failure in ExpectBackgroundIsShowing"); |
+ EXPECT_LT(0u, test_animator_->GetAnimationCount()); |
EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::DESKTOP_BACKGROUND, |
SessionStateAnimator::ANIMATION_FADE_IN)); |
} |
void ExpectBackgroundIsHiding() { |
- //TODO (antrim) : restore EXPECT_TRUE(animator_helper_->IsAnimating()); |
+ SCOPED_TRACE("Failure in ExpectBackgroundIsHiding"); |
+ EXPECT_LT(0u, test_animator_->GetAnimationCount()); |
EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
+ test_animator_->AreContainersAnimated( |
SessionStateAnimator::DESKTOP_BACKGROUND, |
SessionStateAnimator::ANIMATION_FADE_OUT)); |
} |
+ void ExpectRestoringBackgroundVisibility() { |
+ SCOPED_TRACE("Failure in ExpectRestoringBackgroundVisibility"); |
+ EXPECT_LT(0u, test_animator_->GetAnimationCount()); |
+ EXPECT_TRUE( |
+ test_animator_->AreContainersAnimated( |
+ SessionStateAnimator::DESKTOP_BACKGROUND, |
+ SessionStateAnimator::ANIMATION_FADE_IN)); |
+ } |
+ |
void ExpectUnlockedState() { |
- //TODO (antrim) : restore EXPECT_FALSE(animator_helper_->IsAnimating()); |
+ SCOPED_TRACE("Failure in ExpectUnlockedState"); |
+ EXPECT_EQ(0u, test_animator_->GetAnimationCount()); |
EXPECT_FALSE(session_state_delegate_->IsScreenLocked()); |
- |
- aura::Window::Windows containers; |
- |
- SessionStateAnimator::GetContainers( |
- SessionStateAnimator::LAUNCHER | |
- SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, |
- &containers); |
- for (aura::Window::Windows::const_iterator it = containers.begin(); |
- it != containers.end(); ++it) { |
- aura::Window* window = *it; |
- ui::Layer* layer = window->layer(); |
- EXPECT_EQ(1.0f, layer->opacity()); |
- EXPECT_EQ(0.0f, layer->layer_brightness()); |
- EXPECT_EQ(0.0f, layer->layer_saturation()); |
- EXPECT_EQ(gfx::Transform(), layer->transform()); |
- } |
} |
void ExpectLockedState() { |
- //TODO (antrim) : restore EXPECT_FALSE(animator_helper_->IsAnimating()); |
+ SCOPED_TRACE("Failure in ExpectLockedState"); |
+ EXPECT_EQ(0u, test_animator_->GetAnimationCount()); |
EXPECT_TRUE(session_state_delegate_->IsScreenLocked()); |
+ } |
- aura::Window::Windows containers; |
- |
- SessionStateAnimator::GetContainers( |
- SessionStateAnimator::LOCK_SCREEN_RELATED_CONTAINERS | |
- SessionStateAnimator::LOCK_SCREEN_CONTAINERS, |
- &containers); |
- for (aura::Window::Windows::const_iterator it = containers.begin(); |
- it != containers.end(); ++it) { |
- aura::Window* window = *it; |
- ui::Layer* layer = window->layer(); |
- EXPECT_EQ(1.0f, layer->opacity()); |
- EXPECT_EQ(0.0f, layer->layer_brightness()); |
- EXPECT_EQ(0.0f, layer->layer_saturation()); |
- EXPECT_EQ(gfx::Transform(), layer->transform()); |
- } |
+ void HideBackground() { |
+ test_animator_->HideBackground(); |
} |
void PressPowerButton() { |
- controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); |
- //TODO (antrim) : restore animator_helper_->Advance(base::TimeDelta()); |
+ power_button_controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); |
} |
void ReleasePowerButton() { |
- controller_->OnPowerButtonEvent(false, base::TimeTicks::Now()); |
- //TODO (antrim) : restore animator_helper_->Advance(base::TimeDelta()); |
+ power_button_controller_->OnPowerButtonEvent(false, base::TimeTicks::Now()); |
} |
void PressLockButton() { |
- controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); |
+ power_button_controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); |
} |
void ReleaseLockButton() { |
- controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); |
+ power_button_controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); |
+ } |
+ |
+ void PressVolumeDown() { |
+ GetEventGenerator().PressKey(ui::VKEY_VOLUME_DOWN, ui::EF_NONE); |
+ } |
+ |
+ void ReleaseVolumeDown() { |
+ GetEventGenerator().ReleaseKey(ui::VKEY_VOLUME_DOWN, ui::EF_NONE); |
} |
void SystemLocks() { |
lock_state_controller_->OnLockStateChanged(true); |
session_state_delegate_->LockScreen(); |
- //TODO (antrim) : restore animator_helper_->Advance(base::TimeDelta()); |
} |
void SuccessfulAuthentication(bool* call_flag) { |
base::Closure closure = base::Bind(&CheckCalledCallback, call_flag); |
lock_state_controller_->OnLockScreenHide(closure); |
- //TODO (antrim) : restore animator_helper_->Advance(base::TimeDelta()); |
} |
void SystemUnlocks() { |
lock_state_controller_->OnLockStateChanged(false); |
session_state_delegate_->UnlockScreen(); |
- //TODO (antrim) : restore animator_helper_->Advance(base::TimeDelta()); |
+ } |
+ |
+ void EnableMaximizeMode(bool enable) { |
+ Shell::GetInstance()->maximize_mode_controller()-> |
+ EnableMaximizeModeWindowManager(enable); |
} |
void Initialize(bool legacy_button, user::LoginStatus status) { |
- controller_->set_has_legacy_power_button_for_test(legacy_button); |
+ power_button_controller_->set_has_legacy_power_button_for_test( |
+ legacy_button); |
lock_state_controller_->OnLoginStateChanged(status); |
SetUserLoggedIn(status != user::LOGGED_IN_NONE); |
if (status == user::LOGGED_IN_GUEST) |
@@ -360,32 +338,14 @@ class LockStateControllerTest : public AshTestBase { |
lock_state_controller_->OnLockStateChanged(false); |
} |
- void CreateWindowForLockscreen() { |
- window_.reset(new aura::Window(&window_delegate_)); |
- window_->SetBounds(gfx::Rect(0, 0, 100, 100)); |
- window_->SetType(ui::wm::WINDOW_TYPE_NORMAL); |
- window_->Init(aura::WINDOW_LAYER_TEXTURED); |
- window_->SetName("WINDOW"); |
- aura::Window* container = Shell::GetContainer( |
- Shell::GetPrimaryRootWindow(), kShellWindowId_LockScreenContainer); |
- ASSERT_TRUE(container); |
- container->AddChild(window_.get()); |
- window_->Show(); |
- } |
- |
- PowerButtonController* controller_; // not owned |
+ PowerButtonController* power_button_controller_; // not owned |
LockStateController* lock_state_controller_; // not owned |
- TestLockStateControllerDelegate* delegate_; // not owned |
- TestShellDelegate* shell_delegate_; // not owned |
+ TestLockStateControllerDelegate* |
+ lock_state_controller_delegate_; // not owned |
+ TestSessionStateAnimator* test_animator_; // not owned |
SessionStateDelegate* session_state_delegate_; // not owned |
- |
- aura::test::TestWindowDelegate window_delegate_; |
- scoped_ptr<aura::Window> window_; |
- scoped_ptr<ui::ScopedAnimationDurationScaleMode> animation_duration_mode_; |
scoped_ptr<LockStateController::TestApi> test_api_; |
- scoped_ptr<SessionStateAnimator::TestApi> animator_api_; |
- // TODO(antrim) : restore |
-// scoped_ptr<ui::test::AnimationContainerTestHelper> animator_helper_; |
+ TestShellDelegate* shell_delegate_; // not owned |
private: |
DISALLOW_COPY_AND_ASSIGN(LockStateControllerTest); |
@@ -395,8 +355,7 @@ class LockStateControllerTest : public AshTestBase { |
// correctly report power button releases. We should lock immediately the first |
// time the button is pressed and shut down when it's pressed from the locked |
// state. |
-// TODO(antrim): Reenable this: http://crbug.com/167048 |
-TEST_F(LockStateControllerTest, DISABLED_LegacyLockAndShutDown) { |
+TEST_F(LockStateControllerTest, LegacyLockAndShutDown) { |
Initialize(true, user::LOGGED_IN_USER); |
ExpectUnlockedState(); |
@@ -405,26 +364,23 @@ TEST_F(LockStateControllerTest, DISABLED_LegacyLockAndShutDown) { |
// power button get pressed. |
PressPowerButton(); |
- ExpectPreLockAnimationStarted(); |
- |
EXPECT_FALSE(test_api_->is_lock_cancellable()); |
- Advance(SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS); |
- |
+ ExpectPreLockAnimationStarted(); |
+ test_animator_->CompleteAllAnimations(true); |
ExpectPreLockAnimationFinished(); |
- EXPECT_EQ(1, delegate_->num_lock_requests()); |
+ |
+ EXPECT_EQ(1, lock_state_controller_delegate_->num_lock_requests()); |
// Notify that we locked successfully. |
lock_state_controller_->OnStartingLock(); |
- // We had that animation already. |
- //TODO (antrim) : restore |
- // EXPECT_FALSE(animator_helper_->IsAnimating()); |
+ EXPECT_EQ(0u, test_animator_->GetAnimationCount()); |
SystemLocks(); |
ExpectPostLockAnimationStarted(); |
- Advance(SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS); |
- ExpectPastLockAnimationFinished(); |
+ test_animator_->CompleteAllAnimations(true); |
+ ExpectPostLockAnimationFinished(); |
// We shouldn't progress towards the shutdown state, however. |
EXPECT_FALSE(test_api_->lock_to_shutdown_timer_is_running()); |
@@ -510,8 +466,7 @@ TEST_F(LockStateControllerTest, ShutdownWhenNotLoggedIn) { |
} |
// Test that we lock the screen and deal with unlocking correctly. |
-// TODO(antrim): Reenable this: http://crbug.com/167048 |
-TEST_F(LockStateControllerTest, DISABLED_LockAndUnlock) { |
+TEST_F(LockStateControllerTest, LockAndUnlock) { |
Initialize(false, user::LOGGED_IN_USER); |
ExpectUnlockedState(); |
@@ -522,23 +477,23 @@ TEST_F(LockStateControllerTest, DISABLED_LockAndUnlock) { |
ExpectPreLockAnimationStarted(); |
EXPECT_TRUE(test_api_->is_lock_cancellable()); |
- EXPECT_EQ(0, delegate_->num_lock_requests()); |
+ EXPECT_EQ(0, lock_state_controller_delegate_->num_lock_requests()); |
- Advance(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE); |
+ test_animator_->CompleteAllAnimations(true); |
ExpectPreLockAnimationFinished(); |
- EXPECT_EQ(1, delegate_->num_lock_requests()); |
+ EXPECT_EQ(1, lock_state_controller_delegate_->num_lock_requests()); |
// Notify that we locked successfully. |
lock_state_controller_->OnStartingLock(); |
// We had that animation already. |
- //TODO (antrim) : restore EXPECT_FALSE(animator_helper_->IsAnimating()); |
+ EXPECT_EQ(0u, test_animator_->GetAnimationCount()); |
SystemLocks(); |
ExpectPostLockAnimationStarted(); |
- Advance(SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS); |
- ExpectPastLockAnimationFinished(); |
+ test_animator_->CompleteAllAnimations(true); |
+ ExpectPostLockAnimationFinished(); |
// When we release the power button, the lock-to-shutdown timer should be |
// stopped. |
@@ -555,7 +510,7 @@ TEST_F(LockStateControllerTest, DISABLED_LockAndUnlock) { |
ExpectUnlockBeforeUIDestroyedAnimationStarted(); |
EXPECT_FALSE(called); |
- Advance(SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS); |
+ test_animator_->CompleteAllAnimations(true); |
ExpectUnlockBeforeUIDestroyedAnimationFinished(); |
EXPECT_TRUE(called); |
@@ -563,15 +518,14 @@ TEST_F(LockStateControllerTest, DISABLED_LockAndUnlock) { |
SystemUnlocks(); |
ExpectUnlockAfterUIDestroyedAnimationStarted(); |
- Advance(SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS); |
+ test_animator_->CompleteAllAnimations(true); |
ExpectUnlockAfterUIDestroyedAnimationFinished(); |
ExpectUnlockedState(); |
} |
// Test that we deal with cancelling lock correctly. |
-// TODO(antrim): Reenable this: http://crbug.com/167048 |
-TEST_F(LockStateControllerTest, DISABLED_LockAndCancel) { |
+TEST_F(LockStateControllerTest, LockAndCancel) { |
Initialize(false, user::LOGGED_IN_USER); |
ExpectUnlockedState(); |
@@ -586,28 +540,18 @@ TEST_F(LockStateControllerTest, DISABLED_LockAndCancel) { |
// forward only half way through |
AdvancePartially(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, 0.5f); |
- gfx::Transform transform_before_button_released = |
- GetContainer(kShellWindowId_DefaultContainer)->layer()->transform(); |
- |
// Release the button before the lock timer fires. |
ReleasePowerButton(); |
ExpectPreLockAnimationCancel(); |
- gfx::Transform transform_after_button_released = |
- GetContainer(kShellWindowId_DefaultContainer)->layer()->transform(); |
- // Expect no flickering, animation should proceed from mid-state. |
- EXPECT_EQ(transform_before_button_released, transform_after_button_released); |
- |
Advance(SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS); |
ExpectUnlockedState(); |
- EXPECT_EQ(0, delegate_->num_lock_requests()); |
+ EXPECT_EQ(0, lock_state_controller_delegate_->num_lock_requests()); |
} |
// Test that we deal with cancelling lock correctly. |
-// TODO(antrim): Reenable this: http://crbug.com/167048 |
-TEST_F(LockStateControllerTest, |
- DISABLED_LockAndCancelAndLockAgain) { |
+TEST_F(LockStateControllerTest, LockAndCancelAndLockAgain) { |
Initialize(false, user::LOGGED_IN_USER); |
ExpectUnlockedState(); |
@@ -626,7 +570,8 @@ TEST_F(LockStateControllerTest, |
ReleasePowerButton(); |
ExpectPreLockAnimationCancel(); |
- AdvancePartially(SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, 0.5f); |
+ AdvancePartially(SessionStateAnimator::ANIMATION_SPEED_UNDO_MOVE_WINDOWS, |
+ 0.5f); |
PressPowerButton(); |
ExpectPreLockAnimationStarted(); |
@@ -634,17 +579,15 @@ TEST_F(LockStateControllerTest, |
AdvancePartially(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, 0.6f); |
- EXPECT_EQ(0, delegate_->num_lock_requests()); |
- ExpectPreLockAnimationStarted(); |
+ EXPECT_EQ(0, lock_state_controller_delegate_->num_lock_requests()); |
AdvancePartially(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, 0.6f); |
ExpectPreLockAnimationFinished(); |
- EXPECT_EQ(1, delegate_->num_lock_requests()); |
+ EXPECT_EQ(1, lock_state_controller_delegate_->num_lock_requests()); |
} |
// Hold the power button down from the unlocked state to eventual shutdown. |
-// TODO(antrim): Reenable this: http://crbug.com/167048 |
-TEST_F(LockStateControllerTest, DISABLED_LockToShutdown) { |
+TEST_F(LockStateControllerTest, LockToShutdown) { |
Initialize(false, user::LOGGED_IN_USER); |
// Hold the power button and lock the screen. |
@@ -699,13 +642,11 @@ TEST_F(LockStateControllerTest, CancelLockToShutdown) { |
EXPECT_FALSE(test_api_->shutdown_timer_is_running()); |
} |
+// TODO(bruthig): Investigate why this hangs on Windows 8 and whether it can be |
+// safely enabled on OS_WIN. |
+#ifndef OS_WIN |
// Test that we handle the case where lock requests are ignored. |
-// TODO(antrim): Reenable this: http://crbug.com/167048 |
-TEST_F(LockStateControllerTest, DISABLED_Lock) { |
- // We require animations to have a duration for this test. |
- ui::ScopedAnimationDurationScaleMode normal_duration_mode( |
- ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION); |
- |
+TEST_F(LockStateControllerTest, Lock) { |
Initialize(false, user::LOGGED_IN_USER); |
// Hold the power button and lock the screen. |
@@ -714,20 +655,16 @@ TEST_F(LockStateControllerTest, DISABLED_Lock) { |
Advance(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE); |
- EXPECT_EQ(1, delegate_->num_lock_requests()); |
+ EXPECT_EQ(1, lock_state_controller_delegate_->num_lock_requests()); |
EXPECT_TRUE(test_api_->lock_fail_timer_is_running()); |
// We shouldn't start the lock-to-shutdown timer until the screen has actually |
// been locked and this was animated. |
EXPECT_FALSE(test_api_->lock_to_shutdown_timer_is_running()); |
- // Act as if the request timed out. We should restore the windows. |
- test_api_->trigger_lock_fail_timeout(); |
- |
- ExpectUnlockAfterUIDestroyedAnimationStarted(); |
- Advance(SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS); |
- ExpectUnlockAfterUIDestroyedAnimationFinished(); |
- ExpectUnlockedState(); |
+ // Act as if the request timed out. |
+ EXPECT_DEATH(test_api_->trigger_lock_fail_timeout(), ""); |
} |
+#endif |
// Test the basic operation of the lock button (not logged in). |
TEST_F(LockStateControllerTest, LockButtonBasicNotLoggedIn) { |
@@ -737,7 +674,7 @@ TEST_F(LockStateControllerTest, LockButtonBasicNotLoggedIn) { |
PressLockButton(); |
EXPECT_FALSE(test_api_->is_animating_lock()); |
ReleaseLockButton(); |
- EXPECT_EQ(0, delegate_->num_lock_requests()); |
+ EXPECT_EQ(0, lock_state_controller_delegate_->num_lock_requests()); |
} |
// Test the basic operation of the lock button (guest). |
@@ -748,12 +685,11 @@ TEST_F(LockStateControllerTest, LockButtonBasicGuest) { |
PressLockButton(); |
EXPECT_FALSE(test_api_->is_animating_lock()); |
ReleaseLockButton(); |
- EXPECT_EQ(0, delegate_->num_lock_requests()); |
+ EXPECT_EQ(0, lock_state_controller_delegate_->num_lock_requests()); |
} |
// Test the basic operation of the lock button. |
-// TODO(antrim): Reenable this: http://crbug.com/167048 |
-TEST_F(LockStateControllerTest, DISABLED_LockButtonBasic) { |
+TEST_F(LockStateControllerTest, LockButtonBasic) { |
// If we're logged in as a regular user, we should start the lock timer and |
// the pre-lock animation. |
Initialize(false, user::LOGGED_IN_USER); |
@@ -768,14 +704,14 @@ TEST_F(LockStateControllerTest, DISABLED_LockButtonBasic) { |
Advance(SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS); |
ExpectUnlockedState(); |
- EXPECT_EQ(0, delegate_->num_lock_requests()); |
+ EXPECT_EQ(0, lock_state_controller_delegate_->num_lock_requests()); |
// Press the button again and let the lock timeout fire. We should request |
// that the screen be locked. |
PressLockButton(); |
ExpectPreLockAnimationStarted(); |
Advance(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE); |
- EXPECT_EQ(1, delegate_->num_lock_requests()); |
+ EXPECT_EQ(1, lock_state_controller_delegate_->num_lock_requests()); |
// Pressing the lock button while we have a pending lock request shouldn't do |
// anything. |
@@ -793,30 +729,34 @@ TEST_F(LockStateControllerTest, DISABLED_LockButtonBasic) { |
ExpectPostLockAnimationStarted(); |
Advance(SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS); |
- ExpectPastLockAnimationFinished(); |
+ ExpectPostLockAnimationFinished(); |
PressLockButton(); |
ReleaseLockButton(); |
- ExpectPastLockAnimationFinished(); |
+ ExpectPostLockAnimationFinished(); |
} |
// Test that the power button takes priority over the lock button. |
-// TODO(antrim): Reenable this: http://crbug.com/167048 |
-TEST_F(LockStateControllerTest, |
- DISABLED_PowerButtonPreemptsLockButton) { |
+TEST_F(LockStateControllerTest, PowerButtonPreemptsLockButton) { |
Initialize(false, user::LOGGED_IN_USER); |
// While the lock button is down, hold the power button. |
PressLockButton(); |
ExpectPreLockAnimationStarted(); |
+ |
+ AdvancePartially(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, 0.1f); |
+ ExpectPreLockAnimationRunning(); |
+ |
PressPowerButton(); |
- ExpectPreLockAnimationStarted(); |
+ ExpectPreLockAnimationRunning(); |
- AdvancePartially(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, 0.5f); |
+ AdvancePartially(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, 0.1f); |
+ ExpectPreLockAnimationRunning(); |
// The lock timer shouldn't be stopped when the lock button is released. |
ReleaseLockButton(); |
- ExpectPreLockAnimationStarted(); |
+ ExpectPreLockAnimationRunning(); |
+ |
ReleasePowerButton(); |
ExpectPreLockAnimationCancel(); |
@@ -826,14 +766,20 @@ TEST_F(LockStateControllerTest, |
// Now press the power button first and then the lock button. |
PressPowerButton(); |
ExpectPreLockAnimationStarted(); |
+ |
+ AdvancePartially(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, 0.1f); |
+ |
PressLockButton(); |
- ExpectPreLockAnimationStarted(); |
+ ExpectPreLockAnimationRunning(); |
- AdvancePartially(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, 0.5f); |
+ AdvancePartially(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, 0.1f); |
// Releasing the power button should stop the lock timer. |
ReleasePowerButton(); |
ExpectPreLockAnimationCancel(); |
+ |
+ AdvancePartially(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, 0.1f); |
+ |
ReleaseLockButton(); |
ExpectPreLockAnimationCancel(); |
} |
@@ -847,10 +793,10 @@ TEST_F(LockStateControllerTest, LockWithoutButton) { |
ExpectPreLockAnimationStarted(); |
EXPECT_FALSE(test_api_->is_lock_cancellable()); |
+ EXPECT_LT(0u, test_animator_->GetAnimationCount()); |
- // TODO(antrim): After time-faking is fixed, let the pre-lock animation |
- // complete here and check that delegate_->num_lock_requests() is 0 to |
- // prevent http://crbug.com/172487 from regressing. |
+ test_animator_->CompleteAllAnimations(true); |
+ EXPECT_EQ(0, lock_state_controller_delegate_->num_lock_requests()); |
} |
// When we hear that the process is exiting but we haven't had a chance to |
@@ -860,8 +806,8 @@ TEST_F(LockStateControllerTest, ShutdownWithoutButton) { |
lock_state_controller_->OnAppTerminating(); |
EXPECT_TRUE( |
- animator_api_->ContainersAreAnimated( |
- SessionStateAnimator::kAllContainersMask, |
+ test_animator_->AreContainersAnimated( |
+ SessionStateAnimator::kAllNonRootContainersMask, |
SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY)); |
GenerateMouseMoveEvent(); |
EXPECT_FALSE(cursor_visible()); |
@@ -871,7 +817,6 @@ TEST_F(LockStateControllerTest, ShutdownWithoutButton) { |
// outside request to shut down (e.g. from the login or lock screen). |
TEST_F(LockStateControllerTest, RequestShutdownFromLoginScreen) { |
Initialize(false, user::LOGGED_IN_NONE); |
- CreateWindowForLockscreen(); |
lock_state_controller_->RequestShutdown(); |
@@ -891,9 +836,9 @@ TEST_F(LockStateControllerTest, RequestShutdownFromLockScreen) { |
Initialize(false, user::LOGGED_IN_USER); |
SystemLocks(); |
- CreateWindowForLockscreen(); |
+ |
Advance(SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); |
- ExpectPastLockAnimationFinished(); |
+ ExpectPostLockAnimationFinished(); |
lock_state_controller_->RequestShutdown(); |
@@ -909,9 +854,7 @@ TEST_F(LockStateControllerTest, RequestShutdownFromLockScreen) { |
EXPECT_EQ(1, NumShutdownRequests()); |
} |
-// TODO(antrim): Reenable this: http://crbug.com/167048 |
-TEST_F(LockStateControllerTest, |
- DISABLED_RequestAndCancelShutdownFromLockScreen) { |
+TEST_F(LockStateControllerTest, RequestAndCancelShutdownFromLockScreen) { |
Initialize(false, user::LOGGED_IN_USER); |
SystemLocks(); |
@@ -927,9 +870,6 @@ TEST_F(LockStateControllerTest, |
AdvancePartially(SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN, 0.5f); |
- float grayscale_before_button_release = |
- Shell::GetPrimaryRootWindow()->layer()->layer_grayscale(); |
- |
// Release the power button before the shutdown timer fires. |
ReleasePowerButton(); |
@@ -937,12 +877,7 @@ TEST_F(LockStateControllerTest, |
ExpectShutdownAnimationCancel(); |
- float grayscale_after_button_release = |
- Shell::GetPrimaryRootWindow()->layer()->layer_grayscale(); |
- // Expect no flickering in undo animation. |
- EXPECT_EQ(grayscale_before_button_release, grayscale_after_button_release); |
- |
- Advance(SessionStateAnimator::ANIMATION_SPEED_REVERT); |
+ Advance(SessionStateAnimator::ANIMATION_SPEED_REVERT_SHUTDOWN); |
ExpectLockedState(); |
} |
@@ -952,14 +887,14 @@ TEST_F(LockStateControllerTest, IgnorePowerButtonIfScreenIsOff) { |
// When the screen brightness is at 0%, we shouldn't do anything in response |
// to power button presses. |
- controller_->OnScreenBrightnessChanged(0.0); |
+ power_button_controller_->OnScreenBrightnessChanged(0.0); |
PressPowerButton(); |
EXPECT_FALSE(test_api_->is_animating_lock()); |
ReleasePowerButton(); |
// After increasing the brightness to 10%, we should start the timer like |
// usual. |
- controller_->OnScreenBrightnessChanged(10.0); |
+ power_button_controller_->OnScreenBrightnessChanged(10.0); |
PressPowerButton(); |
EXPECT_TRUE(test_api_->is_animating_lock()); |
ReleasePowerButton(); |
@@ -988,12 +923,12 @@ TEST_F(LockStateControllerTest, HonorPowerButtonInDockedMode) { |
// When all of the displays are turned off (e.g. due to user inactivity), the |
// power button should be ignored. |
- controller_->OnScreenBrightnessChanged(0.0); |
+ power_button_controller_->OnScreenBrightnessChanged(0.0); |
static_cast<ui::TestDisplaySnapshot*>(outputs[0].display) |
->set_current_mode(NULL); |
static_cast<ui::TestDisplaySnapshot*>(outputs[1].display) |
->set_current_mode(NULL); |
- controller_->OnDisplayModeChanged(outputs); |
+ power_button_controller_->OnDisplayModeChanged(outputs); |
PressPowerButton(); |
EXPECT_FALSE(test_api_->is_animating_lock()); |
ReleasePowerButton(); |
@@ -1003,7 +938,7 @@ TEST_F(LockStateControllerTest, HonorPowerButtonInDockedMode) { |
// brightness to 0%), the power button should still be handled. |
static_cast<ui::TestDisplaySnapshot*>(outputs[1].display) |
->set_current_mode(modes[0]); |
- controller_->OnDisplayModeChanged(outputs); |
+ power_button_controller_->OnDisplayModeChanged(outputs); |
PressPowerButton(); |
EXPECT_TRUE(test_api_->is_animating_lock()); |
ReleasePowerButton(); |
@@ -1011,17 +946,14 @@ TEST_F(LockStateControllerTest, HonorPowerButtonInDockedMode) { |
#endif |
// Test that hidden background appears and revers correctly on lock/cancel. |
-// TODO(antrim): Reenable this: http://crbug.com/167048 |
-TEST_F(LockStateControllerTest, DISABLED_TestHiddenBackgroundLockCancel) { |
+TEST_F(LockStateControllerTest, TestHiddenBackgroundLockCancel) { |
Initialize(false, user::LOGGED_IN_USER); |
HideBackground(); |
- EXPECT_TRUE(IsBackgroundHidden()); |
ExpectUnlockedState(); |
PressPowerButton(); |
ExpectPreLockAnimationStarted(); |
- EXPECT_FALSE(IsBackgroundHidden()); |
ExpectBackgroundIsShowing(); |
// Forward only half way through. |
@@ -1031,21 +963,23 @@ TEST_F(LockStateControllerTest, DISABLED_TestHiddenBackgroundLockCancel) { |
ReleasePowerButton(); |
ExpectPreLockAnimationCancel(); |
ExpectBackgroundIsHiding(); |
- EXPECT_FALSE(IsBackgroundHidden()); |
- Advance(SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS); |
+ Advance(SessionStateAnimator::ANIMATION_SPEED_UNDO_MOVE_WINDOWS); |
+ |
+ // When the CancelPrelockAnimation sequence finishes it queues up a |
+ // restore background visibilty sequence when the background is hidden. |
+ ExpectRestoringBackgroundVisibility(); |
+ |
+ Advance(SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); |
ExpectUnlockedState(); |
- EXPECT_TRUE(IsBackgroundHidden()); |
} |
// Test that hidden background appears and revers correctly on lock/unlock. |
-// TODO(antrim): Reenable this: http://crbug.com/167048 |
-TEST_F(LockStateControllerTest, DISABLED_TestHiddenBackgroundLockUnlock) { |
+TEST_F(LockStateControllerTest, TestHiddenBackgroundLockUnlock) { |
Initialize(false, user::LOGGED_IN_USER); |
HideBackground(); |
- EXPECT_TRUE(IsBackgroundHidden()); |
ExpectUnlockedState(); |
// Press the power button and check that the lock timer is started and that we |
@@ -1053,7 +987,6 @@ TEST_F(LockStateControllerTest, DISABLED_TestHiddenBackgroundLockUnlock) { |
PressPowerButton(); |
ExpectPreLockAnimationStarted(); |
- EXPECT_FALSE(IsBackgroundHidden()); |
ExpectBackgroundIsShowing(); |
Advance(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE); |
@@ -1066,7 +999,7 @@ TEST_F(LockStateControllerTest, DISABLED_TestHiddenBackgroundLockUnlock) { |
ExpectPostLockAnimationStarted(); |
Advance(SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS); |
- ExpectPastLockAnimationFinished(); |
+ ExpectPostLockAnimationFinished(); |
ExpectLockedState(); |
@@ -1080,14 +1013,104 @@ TEST_F(LockStateControllerTest, DISABLED_TestHiddenBackgroundLockUnlock) { |
ExpectUnlockAfterUIDestroyedAnimationStarted(); |
ExpectBackgroundIsHiding(); |
- EXPECT_FALSE(IsBackgroundHidden()); |
Advance(SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS); |
+ |
+ // When the StartUnlockAnimationAfterUIDestroyed sequence finishes it queues |
+ // up a restore background visibilty sequence when the background is hidden. |
+ ExpectRestoringBackgroundVisibility(); |
+ |
+ Advance(SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); |
+ |
ExpectUnlockAfterUIDestroyedAnimationFinished(); |
- EXPECT_TRUE(IsBackgroundHidden()); |
ExpectUnlockedState(); |
} |
+TEST_F(LockStateControllerTest, Screenshot) { |
+ test::TestScreenshotDelegate* delegate = GetScreenshotDelegate(); |
+ delegate->set_can_take_screenshot(true); |
+ |
+ EnableMaximizeMode(false); |
+ |
+ // Screenshot handling should not be active when not in maximize mode. |
+ ASSERT_EQ(0, delegate->handle_take_screenshot_count()); |
+ PressVolumeDown(); |
+ PressPowerButton(); |
+ ReleasePowerButton(); |
+ ReleaseVolumeDown(); |
+ EXPECT_EQ(0, delegate->handle_take_screenshot_count()); |
+ |
+ EnableMaximizeMode(true); |
+ |
+ // Pressing power alone does not take a screenshot. |
+ PressPowerButton(); |
+ ReleasePowerButton(); |
+ EXPECT_EQ(0, delegate->handle_take_screenshot_count()); |
+ |
+ // Press & release volume then pressing power does not take a screenshot. |
+ ASSERT_EQ(0, delegate->handle_take_screenshot_count()); |
+ PressVolumeDown(); |
+ ReleaseVolumeDown(); |
+ PressPowerButton(); |
+ ReleasePowerButton(); |
+ EXPECT_EQ(0, delegate->handle_take_screenshot_count()); |
+ |
+ // Pressing power and then volume does not take a screenshot. |
+ ASSERT_EQ(0, delegate->handle_take_screenshot_count()); |
+ PressPowerButton(); |
+ ReleasePowerButton(); |
+ PressVolumeDown(); |
+ ReleaseVolumeDown(); |
+ EXPECT_EQ(0, delegate->handle_take_screenshot_count()); |
+ |
+ // Holding volume down and pressing power takes a screenshot. |
+ ASSERT_EQ(0, delegate->handle_take_screenshot_count()); |
+ PressVolumeDown(); |
+ PressPowerButton(); |
+ ReleasePowerButton(); |
+ ReleaseVolumeDown(); |
+ EXPECT_EQ(1, delegate->handle_take_screenshot_count()); |
+} |
+ |
+// Tests that a lock action is cancellable when quick lock is turned on and |
+// maximize mode is not active. |
+TEST_F(LockStateControllerTest, QuickLockWhileNotInMaximizeMode) { |
+ Initialize(false, user::LOGGED_IN_USER); |
+ power_button_controller_->set_enable_quick_lock_for_test(true); |
+ EnableMaximizeMode(false); |
+ |
+ PressPowerButton(); |
+ |
+ ExpectPreLockAnimationStarted(); |
+ EXPECT_TRUE(test_api_->is_animating_lock()); |
+ EXPECT_TRUE(lock_state_controller_->CanCancelLockAnimation()); |
+ |
+ ReleasePowerButton(); |
+ |
+ EXPECT_EQ(0, lock_state_controller_delegate_->num_lock_requests()); |
+} |
+ |
+// Tests that a lock action is not cancellable when quick lock is turned on and |
+// maximize mode is active. |
+TEST_F(LockStateControllerTest, QuickLockWhileInMaximizeMode) { |
+ Initialize(false, user::LOGGED_IN_USER); |
+ power_button_controller_->set_enable_quick_lock_for_test(true); |
+ EnableMaximizeMode(true); |
+ |
+ PressPowerButton(); |
+ |
+ ExpectPreLockAnimationStarted(); |
+ EXPECT_TRUE(test_api_->is_animating_lock()); |
+ EXPECT_FALSE(lock_state_controller_->CanCancelLockAnimation()); |
+ |
+ ReleasePowerButton(); |
+ |
+ ExpectPreLockAnimationStarted(); |
+ |
+ test_animator_->CompleteAllAnimations(true); |
+ EXPECT_EQ(1, lock_state_controller_delegate_->num_lock_requests()); |
+} |
+ |
} // namespace test |
} // namespace ash |