| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/power_button_controller.h" | 5 #include "ash/wm/power_button_controller.h" |
| 6 | 6 |
| 7 #include "ash/shell.h" | 7 #include "ash/shell.h" |
| 8 #include "ash/test/ash_test_base.h" | 8 #include "ash/test/ash_test_base.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/time.h" | 10 #include "base/time.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 private: | 60 private: |
| 61 DISALLOW_COPY_AND_ASSIGN(PowerButtonControllerTest); | 61 DISALLOW_COPY_AND_ASSIGN(PowerButtonControllerTest); |
| 62 }; | 62 }; |
| 63 | 63 |
| 64 // Test the lock-to-shutdown flow for non-Chrome-OS hardware that doesn't | 64 // Test the lock-to-shutdown flow for non-Chrome-OS hardware that doesn't |
| 65 // correctly report power button releases. We should lock immediately the first | 65 // correctly report power button releases. We should lock immediately the first |
| 66 // time the button is pressed and shut down when it's pressed from the locked | 66 // time the button is pressed and shut down when it's pressed from the locked |
| 67 // state. | 67 // state. |
| 68 TEST_F(PowerButtonControllerTest, LegacyLockAndShutDown) { | 68 TEST_F(PowerButtonControllerTest, LegacyLockAndShutDown) { |
| 69 controller_->set_has_legacy_power_button_for_test(true); | 69 controller_->set_has_legacy_power_button_for_test(true); |
| 70 controller_->OnLoginStateChange(true /*logged_in*/, false /*is_guest*/); | 70 controller_->OnLoginStateChanged(true /*logged_in*/, false /*is_guest*/); |
| 71 controller_->OnLockStateChange(false); | 71 controller_->OnLockStateChanged(false); |
| 72 | 72 |
| 73 // We should request that the screen be locked immediately after seeing the | 73 // We should request that the screen be locked immediately after seeing the |
| 74 // power button get pressed. | 74 // power button get pressed. |
| 75 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); | 75 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); |
| 76 EXPECT_TRUE( | 76 EXPECT_TRUE( |
| 77 test_api_->ContainerGroupIsAnimated( | 77 test_api_->ContainerGroupIsAnimated( |
| 78 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, | 78 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, |
| 79 PowerButtonController::ANIMATION_SLOW_CLOSE)); | 79 PowerButtonController::ANIMATION_SLOW_CLOSE)); |
| 80 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); | 80 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); |
| 81 EXPECT_FALSE(test_api_->hide_background_layer_timer_is_running()); | 81 EXPECT_FALSE(test_api_->hide_background_layer_timer_is_running()); |
| 82 EXPECT_FALSE(test_api_->lock_timer_is_running()); | 82 EXPECT_FALSE(test_api_->lock_timer_is_running()); |
| 83 EXPECT_EQ(1, delegate_->num_lock_requests()); | 83 EXPECT_EQ(1, delegate_->num_lock_requests()); |
| 84 | 84 |
| 85 // Notify that we locked successfully. | 85 // Notify that we locked successfully. |
| 86 controller_->OnStartingLock(); | 86 controller_->OnStartingLock(); |
| 87 EXPECT_TRUE( | 87 EXPECT_TRUE( |
| 88 test_api_->ContainerGroupIsAnimated( | 88 test_api_->ContainerGroupIsAnimated( |
| 89 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, | 89 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, |
| 90 PowerButtonController::ANIMATION_FAST_CLOSE)); | 90 PowerButtonController::ANIMATION_FAST_CLOSE)); |
| 91 EXPECT_TRUE( | 91 EXPECT_TRUE( |
| 92 test_api_->ContainerGroupIsAnimated( | 92 test_api_->ContainerGroupIsAnimated( |
| 93 PowerButtonController::SCREEN_LOCKER_CONTAINERS, | 93 PowerButtonController::SCREEN_LOCKER_CONTAINERS, |
| 94 PowerButtonController::ANIMATION_HIDE)); | 94 PowerButtonController::ANIMATION_HIDE)); |
| 95 | 95 |
| 96 // Notify that the lock window is visible. We should make it fade in. | 96 // Notify that the lock window is visible. We should make it fade in. |
| 97 controller_->OnLockStateChange(true); | 97 controller_->OnLockStateChanged(true); |
| 98 EXPECT_TRUE( | 98 EXPECT_TRUE( |
| 99 test_api_->ContainerGroupIsAnimated( | 99 test_api_->ContainerGroupIsAnimated( |
| 100 PowerButtonController::SCREEN_LOCKER_AND_RELATED_CONTAINERS, | 100 PowerButtonController::SCREEN_LOCKER_AND_RELATED_CONTAINERS, |
| 101 PowerButtonController::ANIMATION_FADE_IN)); | 101 PowerButtonController::ANIMATION_FADE_IN)); |
| 102 | 102 |
| 103 // We shouldn't progress towards the shutdown state, however. | 103 // We shouldn't progress towards the shutdown state, however. |
| 104 EXPECT_FALSE(test_api_->lock_to_shutdown_timer_is_running()); | 104 EXPECT_FALSE(test_api_->lock_to_shutdown_timer_is_running()); |
| 105 EXPECT_FALSE(test_api_->shutdown_timer_is_running()); | 105 EXPECT_FALSE(test_api_->shutdown_timer_is_running()); |
| 106 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now()); | 106 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now()); |
| 107 | 107 |
| 108 // Hold the button again and check that we start shutting down. | 108 // Hold the button again and check that we start shutting down. |
| 109 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); | 109 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); |
| 110 EXPECT_EQ(0, delegate_->num_shutdown_requests()); | 110 EXPECT_EQ(0, delegate_->num_shutdown_requests()); |
| 111 EXPECT_TRUE( | 111 EXPECT_TRUE( |
| 112 test_api_->ContainerGroupIsAnimated( | 112 test_api_->ContainerGroupIsAnimated( |
| 113 PowerButtonController::ALL_CONTAINERS, | 113 PowerButtonController::ALL_CONTAINERS, |
| 114 PowerButtonController::ANIMATION_FAST_CLOSE)); | 114 PowerButtonController::ANIMATION_FAST_CLOSE)); |
| 115 EXPECT_FALSE(Shell::GetRootWindow()->cursor_shown()); | 115 EXPECT_FALSE(Shell::GetRootWindow()->cursor_shown()); |
| 116 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); | 116 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); |
| 117 test_api_->trigger_real_shutdown_timeout(); | 117 test_api_->trigger_real_shutdown_timeout(); |
| 118 EXPECT_EQ(1, delegate_->num_shutdown_requests()); | 118 EXPECT_EQ(1, delegate_->num_shutdown_requests()); |
| 119 } | 119 } |
| 120 | 120 |
| 121 // Test that we start shutting down immediately if the power button is pressed | 121 // Test that we start shutting down immediately if the power button is pressed |
| 122 // while we're not logged in on an unofficial system. | 122 // while we're not logged in on an unofficial system. |
| 123 TEST_F(PowerButtonControllerTest, LegacyNotLoggedIn) { | 123 TEST_F(PowerButtonControllerTest, LegacyNotLoggedIn) { |
| 124 controller_->set_has_legacy_power_button_for_test(true); | 124 controller_->set_has_legacy_power_button_for_test(true); |
| 125 controller_->OnLoginStateChange(false /*logged_in*/, false /*is_guest*/); | 125 controller_->OnLoginStateChanged(false /*logged_in*/, false /*is_guest*/); |
| 126 controller_->OnLockStateChange(false); | 126 controller_->OnLockStateChanged(false); |
| 127 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); | 127 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); |
| 128 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); | 128 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); |
| 129 } | 129 } |
| 130 | 130 |
| 131 // Test that we start shutting down immediately if the power button is pressed | 131 // Test that we start shutting down immediately if the power button is pressed |
| 132 // while we're logged in as a guest on an unofficial system. | 132 // while we're logged in as a guest on an unofficial system. |
| 133 TEST_F(PowerButtonControllerTest, LegacyGuest) { | 133 TEST_F(PowerButtonControllerTest, LegacyGuest) { |
| 134 controller_->set_has_legacy_power_button_for_test(true); | 134 controller_->set_has_legacy_power_button_for_test(true); |
| 135 controller_->OnLoginStateChange(true /*logged_in*/, true /*is_guest*/); | 135 controller_->OnLoginStateChanged(true /*logged_in*/, true /*is_guest*/); |
| 136 controller_->OnLockStateChange(false); | 136 controller_->OnLockStateChanged(false); |
| 137 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); | 137 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); |
| 138 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); | 138 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); |
| 139 } | 139 } |
| 140 | 140 |
| 141 // When we hold the power button while the user isn't logged in, we should shut | 141 // When we hold the power button while the user isn't logged in, we should shut |
| 142 // down the machine directly. | 142 // down the machine directly. |
| 143 TEST_F(PowerButtonControllerTest, ShutdownWhenNotLoggedIn) { | 143 TEST_F(PowerButtonControllerTest, ShutdownWhenNotLoggedIn) { |
| 144 controller_->set_has_legacy_power_button_for_test(false); | 144 controller_->set_has_legacy_power_button_for_test(false); |
| 145 controller_->OnLoginStateChange(false /*logged_in*/, false /*is_guest*/); | 145 controller_->OnLoginStateChanged(false /*logged_in*/, false /*is_guest*/); |
| 146 controller_->OnLockStateChange(false); | 146 controller_->OnLockStateChanged(false); |
| 147 EXPECT_FALSE(test_api_->BackgroundLayerIsVisible()); | 147 EXPECT_FALSE(test_api_->BackgroundLayerIsVisible()); |
| 148 | 148 |
| 149 // Press the power button and check that we start the shutdown timer. | 149 // Press the power button and check that we start the shutdown timer. |
| 150 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); | 150 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); |
| 151 EXPECT_FALSE(test_api_->lock_timer_is_running()); | 151 EXPECT_FALSE(test_api_->lock_timer_is_running()); |
| 152 EXPECT_TRUE(test_api_->shutdown_timer_is_running()); | 152 EXPECT_TRUE(test_api_->shutdown_timer_is_running()); |
| 153 EXPECT_TRUE( | 153 EXPECT_TRUE( |
| 154 test_api_->ContainerGroupIsAnimated( | 154 test_api_->ContainerGroupIsAnimated( |
| 155 PowerButtonController::ALL_CONTAINERS, | 155 PowerButtonController::ALL_CONTAINERS, |
| 156 PowerButtonController::ANIMATION_SLOW_CLOSE)); | 156 PowerButtonController::ANIMATION_SLOW_CLOSE)); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 PowerButtonController::ANIMATION_FAST_CLOSE)); | 188 PowerButtonController::ANIMATION_FAST_CLOSE)); |
| 189 | 189 |
| 190 // When the timout fires, we should request a shutdown. | 190 // When the timout fires, we should request a shutdown. |
| 191 test_api_->trigger_real_shutdown_timeout(); | 191 test_api_->trigger_real_shutdown_timeout(); |
| 192 EXPECT_EQ(1, delegate_->num_shutdown_requests()); | 192 EXPECT_EQ(1, delegate_->num_shutdown_requests()); |
| 193 } | 193 } |
| 194 | 194 |
| 195 // Test that we lock the screen and deal with unlocking correctly. | 195 // Test that we lock the screen and deal with unlocking correctly. |
| 196 TEST_F(PowerButtonControllerTest, LockAndUnlock) { | 196 TEST_F(PowerButtonControllerTest, LockAndUnlock) { |
| 197 controller_->set_has_legacy_power_button_for_test(false); | 197 controller_->set_has_legacy_power_button_for_test(false); |
| 198 controller_->OnLoginStateChange(true /*logged_in*/, false /*is_guest*/); | 198 controller_->OnLoginStateChanged(true /*logged_in*/, false /*is_guest*/); |
| 199 controller_->OnLockStateChange(false); | 199 controller_->OnLockStateChanged(false); |
| 200 EXPECT_FALSE(test_api_->BackgroundLayerIsVisible()); | 200 EXPECT_FALSE(test_api_->BackgroundLayerIsVisible()); |
| 201 | 201 |
| 202 // We should initially be showing the screen locker containers, since they | 202 // We should initially be showing the screen locker containers, since they |
| 203 // also contain login-related windows that we want to show during the | 203 // also contain login-related windows that we want to show during the |
| 204 // logging-in animation. | 204 // logging-in animation. |
| 205 EXPECT_TRUE( | 205 EXPECT_TRUE( |
| 206 test_api_->ContainerGroupIsAnimated( | 206 test_api_->ContainerGroupIsAnimated( |
| 207 PowerButtonController::SCREEN_LOCKER_CONTAINERS, | 207 PowerButtonController::SCREEN_LOCKER_CONTAINERS, |
| 208 PowerButtonController::ANIMATION_RESTORE)); | 208 PowerButtonController::ANIMATION_RESTORE)); |
| 209 | 209 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 248 EXPECT_TRUE( | 248 EXPECT_TRUE( |
| 249 test_api_->ContainerGroupIsAnimated( | 249 test_api_->ContainerGroupIsAnimated( |
| 250 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, | 250 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, |
| 251 PowerButtonController::ANIMATION_FAST_CLOSE)); | 251 PowerButtonController::ANIMATION_FAST_CLOSE)); |
| 252 EXPECT_TRUE( | 252 EXPECT_TRUE( |
| 253 test_api_->ContainerGroupIsAnimated( | 253 test_api_->ContainerGroupIsAnimated( |
| 254 PowerButtonController::SCREEN_LOCKER_CONTAINERS, | 254 PowerButtonController::SCREEN_LOCKER_CONTAINERS, |
| 255 PowerButtonController::ANIMATION_HIDE)); | 255 PowerButtonController::ANIMATION_HIDE)); |
| 256 | 256 |
| 257 // Notify that the lock window is visible. We should make it fade in. | 257 // Notify that the lock window is visible. We should make it fade in. |
| 258 controller_->OnLockStateChange(true); | 258 controller_->OnLockStateChanged(true); |
| 259 EXPECT_TRUE( | 259 EXPECT_TRUE( |
| 260 test_api_->ContainerGroupIsAnimated( | 260 test_api_->ContainerGroupIsAnimated( |
| 261 PowerButtonController::SCREEN_LOCKER_AND_RELATED_CONTAINERS, | 261 PowerButtonController::SCREEN_LOCKER_AND_RELATED_CONTAINERS, |
| 262 PowerButtonController::ANIMATION_FADE_IN)); | 262 PowerButtonController::ANIMATION_FADE_IN)); |
| 263 | 263 |
| 264 // When we release the power button, the lock-to-shutdown timer should be | 264 // When we release the power button, the lock-to-shutdown timer should be |
| 265 // stopped. | 265 // stopped. |
| 266 EXPECT_TRUE(test_api_->lock_to_shutdown_timer_is_running()); | 266 EXPECT_TRUE(test_api_->lock_to_shutdown_timer_is_running()); |
| 267 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now()); | 267 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now()); |
| 268 EXPECT_FALSE(test_api_->lock_to_shutdown_timer_is_running()); | 268 EXPECT_FALSE(test_api_->lock_to_shutdown_timer_is_running()); |
| 269 | 269 |
| 270 // Notify that the screen has been unlocked. We should show the | 270 // Notify that the screen has been unlocked. We should show the |
| 271 // non-screen-locker windows and hide the background layer. | 271 // non-screen-locker windows and hide the background layer. |
| 272 controller_->OnLockStateChange(false); | 272 controller_->OnLockStateChanged(false); |
| 273 EXPECT_TRUE( | 273 EXPECT_TRUE( |
| 274 test_api_->ContainerGroupIsAnimated( | 274 test_api_->ContainerGroupIsAnimated( |
| 275 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, | 275 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, |
| 276 PowerButtonController::ANIMATION_RESTORE)); | 276 PowerButtonController::ANIMATION_RESTORE)); |
| 277 EXPECT_FALSE(test_api_->BackgroundLayerIsVisible()); | 277 EXPECT_FALSE(test_api_->BackgroundLayerIsVisible()); |
| 278 } | 278 } |
| 279 | 279 |
| 280 // Hold the power button down from the unlocked state to eventual shutdown. | 280 // Hold the power button down from the unlocked state to eventual shutdown. |
| 281 TEST_F(PowerButtonControllerTest, LockToShutdown) { | 281 TEST_F(PowerButtonControllerTest, LockToShutdown) { |
| 282 controller_->set_has_legacy_power_button_for_test(false); | 282 controller_->set_has_legacy_power_button_for_test(false); |
| 283 controller_->OnLoginStateChange(true /*logged_in*/, false /*is_guest*/); | 283 controller_->OnLoginStateChanged(true /*logged_in*/, false /*is_guest*/); |
| 284 controller_->OnLockStateChange(false); | 284 controller_->OnLockStateChanged(false); |
| 285 | 285 |
| 286 // Hold the power button and lock the screen. | 286 // Hold the power button and lock the screen. |
| 287 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); | 287 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); |
| 288 EXPECT_TRUE(test_api_->lock_timer_is_running()); | 288 EXPECT_TRUE(test_api_->lock_timer_is_running()); |
| 289 test_api_->trigger_lock_timeout(); | 289 test_api_->trigger_lock_timeout(); |
| 290 controller_->OnStartingLock(); | 290 controller_->OnStartingLock(); |
| 291 controller_->OnLockStateChange(true); | 291 controller_->OnLockStateChanged(true); |
| 292 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); | 292 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); |
| 293 | 293 |
| 294 // When the lock-to-shutdown timeout fires, we should start the shutdown | 294 // When the lock-to-shutdown timeout fires, we should start the shutdown |
| 295 // timer. | 295 // timer. |
| 296 EXPECT_TRUE(test_api_->lock_to_shutdown_timer_is_running()); | 296 EXPECT_TRUE(test_api_->lock_to_shutdown_timer_is_running()); |
| 297 test_api_->trigger_lock_to_shutdown_timeout(); | 297 test_api_->trigger_lock_to_shutdown_timeout(); |
| 298 EXPECT_TRUE(test_api_->shutdown_timer_is_running()); | 298 EXPECT_TRUE(test_api_->shutdown_timer_is_running()); |
| 299 EXPECT_TRUE( | 299 EXPECT_TRUE( |
| 300 test_api_->ContainerGroupIsAnimated( | 300 test_api_->ContainerGroupIsAnimated( |
| 301 PowerButtonController::ALL_CONTAINERS, | 301 PowerButtonController::ALL_CONTAINERS, |
| 302 PowerButtonController::ANIMATION_SLOW_CLOSE)); | 302 PowerButtonController::ANIMATION_SLOW_CLOSE)); |
| 303 | 303 |
| 304 // Fire the shutdown timeout and check that we request shutdown. | 304 // Fire the shutdown timeout and check that we request shutdown. |
| 305 test_api_->trigger_shutdown_timeout(); | 305 test_api_->trigger_shutdown_timeout(); |
| 306 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); | 306 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); |
| 307 EXPECT_EQ(0, delegate_->num_shutdown_requests()); | 307 EXPECT_EQ(0, delegate_->num_shutdown_requests()); |
| 308 test_api_->trigger_real_shutdown_timeout(); | 308 test_api_->trigger_real_shutdown_timeout(); |
| 309 EXPECT_EQ(1, delegate_->num_shutdown_requests()); | 309 EXPECT_EQ(1, delegate_->num_shutdown_requests()); |
| 310 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); | 310 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); |
| 311 } | 311 } |
| 312 | 312 |
| 313 // Test that we handle the case where lock requests are ignored. | 313 // Test that we handle the case where lock requests are ignored. |
| 314 TEST_F(PowerButtonControllerTest, LockFail) { | 314 TEST_F(PowerButtonControllerTest, LockFail) { |
| 315 // We require animations to have a duration for this test. | 315 // We require animations to have a duration for this test. |
| 316 ui::LayerAnimator::set_disable_animations_for_test(false); | 316 ui::LayerAnimator::set_disable_animations_for_test(false); |
| 317 | 317 |
| 318 controller_->set_has_legacy_power_button_for_test(false); | 318 controller_->set_has_legacy_power_button_for_test(false); |
| 319 controller_->OnLoginStateChange(true /*logged_in*/, false /*is_guest*/); | 319 controller_->OnLoginStateChanged(true /*logged_in*/, false /*is_guest*/); |
| 320 controller_->OnLockStateChange(false); | 320 controller_->OnLockStateChanged(false); |
| 321 | 321 |
| 322 // Hold the power button and lock the screen. | 322 // Hold the power button and lock the screen. |
| 323 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); | 323 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); |
| 324 EXPECT_TRUE(test_api_->lock_timer_is_running()); | 324 EXPECT_TRUE(test_api_->lock_timer_is_running()); |
| 325 EXPECT_TRUE( | 325 EXPECT_TRUE( |
| 326 test_api_->ContainerGroupIsAnimated( | 326 test_api_->ContainerGroupIsAnimated( |
| 327 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, | 327 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, |
| 328 PowerButtonController::ANIMATION_RESTORE)); | 328 PowerButtonController::ANIMATION_RESTORE)); |
| 329 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); | 329 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); |
| 330 test_api_->trigger_lock_timeout(); | 330 test_api_->trigger_lock_timeout(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 342 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, | 342 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, |
| 343 PowerButtonController::ANIMATION_RESTORE)); | 343 PowerButtonController::ANIMATION_RESTORE)); |
| 344 EXPECT_FALSE(test_api_->BackgroundLayerIsVisible()); | 344 EXPECT_FALSE(test_api_->BackgroundLayerIsVisible()); |
| 345 } | 345 } |
| 346 | 346 |
| 347 // Test that we start the timer to hide the background layer when the power | 347 // Test that we start the timer to hide the background layer when the power |
| 348 // button is released, but that we cancel the timer if the button is pressed | 348 // button is released, but that we cancel the timer if the button is pressed |
| 349 // again before the timer has fired. | 349 // again before the timer has fired. |
| 350 TEST_F(PowerButtonControllerTest, CancelHideBackground) { | 350 TEST_F(PowerButtonControllerTest, CancelHideBackground) { |
| 351 controller_->set_has_legacy_power_button_for_test(false); | 351 controller_->set_has_legacy_power_button_for_test(false); |
| 352 controller_->OnLoginStateChange(false /*logged_in*/, false /*is_guest*/); | 352 controller_->OnLoginStateChanged(false /*logged_in*/, false /*is_guest*/); |
| 353 controller_->OnLockStateChange(false); | 353 controller_->OnLockStateChanged(false); |
| 354 | 354 |
| 355 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); | 355 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); |
| 356 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now()); | 356 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now()); |
| 357 EXPECT_TRUE(test_api_->hide_background_layer_timer_is_running()); | 357 EXPECT_TRUE(test_api_->hide_background_layer_timer_is_running()); |
| 358 | 358 |
| 359 // We should cancel the timer if we get another button-down event. | 359 // We should cancel the timer if we get another button-down event. |
| 360 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); | 360 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); |
| 361 EXPECT_FALSE(test_api_->hide_background_layer_timer_is_running()); | 361 EXPECT_FALSE(test_api_->hide_background_layer_timer_is_running()); |
| 362 } | 362 } |
| 363 | 363 |
| 364 // Test the basic operation of the lock button. | 364 // Test the basic operation of the lock button. |
| 365 TEST_F(PowerButtonControllerTest, LockButtonBasic) { | 365 TEST_F(PowerButtonControllerTest, LockButtonBasic) { |
| 366 controller_->set_has_legacy_power_button_for_test(false); | 366 controller_->set_has_legacy_power_button_for_test(false); |
| 367 // The lock button shouldn't do anything if we aren't logged in. | 367 // The lock button shouldn't do anything if we aren't logged in. |
| 368 controller_->OnLoginStateChange(false /*logged_in*/, false /*is_guest*/); | 368 controller_->OnLoginStateChanged(false /*logged_in*/, false /*is_guest*/); |
| 369 controller_->OnLockStateChange(false); | 369 controller_->OnLockStateChanged(false); |
| 370 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); | 370 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); |
| 371 EXPECT_FALSE(test_api_->lock_timer_is_running()); | 371 EXPECT_FALSE(test_api_->lock_timer_is_running()); |
| 372 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); | 372 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); |
| 373 EXPECT_EQ(0, delegate_->num_lock_requests()); | 373 EXPECT_EQ(0, delegate_->num_lock_requests()); |
| 374 | 374 |
| 375 // Ditto for when we're logged in as a guest. | 375 // Ditto for when we're logged in as a guest. |
| 376 controller_->OnLoginStateChange(true /*logged_in*/, true /*is_guest*/); | 376 controller_->OnLoginStateChanged(true /*logged_in*/, true /*is_guest*/); |
| 377 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); | 377 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); |
| 378 EXPECT_FALSE(test_api_->lock_timer_is_running()); | 378 EXPECT_FALSE(test_api_->lock_timer_is_running()); |
| 379 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); | 379 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); |
| 380 EXPECT_EQ(0, delegate_->num_lock_requests()); | 380 EXPECT_EQ(0, delegate_->num_lock_requests()); |
| 381 | 381 |
| 382 // If we're logged in as a regular user, we should start the lock timer and | 382 // If we're logged in as a regular user, we should start the lock timer and |
| 383 // the pre-lock animation. | 383 // the pre-lock animation. |
| 384 controller_->OnLoginStateChange(true /*logged_in*/, false /*is_guest*/); | 384 controller_->OnLoginStateChanged(true /*logged_in*/, false /*is_guest*/); |
| 385 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); | 385 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); |
| 386 EXPECT_TRUE(test_api_->lock_timer_is_running()); | 386 EXPECT_TRUE(test_api_->lock_timer_is_running()); |
| 387 EXPECT_TRUE( | 387 EXPECT_TRUE( |
| 388 test_api_->ContainerGroupIsAnimated( | 388 test_api_->ContainerGroupIsAnimated( |
| 389 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, | 389 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, |
| 390 PowerButtonController::ANIMATION_SLOW_CLOSE)); | 390 PowerButtonController::ANIMATION_SLOW_CLOSE)); |
| 391 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); | 391 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); |
| 392 | 392 |
| 393 // If the button is released immediately, we shouldn't lock the screen. | 393 // If the button is released immediately, we shouldn't lock the screen. |
| 394 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); | 394 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 412 | 412 |
| 413 // Pressing the lock button while we have a pending lock request shouldn't do | 413 // Pressing the lock button while we have a pending lock request shouldn't do |
| 414 // anything. | 414 // anything. |
| 415 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); | 415 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); |
| 416 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); | 416 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); |
| 417 EXPECT_FALSE(test_api_->lock_timer_is_running()); | 417 EXPECT_FALSE(test_api_->lock_timer_is_running()); |
| 418 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); | 418 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); |
| 419 | 419 |
| 420 // Pressing the button also shouldn't do anything after the screen is locked. | 420 // Pressing the button also shouldn't do anything after the screen is locked. |
| 421 controller_->OnStartingLock(); | 421 controller_->OnStartingLock(); |
| 422 controller_->OnLockStateChange(true); | 422 controller_->OnLockStateChanged(true); |
| 423 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); | 423 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); |
| 424 EXPECT_FALSE(test_api_->lock_timer_is_running()); | 424 EXPECT_FALSE(test_api_->lock_timer_is_running()); |
| 425 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); | 425 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); |
| 426 } | 426 } |
| 427 | 427 |
| 428 // Test that the power button takes priority over the lock button. | 428 // Test that the power button takes priority over the lock button. |
| 429 TEST_F(PowerButtonControllerTest, PowerButtonPreemptsLockButton) { | 429 TEST_F(PowerButtonControllerTest, PowerButtonPreemptsLockButton) { |
| 430 controller_->set_has_legacy_power_button_for_test(false); | 430 controller_->set_has_legacy_power_button_for_test(false); |
| 431 controller_->OnLoginStateChange(true /*logged_in*/, false /*is_guest*/); | 431 controller_->OnLoginStateChanged(true /*logged_in*/, false /*is_guest*/); |
| 432 controller_->OnLockStateChange(false); | 432 controller_->OnLockStateChanged(false); |
| 433 | 433 |
| 434 // While the lock button is down, hold the power button. | 434 // While the lock button is down, hold the power button. |
| 435 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); | 435 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); |
| 436 EXPECT_TRUE(test_api_->lock_timer_is_running()); | 436 EXPECT_TRUE(test_api_->lock_timer_is_running()); |
| 437 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); | 437 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); |
| 438 EXPECT_TRUE(test_api_->lock_timer_is_running()); | 438 EXPECT_TRUE(test_api_->lock_timer_is_running()); |
| 439 | 439 |
| 440 // The lock timer shouldn't be stopped when the lock button is released. | 440 // The lock timer shouldn't be stopped when the lock button is released. |
| 441 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); | 441 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); |
| 442 EXPECT_TRUE(test_api_->lock_timer_is_running()); | 442 EXPECT_TRUE(test_api_->lock_timer_is_running()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 453 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now()); | 453 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now()); |
| 454 EXPECT_FALSE(test_api_->lock_timer_is_running()); | 454 EXPECT_FALSE(test_api_->lock_timer_is_running()); |
| 455 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); | 455 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); |
| 456 EXPECT_FALSE(test_api_->lock_timer_is_running()); | 456 EXPECT_FALSE(test_api_->lock_timer_is_running()); |
| 457 } | 457 } |
| 458 | 458 |
| 459 // When the screen is locked without going through the usual power-button | 459 // When the screen is locked without going through the usual power-button |
| 460 // slow-close path (e.g. via the wrench menu), test that we still show the | 460 // slow-close path (e.g. via the wrench menu), test that we still show the |
| 461 // fast-close animation and display the background layer. | 461 // fast-close animation and display the background layer. |
| 462 TEST_F(PowerButtonControllerTest, LockWithoutButton) { | 462 TEST_F(PowerButtonControllerTest, LockWithoutButton) { |
| 463 controller_->OnLoginStateChange(true /*logged_in*/, false /*is_guest*/); | 463 controller_->OnLoginStateChanged(true /*logged_in*/, false /*is_guest*/); |
| 464 controller_->OnStartingLock(); | 464 controller_->OnStartingLock(); |
| 465 EXPECT_TRUE( | 465 EXPECT_TRUE( |
| 466 test_api_->ContainerGroupIsAnimated( | 466 test_api_->ContainerGroupIsAnimated( |
| 467 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, | 467 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, |
| 468 PowerButtonController::ANIMATION_FAST_CLOSE)); | 468 PowerButtonController::ANIMATION_FAST_CLOSE)); |
| 469 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); | 469 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); |
| 470 } | 470 } |
| 471 | 471 |
| 472 // When we hear that the process is exiting but we haven't had a chance to | 472 // When we hear that the process is exiting but we haven't had a chance to |
| 473 // display an animation, we should just blank the screen. | 473 // display an animation, we should just blank the screen. |
| 474 TEST_F(PowerButtonControllerTest, ShutdownWithoutButton) { | 474 TEST_F(PowerButtonControllerTest, ShutdownWithoutButton) { |
| 475 controller_->OnLoginStateChange(true /*logged_in*/, false /*is_guest*/); | 475 controller_->OnLoginStateChanged(true /*logged_in*/, false /*is_guest*/); |
| 476 controller_->OnExit(); | 476 controller_->OnAppTerminating(); |
| 477 EXPECT_TRUE( | 477 EXPECT_TRUE( |
| 478 test_api_->ContainerGroupIsAnimated( | 478 test_api_->ContainerGroupIsAnimated( |
| 479 PowerButtonController::ALL_CONTAINERS, | 479 PowerButtonController::ALL_CONTAINERS, |
| 480 PowerButtonController::ANIMATION_HIDE)); | 480 PowerButtonController::ANIMATION_HIDE)); |
| 481 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); | 481 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); |
| 482 EXPECT_FALSE(Shell::GetRootWindow()->cursor_shown()); | 482 EXPECT_FALSE(Shell::GetRootWindow()->cursor_shown()); |
| 483 } | 483 } |
| 484 | 484 |
| 485 // Test that we display the fast-close animation and shut down when we get an | 485 // Test that we display the fast-close animation and shut down when we get an |
| 486 // outside request to shut down (e.g. from the login or lock screen). | 486 // outside request to shut down (e.g. from the login or lock screen). |
| 487 TEST_F(PowerButtonControllerTest, RequestShutdownFromLoginScreen) { | 487 TEST_F(PowerButtonControllerTest, RequestShutdownFromLoginScreen) { |
| 488 controller_->OnLoginStateChange(false /*logged_in*/, false /*is_guest*/); | 488 controller_->OnLoginStateChanged(false /*logged_in*/, false /*is_guest*/); |
| 489 controller_->RequestShutdown(); | 489 controller_->RequestShutdown(); |
| 490 EXPECT_TRUE( | 490 EXPECT_TRUE( |
| 491 test_api_->ContainerGroupIsAnimated( | 491 test_api_->ContainerGroupIsAnimated( |
| 492 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, | 492 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, |
| 493 PowerButtonController::ANIMATION_HIDE)); | 493 PowerButtonController::ANIMATION_HIDE)); |
| 494 EXPECT_TRUE( | 494 EXPECT_TRUE( |
| 495 test_api_->ContainerGroupIsAnimated( | 495 test_api_->ContainerGroupIsAnimated( |
| 496 PowerButtonController::SCREEN_LOCKER_AND_RELATED_CONTAINERS, | 496 PowerButtonController::SCREEN_LOCKER_AND_RELATED_CONTAINERS, |
| 497 PowerButtonController::ANIMATION_FAST_CLOSE)); | 497 PowerButtonController::ANIMATION_FAST_CLOSE)); |
| 498 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); | 498 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); |
| 499 EXPECT_FALSE(Shell::GetRootWindow()->cursor_shown()); | 499 EXPECT_FALSE(Shell::GetRootWindow()->cursor_shown()); |
| 500 | 500 |
| 501 EXPECT_EQ(0, delegate_->num_shutdown_requests()); | 501 EXPECT_EQ(0, delegate_->num_shutdown_requests()); |
| 502 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); | 502 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); |
| 503 test_api_->trigger_real_shutdown_timeout(); | 503 test_api_->trigger_real_shutdown_timeout(); |
| 504 EXPECT_EQ(1, delegate_->num_shutdown_requests()); | 504 EXPECT_EQ(1, delegate_->num_shutdown_requests()); |
| 505 } | 505 } |
| 506 | 506 |
| 507 TEST_F(PowerButtonControllerTest, RequestShutdownFromLockScreen) { | 507 TEST_F(PowerButtonControllerTest, RequestShutdownFromLockScreen) { |
| 508 controller_->OnLoginStateChange(true /*logged_in*/, false /*is_guest*/); | 508 controller_->OnLoginStateChanged(true /*logged_in*/, false /*is_guest*/); |
| 509 controller_->OnLockStateChange(true); | 509 controller_->OnLockStateChanged(true); |
| 510 controller_->RequestShutdown(); | 510 controller_->RequestShutdown(); |
| 511 EXPECT_TRUE( | 511 EXPECT_TRUE( |
| 512 test_api_->ContainerGroupIsAnimated( | 512 test_api_->ContainerGroupIsAnimated( |
| 513 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, | 513 PowerButtonController::ALL_BUT_SCREEN_LOCKER_AND_RELATED_CONTAINERS, |
| 514 PowerButtonController::ANIMATION_HIDE)); | 514 PowerButtonController::ANIMATION_HIDE)); |
| 515 EXPECT_TRUE( | 515 EXPECT_TRUE( |
| 516 test_api_->ContainerGroupIsAnimated( | 516 test_api_->ContainerGroupIsAnimated( |
| 517 PowerButtonController::SCREEN_LOCKER_AND_RELATED_CONTAINERS, | 517 PowerButtonController::SCREEN_LOCKER_AND_RELATED_CONTAINERS, |
| 518 PowerButtonController::ANIMATION_FAST_CLOSE)); | 518 PowerButtonController::ANIMATION_FAST_CLOSE)); |
| 519 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); | 519 EXPECT_TRUE(test_api_->BackgroundLayerIsVisible()); |
| 520 EXPECT_FALSE(Shell::GetRootWindow()->cursor_shown()); | 520 EXPECT_FALSE(Shell::GetRootWindow()->cursor_shown()); |
| 521 | 521 |
| 522 EXPECT_EQ(0, delegate_->num_shutdown_requests()); | 522 EXPECT_EQ(0, delegate_->num_shutdown_requests()); |
| 523 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); | 523 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); |
| 524 test_api_->trigger_real_shutdown_timeout(); | 524 test_api_->trigger_real_shutdown_timeout(); |
| 525 EXPECT_EQ(1, delegate_->num_shutdown_requests()); | 525 EXPECT_EQ(1, delegate_->num_shutdown_requests()); |
| 526 } | 526 } |
| 527 | 527 |
| 528 } // namespace test | 528 } // namespace test |
| 529 } // namespace ash | 529 } // namespace ash |
| OLD | NEW |