Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2676)

Unified Diff: ash/wm/lock_state_controller_unittest.cc

Issue 326813004: Added quick lock mechanism while in Touchview (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added ASH_EXPORT to SessionStateAnimator Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/wm/lock_state_controller.cc ('k') | ash/wm/maximize_mode/maximize_mode_controller.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « ash/wm/lock_state_controller.cc ('k') | ash/wm/maximize_mode/maximize_mode_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698