| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/wm/lock_state_controller.h" | 5 #include "ash/wm/lock_state_controller.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "ash/public/cpp/config.h" |
| 10 #include "ash/session/session_controller.h" | 11 #include "ash/session/session_controller.h" |
| 11 #include "ash/shell.h" | 12 #include "ash/shell.h" |
| 12 #include "ash/shell_port.h" | |
| 13 #include "ash/shutdown_controller.h" | 13 #include "ash/shutdown_controller.h" |
| 14 #include "ash/test/ash_test_base.h" | 14 #include "ash/test/ash_test_base.h" |
| 15 #include "ash/test/lock_state_controller_test_api.h" | 15 #include "ash/test/lock_state_controller_test_api.h" |
| 16 #include "ash/test/test_screenshot_delegate.h" | 16 #include "ash/test/test_screenshot_delegate.h" |
| 17 #include "ash/test/test_session_controller_client.h" | 17 #include "ash/test/test_session_controller_client.h" |
| 18 #include "ash/test/test_session_state_animator.h" | 18 #include "ash/test/test_session_state_animator.h" |
| 19 #include "ash/test/test_shell_delegate.h" | 19 #include "ash/test/test_shell_delegate.h" |
| 20 #include "ash/wm/maximize_mode/maximize_mode_controller.h" | 20 #include "ash/wm/maximize_mode/maximize_mode_controller.h" |
| 21 #include "ash/wm/power_button_controller.h" | 21 #include "ash/wm/power_button_controller.h" |
| 22 #include "ash/wm/session_state_animator.h" | 22 #include "ash/wm/session_state_animator.h" |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 test_api_.reset(new LockStateControllerTestApi(lock_state_controller_)); | 86 test_api_.reset(new LockStateControllerTestApi(lock_state_controller_)); |
| 87 test_api_->set_shutdown_controller(&test_shutdown_controller_); | 87 test_api_->set_shutdown_controller(&test_shutdown_controller_); |
| 88 | 88 |
| 89 power_button_controller_ = Shell::Get()->power_button_controller(); | 89 power_button_controller_ = Shell::Get()->power_button_controller(); |
| 90 | 90 |
| 91 shell_delegate_ = | 91 shell_delegate_ = |
| 92 static_cast<TestShellDelegate*>(Shell::Get()->shell_delegate()); | 92 static_cast<TestShellDelegate*>(Shell::Get()->shell_delegate()); |
| 93 } | 93 } |
| 94 | 94 |
| 95 void TearDown() override { | 95 void TearDown() override { |
| 96 const bool is_mash = ShellPort::Get()->IsRunningInMash(); | 96 const bool is_mash = Shell::GetAshConfig() == Config::MASH; |
| 97 AshTestBase::TearDown(); | 97 AshTestBase::TearDown(); |
| 98 // Mash shuts down DBus during normal destruction. | 98 // Mash shuts down DBus during normal destruction. |
| 99 if (!is_mash) | 99 if (!is_mash) |
| 100 chromeos::DBusThreadManager::Shutdown(); | 100 chromeos::DBusThreadManager::Shutdown(); |
| 101 } | 101 } |
| 102 | 102 |
| 103 protected: | 103 protected: |
| 104 void GenerateMouseMoveEvent() { | 104 void GenerateMouseMoveEvent() { |
| 105 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); | 105 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); |
| 106 generator.MoveMouseTo(10, 10); | 106 generator.MoveMouseTo(10, 10); |
| (...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 394 | 394 |
| 395 // Hold the button again and check that we start shutting down. | 395 // Hold the button again and check that we start shutting down. |
| 396 PressPowerButton(); | 396 PressPowerButton(); |
| 397 | 397 |
| 398 ExpectShutdownAnimationStarted(); | 398 ExpectShutdownAnimationStarted(); |
| 399 | 399 |
| 400 EXPECT_EQ(0, NumShutdownRequests()); | 400 EXPECT_EQ(0, NumShutdownRequests()); |
| 401 // Make sure a mouse move event won't show the cursor. | 401 // Make sure a mouse move event won't show the cursor. |
| 402 GenerateMouseMoveEvent(); | 402 GenerateMouseMoveEvent(); |
| 403 // TODO: CursorManager not created in mash. http://crbug.com/631103. | 403 // TODO: CursorManager not created in mash. http://crbug.com/631103. |
| 404 if (!ShellPort::Get()->IsRunningInMash()) | 404 if (Shell::GetAshConfig() != Config::MASH) |
| 405 EXPECT_FALSE(cursor_visible()); | 405 EXPECT_FALSE(cursor_visible()); |
| 406 | 406 |
| 407 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); | 407 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); |
| 408 test_api_->trigger_real_shutdown_timeout(); | 408 test_api_->trigger_real_shutdown_timeout(); |
| 409 EXPECT_EQ(1, NumShutdownRequests()); | 409 EXPECT_EQ(1, NumShutdownRequests()); |
| 410 } | 410 } |
| 411 | 411 |
| 412 // Test that we start shutting down immediately if the power button is pressed | 412 // Test that we start shutting down immediately if the power button is pressed |
| 413 // while we're not logged in on an unofficial system. | 413 // while we're not logged in on an unofficial system. |
| 414 TEST_F(LockStateControllerTest, LegacyNotLoggedIn) { | 414 TEST_F(LockStateControllerTest, LegacyNotLoggedIn) { |
| (...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 805 // display an animation, we should just blank the screen. | 805 // display an animation, we should just blank the screen. |
| 806 TEST_F(LockStateControllerTest, ShutdownWithoutButton) { | 806 TEST_F(LockStateControllerTest, ShutdownWithoutButton) { |
| 807 Initialize(false, LoginStatus::USER); | 807 Initialize(false, LoginStatus::USER); |
| 808 lock_state_controller_->OnAppTerminating(); | 808 lock_state_controller_->OnAppTerminating(); |
| 809 | 809 |
| 810 EXPECT_TRUE(test_animator_->AreContainersAnimated( | 810 EXPECT_TRUE(test_animator_->AreContainersAnimated( |
| 811 SessionStateAnimator::kAllNonRootContainersMask, | 811 SessionStateAnimator::kAllNonRootContainersMask, |
| 812 SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY)); | 812 SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY)); |
| 813 GenerateMouseMoveEvent(); | 813 GenerateMouseMoveEvent(); |
| 814 // TODO: CursorManager not created in mash. http://crbug.com/631103. | 814 // TODO: CursorManager not created in mash. http://crbug.com/631103. |
| 815 if (!ShellPort::Get()->IsRunningInMash()) | 815 if (Shell::GetAshConfig() != Config::MASH) |
| 816 EXPECT_FALSE(cursor_visible()); | 816 EXPECT_FALSE(cursor_visible()); |
| 817 } | 817 } |
| 818 | 818 |
| 819 // Test that we display the fast-close animation and shut down when we get an | 819 // Test that we display the fast-close animation and shut down when we get an |
| 820 // outside request to shut down (e.g. from the login or lock screen). | 820 // outside request to shut down (e.g. from the login or lock screen). |
| 821 TEST_F(LockStateControllerTest, RequestShutdownFromLoginScreen) { | 821 TEST_F(LockStateControllerTest, RequestShutdownFromLoginScreen) { |
| 822 Initialize(false, LoginStatus::NOT_LOGGED_IN); | 822 Initialize(false, LoginStatus::NOT_LOGGED_IN); |
| 823 | 823 |
| 824 lock_state_controller_->RequestShutdown(); | 824 lock_state_controller_->RequestShutdown(); |
| 825 | 825 |
| 826 ExpectShutdownAnimationStarted(); | 826 ExpectShutdownAnimationStarted(); |
| 827 Advance(SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); | 827 Advance(SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); |
| 828 | 828 |
| 829 GenerateMouseMoveEvent(); | 829 GenerateMouseMoveEvent(); |
| 830 // TODO: CursorManager not created in mash. http://crbug.com/631103. | 830 // TODO: CursorManager not created in mash. http://crbug.com/631103. |
| 831 if (!ShellPort::Get()->IsRunningInMash()) | 831 if (Shell::GetAshConfig() != Config::MASH) |
| 832 EXPECT_FALSE(cursor_visible()); | 832 EXPECT_FALSE(cursor_visible()); |
| 833 | 833 |
| 834 EXPECT_EQ(0, NumShutdownRequests()); | 834 EXPECT_EQ(0, NumShutdownRequests()); |
| 835 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); | 835 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); |
| 836 test_api_->trigger_real_shutdown_timeout(); | 836 test_api_->trigger_real_shutdown_timeout(); |
| 837 EXPECT_EQ(1, NumShutdownRequests()); | 837 EXPECT_EQ(1, NumShutdownRequests()); |
| 838 } | 838 } |
| 839 | 839 |
| 840 TEST_F(LockStateControllerTest, RequestShutdownFromLockScreen) { | 840 TEST_F(LockStateControllerTest, RequestShutdownFromLockScreen) { |
| 841 Initialize(false, LoginStatus::USER); | 841 Initialize(false, LoginStatus::USER); |
| 842 | 842 |
| 843 SystemLocks(); | 843 SystemLocks(); |
| 844 | 844 |
| 845 Advance(SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); | 845 Advance(SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); |
| 846 ExpectPostLockAnimationFinished(); | 846 ExpectPostLockAnimationFinished(); |
| 847 | 847 |
| 848 lock_state_controller_->RequestShutdown(); | 848 lock_state_controller_->RequestShutdown(); |
| 849 | 849 |
| 850 ExpectShutdownAnimationStarted(); | 850 ExpectShutdownAnimationStarted(); |
| 851 Advance(SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); | 851 Advance(SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); |
| 852 | 852 |
| 853 GenerateMouseMoveEvent(); | 853 GenerateMouseMoveEvent(); |
| 854 // TODO: CursorManager not created in mash. http://crbug.com/631103. | 854 // TODO: CursorManager not created in mash. http://crbug.com/631103. |
| 855 if (!ShellPort::Get()->IsRunningInMash()) | 855 if (Shell::GetAshConfig() != Config::MASH) |
| 856 EXPECT_FALSE(cursor_visible()); | 856 EXPECT_FALSE(cursor_visible()); |
| 857 | 857 |
| 858 EXPECT_EQ(0, NumShutdownRequests()); | 858 EXPECT_EQ(0, NumShutdownRequests()); |
| 859 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); | 859 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); |
| 860 test_api_->trigger_real_shutdown_timeout(); | 860 test_api_->trigger_real_shutdown_timeout(); |
| 861 EXPECT_EQ(1, NumShutdownRequests()); | 861 EXPECT_EQ(1, NumShutdownRequests()); |
| 862 } | 862 } |
| 863 | 863 |
| 864 TEST_F(LockStateControllerTest, RequestAndCancelShutdownFromLockScreen) { | 864 TEST_F(LockStateControllerTest, RequestAndCancelShutdownFromLockScreen) { |
| 865 Initialize(false, LoginStatus::USER); | 865 Initialize(false, LoginStatus::USER); |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1024 | 1024 |
| 1025 Advance(SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); | 1025 Advance(SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); |
| 1026 | 1026 |
| 1027 ExpectUnlockAfterUIDestroyedAnimationFinished(); | 1027 ExpectUnlockAfterUIDestroyedAnimationFinished(); |
| 1028 | 1028 |
| 1029 ExpectUnlockedState(); | 1029 ExpectUnlockedState(); |
| 1030 } | 1030 } |
| 1031 | 1031 |
| 1032 TEST_F(LockStateControllerTest, Screenshot) { | 1032 TEST_F(LockStateControllerTest, Screenshot) { |
| 1033 // TODO: fails because of no screenshot in mash. http://crbug.com/698033. | 1033 // TODO: fails because of no screenshot in mash. http://crbug.com/698033. |
| 1034 if (ShellPort::Get()->IsRunningInMash()) | 1034 if (Shell::GetAshConfig() == Config::MASH) |
| 1035 return; | 1035 return; |
| 1036 | 1036 |
| 1037 test::TestScreenshotDelegate* delegate = GetScreenshotDelegate(); | 1037 test::TestScreenshotDelegate* delegate = GetScreenshotDelegate(); |
| 1038 delegate->set_can_take_screenshot(true); | 1038 delegate->set_can_take_screenshot(true); |
| 1039 | 1039 |
| 1040 EnableMaximizeMode(false); | 1040 EnableMaximizeMode(false); |
| 1041 | 1041 |
| 1042 // Screenshot handling should not be active when not in maximize mode. | 1042 // Screenshot handling should not be active when not in maximize mode. |
| 1043 ASSERT_EQ(0, delegate->handle_take_screenshot_count()); | 1043 ASSERT_EQ(0, delegate->handle_take_screenshot_count()); |
| 1044 PressVolumeDown(); | 1044 PressVolumeDown(); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1074 ASSERT_EQ(0, delegate->handle_take_screenshot_count()); | 1074 ASSERT_EQ(0, delegate->handle_take_screenshot_count()); |
| 1075 PressVolumeDown(); | 1075 PressVolumeDown(); |
| 1076 PressPowerButton(); | 1076 PressPowerButton(); |
| 1077 ReleasePowerButton(); | 1077 ReleasePowerButton(); |
| 1078 ReleaseVolumeDown(); | 1078 ReleaseVolumeDown(); |
| 1079 EXPECT_EQ(1, delegate->handle_take_screenshot_count()); | 1079 EXPECT_EQ(1, delegate->handle_take_screenshot_count()); |
| 1080 } | 1080 } |
| 1081 | 1081 |
| 1082 } // namespace test | 1082 } // namespace test |
| 1083 } // namespace ash | 1083 } // namespace ash |
| OLD | NEW |