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

Side by Side Diff: ash/wm/power_button_controller_unittest.cc

Issue 11273059: ash: Clean up system background layer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: apply review feedback Created 8 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ash/shell_window_ids.h ('k') | ash/wm/session_state_animator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "ash/wm/session_state_animator.h" 6 #include "ash/wm/session_state_animator.h"
7 #include "ash/wm/session_state_controller.h" 7 #include "ash/wm/session_state_controller.h"
8 #include "ash/wm/session_state_controller_impl.h" 8 #include "ash/wm/session_state_controller_impl.h"
9 9
10 #include "ash/ash_switches.h" 10 #include "ash/ash_switches.h"
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER); 109 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER);
110 state_controller_->OnLockStateChanged(false); 110 state_controller_->OnLockStateChanged(false);
111 111
112 // We should request that the screen be locked immediately after seeing the 112 // We should request that the screen be locked immediately after seeing the
113 // power button get pressed. 113 // power button get pressed.
114 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); 114 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now());
115 EXPECT_TRUE( 115 EXPECT_TRUE(
116 animator_api_->ContainersAreAnimated( 116 animator_api_->ContainersAreAnimated(
117 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 117 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
118 internal::SessionStateAnimator::ANIMATION_PARTIAL_CLOSE)); 118 internal::SessionStateAnimator::ANIMATION_PARTIAL_CLOSE));
119 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
120 EXPECT_FALSE(animator_api_->hide_black_layer_timer_is_running());
121 EXPECT_FALSE(test_api_->lock_timer_is_running()); 119 EXPECT_FALSE(test_api_->lock_timer_is_running());
122 EXPECT_EQ(1, delegate_->num_lock_requests()); 120 EXPECT_EQ(1, delegate_->num_lock_requests());
123 121
124 // Notify that we locked successfully. 122 // Notify that we locked successfully.
125 state_controller_->OnStartingLock(); 123 state_controller_->OnStartingLock();
126 EXPECT_TRUE( 124 EXPECT_TRUE(
127 animator_api_->ContainersAreAnimated( 125 animator_api_->ContainersAreAnimated(
128 internal::SessionStateAnimator::LAUNCHER, 126 internal::SessionStateAnimator::LAUNCHER,
129 internal::SessionStateAnimator::ANIMATION_HIDE)); 127 internal::SessionStateAnimator::ANIMATION_HIDE));
130 EXPECT_TRUE( 128 EXPECT_TRUE(
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); 190 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now());
193 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); 191 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running());
194 } 192 }
195 193
196 // When we hold the power button while the user isn't logged in, we should shut 194 // When we hold the power button while the user isn't logged in, we should shut
197 // down the machine directly. 195 // down the machine directly.
198 TEST_F(PowerButtonControllerTest, ShutdownWhenNotLoggedIn) { 196 TEST_F(PowerButtonControllerTest, ShutdownWhenNotLoggedIn) {
199 controller_->set_has_legacy_power_button_for_test(false); 197 controller_->set_has_legacy_power_button_for_test(false);
200 state_controller_->OnLoginStateChanged(user::LOGGED_IN_NONE); 198 state_controller_->OnLoginStateChanged(user::LOGGED_IN_NONE);
201 state_controller_->OnLockStateChanged(false); 199 state_controller_->OnLockStateChanged(false);
202 EXPECT_FALSE(animator_api_->BlackLayerIsVisible());
203 200
204 // Press the power button and check that we start the shutdown timer. 201 // Press the power button and check that we start the shutdown timer.
205 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); 202 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now());
206 EXPECT_FALSE(test_api_->lock_timer_is_running()); 203 EXPECT_FALSE(test_api_->lock_timer_is_running());
207 EXPECT_TRUE(test_api_->shutdown_timer_is_running()); 204 EXPECT_TRUE(test_api_->shutdown_timer_is_running());
208 EXPECT_TRUE( 205 EXPECT_TRUE(
209 animator_api_->ContainersAreAnimated( 206 animator_api_->ContainersAreAnimated(
210 internal::SessionStateAnimator::kAllContainersMask, 207 internal::SessionStateAnimator::kAllContainersMask,
211 internal::SessionStateAnimator::ANIMATION_PARTIAL_CLOSE)); 208 internal::SessionStateAnimator::ANIMATION_PARTIAL_CLOSE));
212 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
213 209
214 // Release the power button before the shutdown timer fires. 210 // Release the power button before the shutdown timer fires.
215 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now()); 211 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now());
216 EXPECT_FALSE(test_api_->shutdown_timer_is_running()); 212 EXPECT_FALSE(test_api_->shutdown_timer_is_running());
217 EXPECT_TRUE( 213 EXPECT_TRUE(
218 animator_api_->ContainersAreAnimated( 214 animator_api_->ContainersAreAnimated(
219 internal::SessionStateAnimator::kAllContainersMask, 215 internal::SessionStateAnimator::kAllContainersMask,
220 internal::SessionStateAnimator::ANIMATION_UNDO_PARTIAL_CLOSE)); 216 internal::SessionStateAnimator::ANIMATION_UNDO_PARTIAL_CLOSE));
221 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
222
223 // We should re-hide the black layer after waiting long enough for
224 // the animation to finish.
225 EXPECT_TRUE(animator_api_->hide_black_layer_timer_is_running());
226 animator_api_->TriggerHideBlackLayerTimeout();
227 EXPECT_FALSE(animator_api_->BlackLayerIsVisible());
228 217
229 // Press the button again and make the shutdown timeout fire this time. 218 // Press the button again and make the shutdown timeout fire this time.
230 // Check that we start the timer for actually requesting the shutdown. 219 // Check that we start the timer for actually requesting the shutdown.
231 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); 220 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now());
232 EXPECT_TRUE(test_api_->shutdown_timer_is_running()); 221 EXPECT_TRUE(test_api_->shutdown_timer_is_running());
233 test_api_->trigger_shutdown_timeout(); 222 test_api_->trigger_shutdown_timeout();
234 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); 223 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running());
235 EXPECT_EQ(0, NumShutdownRequests()); 224 EXPECT_EQ(0, NumShutdownRequests());
236 EXPECT_TRUE( 225 EXPECT_TRUE(
237 animator_api_->ContainersAreAnimated( 226 animator_api_->ContainersAreAnimated(
238 internal::SessionStateAnimator::LAUNCHER | 227 internal::SessionStateAnimator::LAUNCHER |
239 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 228 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
240 internal::SessionStateAnimator::ANIMATION_HIDE)); 229 internal::SessionStateAnimator::ANIMATION_HIDE));
241 EXPECT_TRUE( 230 EXPECT_TRUE(
242 animator_api_->ContainersAreAnimated( 231 animator_api_->ContainersAreAnimated(
243 internal::SessionStateAnimator::kAllLockScreenContainersMask, 232 internal::SessionStateAnimator::kAllLockScreenContainersMask,
244 internal::SessionStateAnimator::ANIMATION_FULL_CLOSE)); 233 internal::SessionStateAnimator::ANIMATION_FULL_CLOSE));
245 234
246 // When the timout fires, we should request a shutdown. 235 // When the timout fires, we should request a shutdown.
247 test_api_->trigger_real_shutdown_timeout(); 236 test_api_->trigger_real_shutdown_timeout();
248 EXPECT_EQ(1, NumShutdownRequests()); 237 EXPECT_EQ(1, NumShutdownRequests());
249 } 238 }
250 239
251 // Test that we lock the screen and deal with unlocking correctly. 240 // Test that we lock the screen and deal with unlocking correctly.
252 TEST_F(PowerButtonControllerTest, LockAndUnlock) { 241 TEST_F(PowerButtonControllerTest, LockAndUnlock) {
253 controller_->set_has_legacy_power_button_for_test(false); 242 controller_->set_has_legacy_power_button_for_test(false);
254 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER); 243 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER);
255 state_controller_->OnLockStateChanged(false); 244 state_controller_->OnLockStateChanged(false);
256 EXPECT_FALSE(animator_api_->BlackLayerIsVisible());
257 245
258 // We should initially be showing the screen locker containers, since they 246 // We should initially be showing the screen locker containers, since they
259 // also contain login-related windows that we want to show during the 247 // also contain login-related windows that we want to show during the
260 // logging-in animation. 248 // logging-in animation.
261 EXPECT_TRUE( 249 EXPECT_TRUE(
262 animator_api_->ContainersAreAnimated( 250 animator_api_->ContainersAreAnimated(
263 internal::SessionStateAnimator::LOCK_SCREEN_CONTAINERS, 251 internal::SessionStateAnimator::LOCK_SCREEN_CONTAINERS,
264 internal::SessionStateAnimator::ANIMATION_RESTORE)); 252 internal::SessionStateAnimator::ANIMATION_RESTORE));
265 253
266 // Press the power button and check that the lock timer is started and that we 254 // Press the power button and check that the lock timer is started and that we
267 // start scaling the non-screen-locker containers. 255 // start scaling the non-screen-locker containers.
268 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); 256 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now());
269 EXPECT_TRUE(test_api_->lock_timer_is_running()); 257 EXPECT_TRUE(test_api_->lock_timer_is_running());
270 EXPECT_FALSE(test_api_->shutdown_timer_is_running()); 258 EXPECT_FALSE(test_api_->shutdown_timer_is_running());
271 EXPECT_TRUE( 259 EXPECT_TRUE(
272 animator_api_->ContainersAreAnimated( 260 animator_api_->ContainersAreAnimated(
273 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 261 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
274 internal::SessionStateAnimator::ANIMATION_PARTIAL_CLOSE)); 262 internal::SessionStateAnimator::ANIMATION_PARTIAL_CLOSE));
275 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
276 263
277 // Release the button before the lock timer fires. 264 // Release the button before the lock timer fires.
278 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now()); 265 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now());
279 EXPECT_FALSE(test_api_->lock_timer_is_running()); 266 EXPECT_FALSE(test_api_->lock_timer_is_running());
280 EXPECT_TRUE( 267 EXPECT_TRUE(
281 animator_api_->ContainersAreAnimated( 268 animator_api_->ContainersAreAnimated(
282 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 269 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
283 internal::SessionStateAnimator::ANIMATION_UNDO_PARTIAL_CLOSE)); 270 internal::SessionStateAnimator::ANIMATION_UNDO_PARTIAL_CLOSE));
284 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
285 EXPECT_TRUE(animator_api_->hide_black_layer_timer_is_running());
286 animator_api_->TriggerHideBlackLayerTimeout();
287 EXPECT_FALSE(animator_api_->BlackLayerIsVisible());
288 271
289 // Press the button and fire the lock timer. We should request that the 272 // Press the button and fire the lock timer. We should request that the
290 // screen be locked, but we should still be in the slow-close animation. 273 // screen be locked, but we should still be in the slow-close animation.
291 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); 274 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now());
292 EXPECT_TRUE(test_api_->lock_timer_is_running()); 275 EXPECT_TRUE(test_api_->lock_timer_is_running());
293 EXPECT_EQ(0, delegate_->num_lock_requests()); 276 EXPECT_EQ(0, delegate_->num_lock_requests());
294 test_api_->trigger_lock_timeout(); 277 test_api_->trigger_lock_timeout();
295 EXPECT_EQ(1, delegate_->num_lock_requests()); 278 EXPECT_EQ(1, delegate_->num_lock_requests());
296 EXPECT_TRUE( 279 EXPECT_TRUE(
297 animator_api_->ContainersAreAnimated( 280 animator_api_->ContainersAreAnimated(
298 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 281 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
299 internal::SessionStateAnimator::ANIMATION_PARTIAL_CLOSE)); 282 internal::SessionStateAnimator::ANIMATION_PARTIAL_CLOSE));
300 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
301 283
302 // Notify that we locked successfully. 284 // Notify that we locked successfully.
303 state_controller_->OnStartingLock(); 285 state_controller_->OnStartingLock();
304 EXPECT_TRUE( 286 EXPECT_TRUE(
305 animator_api_->ContainersAreAnimated( 287 animator_api_->ContainersAreAnimated(
306 internal::SessionStateAnimator::LAUNCHER, 288 internal::SessionStateAnimator::LAUNCHER,
307 internal::SessionStateAnimator::ANIMATION_HIDE)); 289 internal::SessionStateAnimator::ANIMATION_HIDE));
308 EXPECT_TRUE( 290 EXPECT_TRUE(
309 animator_api_->ContainersAreAnimated( 291 animator_api_->ContainersAreAnimated(
310 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 292 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
(...skipping 10 matching lines...) Expand all
321 internal::SessionStateAnimator::kAllLockScreenContainersMask, 303 internal::SessionStateAnimator::kAllLockScreenContainersMask,
322 internal::SessionStateAnimator::ANIMATION_FADE_IN)); 304 internal::SessionStateAnimator::ANIMATION_FADE_IN));
323 305
324 // When we release the power button, the lock-to-shutdown timer should be 306 // When we release the power button, the lock-to-shutdown timer should be
325 // stopped. 307 // stopped.
326 EXPECT_TRUE(test_api_->lock_to_shutdown_timer_is_running()); 308 EXPECT_TRUE(test_api_->lock_to_shutdown_timer_is_running());
327 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now()); 309 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now());
328 EXPECT_FALSE(test_api_->lock_to_shutdown_timer_is_running()); 310 EXPECT_FALSE(test_api_->lock_to_shutdown_timer_is_running());
329 311
330 // Notify that the screen has been unlocked. We should show the 312 // Notify that the screen has been unlocked. We should show the
331 // non-screen-locker windows and hide the black layer. 313 // non-screen-locker windows.
332 state_controller_->OnLockStateChanged(false); 314 state_controller_->OnLockStateChanged(false);
333 EXPECT_TRUE( 315 EXPECT_TRUE(
334 animator_api_->ContainersAreAnimated( 316 animator_api_->ContainersAreAnimated(
335 internal::SessionStateAnimator::DESKTOP_BACKGROUND | 317 internal::SessionStateAnimator::DESKTOP_BACKGROUND |
336 internal::SessionStateAnimator::LAUNCHER | 318 internal::SessionStateAnimator::LAUNCHER |
337 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 319 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
338 internal::SessionStateAnimator::ANIMATION_RESTORE)); 320 internal::SessionStateAnimator::ANIMATION_RESTORE));
339 EXPECT_FALSE(animator_api_->BlackLayerIsVisible());
340 } 321 }
341 322
342 // Hold the power button down from the unlocked state to eventual shutdown. 323 // Hold the power button down from the unlocked state to eventual shutdown.
343 TEST_F(PowerButtonControllerTest, LockToShutdown) { 324 TEST_F(PowerButtonControllerTest, LockToShutdown) {
344 controller_->set_has_legacy_power_button_for_test(false); 325 controller_->set_has_legacy_power_button_for_test(false);
345 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER); 326 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER);
346 state_controller_->OnLockStateChanged(false); 327 state_controller_->OnLockStateChanged(false);
347 328
348 // Hold the power button and lock the screen. 329 // Hold the power button and lock the screen.
349 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); 330 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now());
350 EXPECT_TRUE(test_api_->lock_timer_is_running()); 331 EXPECT_TRUE(test_api_->lock_timer_is_running());
351 test_api_->trigger_lock_timeout(); 332 test_api_->trigger_lock_timeout();
352 state_controller_->OnStartingLock(); 333 state_controller_->OnStartingLock();
353 state_controller_->OnLockStateChanged(true); 334 state_controller_->OnLockStateChanged(true);
354 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
355 335
356 // When the lock-to-shutdown timeout fires, we should start the shutdown 336 // When the lock-to-shutdown timeout fires, we should start the shutdown
357 // timer. 337 // timer.
358 EXPECT_TRUE(test_api_->lock_to_shutdown_timer_is_running()); 338 EXPECT_TRUE(test_api_->lock_to_shutdown_timer_is_running());
359 test_api_->trigger_lock_to_shutdown_timeout(); 339 test_api_->trigger_lock_to_shutdown_timeout();
360 EXPECT_TRUE(test_api_->shutdown_timer_is_running()); 340 EXPECT_TRUE(test_api_->shutdown_timer_is_running());
361 EXPECT_TRUE( 341 EXPECT_TRUE(
362 animator_api_->ContainersAreAnimated( 342 animator_api_->ContainersAreAnimated(
363 internal::SessionStateAnimator::kAllContainersMask, 343 internal::SessionStateAnimator::kAllContainersMask,
364 internal::SessionStateAnimator::ANIMATION_PARTIAL_CLOSE)); 344 internal::SessionStateAnimator::ANIMATION_PARTIAL_CLOSE));
365 345
366 // Fire the shutdown timeout and check that we request shutdown. 346 // Fire the shutdown timeout and check that we request shutdown.
367 test_api_->trigger_shutdown_timeout(); 347 test_api_->trigger_shutdown_timeout();
368 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); 348 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running());
369 EXPECT_EQ(0, NumShutdownRequests()); 349 EXPECT_EQ(0, NumShutdownRequests());
370 test_api_->trigger_real_shutdown_timeout(); 350 test_api_->trigger_real_shutdown_timeout();
371 EXPECT_EQ(1, NumShutdownRequests()); 351 EXPECT_EQ(1, NumShutdownRequests());
372 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
373 } 352 }
374 353
375 354
376 // Hold the power button down from the unlocked state to eventual shutdown, 355 // Hold the power button down from the unlocked state to eventual shutdown,
377 // then release the button while system does locking. 356 // then release the button while system does locking.
378 TEST_F(PowerButtonControllerTest, CancelLockToShutdown) { 357 TEST_F(PowerButtonControllerTest, CancelLockToShutdown) {
379 controller_->set_has_legacy_power_button_for_test(false); 358 controller_->set_has_legacy_power_button_for_test(false);
380 359
381 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER); 360 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER);
382 state_controller_->OnLockStateChanged(false); 361 state_controller_->OnLockStateChanged(false);
(...skipping 24 matching lines...) Expand all
407 386
408 // Hold the power button and lock the screen. 387 // Hold the power button and lock the screen.
409 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); 388 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now());
410 EXPECT_TRUE(test_api_->lock_timer_is_running()); 389 EXPECT_TRUE(test_api_->lock_timer_is_running());
411 EXPECT_TRUE( 390 EXPECT_TRUE(
412 animator_api_->ContainersAreAnimated( 391 animator_api_->ContainersAreAnimated(
413 internal::SessionStateAnimator::DESKTOP_BACKGROUND | 392 internal::SessionStateAnimator::DESKTOP_BACKGROUND |
414 internal::SessionStateAnimator::LAUNCHER | 393 internal::SessionStateAnimator::LAUNCHER |
415 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 394 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
416 internal::SessionStateAnimator::ANIMATION_RESTORE)); 395 internal::SessionStateAnimator::ANIMATION_RESTORE));
417 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
418 test_api_->trigger_lock_timeout(); 396 test_api_->trigger_lock_timeout();
419 EXPECT_EQ(1, delegate_->num_lock_requests()); 397 EXPECT_EQ(1, delegate_->num_lock_requests());
420 EXPECT_TRUE(test_api_->lock_fail_timer_is_running()); 398 EXPECT_TRUE(test_api_->lock_fail_timer_is_running());
421 399
422 // We shouldn't start the lock-to-shutdown timer until the screen has actually 400 // We shouldn't start the lock-to-shutdown timer until the screen has actually
423 // been locked. 401 // been locked.
424 EXPECT_FALSE(test_api_->lock_to_shutdown_timer_is_running()); 402 EXPECT_FALSE(test_api_->lock_to_shutdown_timer_is_running());
425 403
426 // Act as if the request timed out. We should restore the windows. 404 // Act as if the request timed out. We should restore the windows.
427 test_api_->trigger_lock_fail_timeout(); 405 test_api_->trigger_lock_fail_timeout();
428 EXPECT_TRUE( 406 EXPECT_TRUE(
429 animator_api_->ContainersAreAnimated( 407 animator_api_->ContainersAreAnimated(
430 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 408 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
431 internal::SessionStateAnimator::ANIMATION_RESTORE)); 409 internal::SessionStateAnimator::ANIMATION_RESTORE));
432 EXPECT_FALSE(animator_api_->BlackLayerIsVisible());
433 }
434
435 // Test that we start the timer to hide the black layer when the power
436 // button is released, but that we cancel the timer if the button is pressed
437 // again before the timer has fired.
438 TEST_F(PowerButtonControllerTest, CancelHideBackground) {
439 controller_->set_has_legacy_power_button_for_test(false);
440 state_controller_->OnLoginStateChanged(user::LOGGED_IN_NONE);
441 state_controller_->OnLockStateChanged(false);
442
443 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now());
444 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now());
445 EXPECT_TRUE(animator_api_->hide_black_layer_timer_is_running());
446
447 // We should cancel the timer if we get another button-down event.
448 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now());
449 EXPECT_FALSE(animator_api_->hide_black_layer_timer_is_running());
450 } 410 }
451 411
452 // Test the basic operation of the lock button. 412 // Test the basic operation of the lock button.
453 TEST_F(PowerButtonControllerTest, LockButtonBasic) { 413 TEST_F(PowerButtonControllerTest, LockButtonBasic) {
454 controller_->set_has_legacy_power_button_for_test(false); 414 controller_->set_has_legacy_power_button_for_test(false);
455 // The lock button shouldn't do anything if we aren't logged in. 415 // The lock button shouldn't do anything if we aren't logged in.
456 state_controller_->OnLoginStateChanged(user::LOGGED_IN_NONE); 416 state_controller_->OnLoginStateChanged(user::LOGGED_IN_NONE);
457 state_controller_->OnLockStateChanged(false); 417 state_controller_->OnLockStateChanged(false);
458 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); 418 controller_->OnLockButtonEvent(true, base::TimeTicks::Now());
459 EXPECT_FALSE(test_api_->lock_timer_is_running()); 419 EXPECT_FALSE(test_api_->lock_timer_is_running());
460 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); 420 controller_->OnLockButtonEvent(false, base::TimeTicks::Now());
461 EXPECT_EQ(0, delegate_->num_lock_requests()); 421 EXPECT_EQ(0, delegate_->num_lock_requests());
462 422
463 // Ditto for when we're logged in as a guest. 423 // Ditto for when we're logged in as a guest.
464 state_controller_->OnLoginStateChanged(user::LOGGED_IN_GUEST); 424 state_controller_->OnLoginStateChanged(user::LOGGED_IN_GUEST);
465 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); 425 controller_->OnLockButtonEvent(true, base::TimeTicks::Now());
466 EXPECT_FALSE(test_api_->lock_timer_is_running()); 426 EXPECT_FALSE(test_api_->lock_timer_is_running());
467 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); 427 controller_->OnLockButtonEvent(false, base::TimeTicks::Now());
468 EXPECT_EQ(0, delegate_->num_lock_requests()); 428 EXPECT_EQ(0, delegate_->num_lock_requests());
469 429
470 // If we're logged in as a regular user, we should start the lock timer and 430 // If we're logged in as a regular user, we should start the lock timer and
471 // the pre-lock animation. 431 // the pre-lock animation.
472 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER); 432 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER);
473 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); 433 controller_->OnLockButtonEvent(true, base::TimeTicks::Now());
474 EXPECT_TRUE(test_api_->lock_timer_is_running()); 434 EXPECT_TRUE(test_api_->lock_timer_is_running());
475 EXPECT_TRUE( 435 EXPECT_TRUE(
476 animator_api_->ContainersAreAnimated( 436 animator_api_->ContainersAreAnimated(
477 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 437 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
478 internal::SessionStateAnimator::ANIMATION_PARTIAL_CLOSE)); 438 internal::SessionStateAnimator::ANIMATION_PARTIAL_CLOSE));
479 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
480 439
481 // If the button is released immediately, we shouldn't lock the screen. 440 // If the button is released immediately, we shouldn't lock the screen.
482 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); 441 controller_->OnLockButtonEvent(false, base::TimeTicks::Now());
483 EXPECT_FALSE(test_api_->lock_timer_is_running()); 442 EXPECT_FALSE(test_api_->lock_timer_is_running());
484 EXPECT_TRUE( 443 EXPECT_TRUE(
485 animator_api_->ContainersAreAnimated( 444 animator_api_->ContainersAreAnimated(
486 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 445 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
487 internal::SessionStateAnimator::ANIMATION_UNDO_PARTIAL_CLOSE)); 446 internal::SessionStateAnimator::ANIMATION_UNDO_PARTIAL_CLOSE));
488 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
489 EXPECT_TRUE(animator_api_->hide_black_layer_timer_is_running());
490 animator_api_->TriggerHideBlackLayerTimeout();
491 EXPECT_FALSE(animator_api_->BlackLayerIsVisible());
492 EXPECT_EQ(0, delegate_->num_lock_requests()); 447 EXPECT_EQ(0, delegate_->num_lock_requests());
493 448
494 // Press the button again and let the lock timeout fire. We should request 449 // Press the button again and let the lock timeout fire. We should request
495 // that the screen be locked. 450 // that the screen be locked.
496 controller_->OnLockButtonEvent(true, base::TimeTicks::Now()); 451 controller_->OnLockButtonEvent(true, base::TimeTicks::Now());
497 EXPECT_TRUE(test_api_->lock_timer_is_running()); 452 EXPECT_TRUE(test_api_->lock_timer_is_running());
498 test_api_->trigger_lock_timeout(); 453 test_api_->trigger_lock_timeout();
499 EXPECT_EQ(1, delegate_->num_lock_requests()); 454 EXPECT_EQ(1, delegate_->num_lock_requests());
500 455
501 // Pressing the lock button while we have a pending lock request shouldn't do 456 // Pressing the lock button while we have a pending lock request shouldn't do
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 494
540 // Releasing the power button should stop the lock timer. 495 // Releasing the power button should stop the lock timer.
541 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now()); 496 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now());
542 EXPECT_FALSE(test_api_->lock_timer_is_running()); 497 EXPECT_FALSE(test_api_->lock_timer_is_running());
543 controller_->OnLockButtonEvent(false, base::TimeTicks::Now()); 498 controller_->OnLockButtonEvent(false, base::TimeTicks::Now());
544 EXPECT_FALSE(test_api_->lock_timer_is_running()); 499 EXPECT_FALSE(test_api_->lock_timer_is_running());
545 } 500 }
546 501
547 // When the screen is locked without going through the usual power-button 502 // When the screen is locked without going through the usual power-button
548 // slow-close path (e.g. via the wrench menu), test that we still show the 503 // slow-close path (e.g. via the wrench menu), test that we still show the
549 // fast-close animation and display the black layer. 504 // fast-close animation.
550 TEST_F(PowerButtonControllerTest, LockWithoutButton) { 505 TEST_F(PowerButtonControllerTest, LockWithoutButton) {
551 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER); 506 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER);
552 state_controller_->OnStartingLock(); 507 state_controller_->OnStartingLock();
553 EXPECT_TRUE( 508 EXPECT_TRUE(
554 animator_api_->ContainersAreAnimated( 509 animator_api_->ContainersAreAnimated(
555 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 510 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
556 internal::SessionStateAnimator::ANIMATION_FULL_CLOSE)); 511 internal::SessionStateAnimator::ANIMATION_FULL_CLOSE));
557 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
558 } 512 }
559 513
560 // When we hear that the process is exiting but we haven't had a chance to 514 // When we hear that the process is exiting but we haven't had a chance to
561 // display an animation, we should just blank the screen. 515 // display an animation, we should just blank the screen.
562 TEST_F(PowerButtonControllerTest, ShutdownWithoutButton) { 516 TEST_F(PowerButtonControllerTest, ShutdownWithoutButton) {
563 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER); 517 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER);
564 state_controller_->OnAppTerminating(); 518 state_controller_->OnAppTerminating();
565 EXPECT_TRUE( 519 EXPECT_TRUE(
566 animator_api_->ContainersAreAnimated( 520 animator_api_->ContainersAreAnimated(
567 internal::SessionStateAnimator::kAllContainersMask, 521 internal::SessionStateAnimator::kAllContainersMask,
568 internal::SessionStateAnimator::ANIMATION_HIDE)); 522 internal::SessionStateAnimator::ANIMATION_HIDE));
569 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
570 GenerateMouseMoveEvent(); 523 GenerateMouseMoveEvent();
571 EXPECT_FALSE(cursor_visible()); 524 EXPECT_FALSE(cursor_visible());
572 } 525 }
573 526
574 // Test that we display the fast-close animation and shut down when we get an 527 // Test that we display the fast-close animation and shut down when we get an
575 // outside request to shut down (e.g. from the login or lock screen). 528 // outside request to shut down (e.g. from the login or lock screen).
576 TEST_F(PowerButtonControllerTest, RequestShutdownFromLoginScreen) { 529 TEST_F(PowerButtonControllerTest, RequestShutdownFromLoginScreen) {
577 state_controller_->OnLoginStateChanged(user::LOGGED_IN_NONE); 530 state_controller_->OnLoginStateChanged(user::LOGGED_IN_NONE);
578 state_controller_->RequestShutdown(); 531 state_controller_->RequestShutdown();
579 EXPECT_TRUE( 532 EXPECT_TRUE(
580 animator_api_->ContainersAreAnimated( 533 animator_api_->ContainersAreAnimated(
581 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 534 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
582 internal::SessionStateAnimator::ANIMATION_HIDE)); 535 internal::SessionStateAnimator::ANIMATION_HIDE));
583 EXPECT_TRUE( 536 EXPECT_TRUE(
584 animator_api_->ContainersAreAnimated( 537 animator_api_->ContainersAreAnimated(
585 internal::SessionStateAnimator::kAllLockScreenContainersMask, 538 internal::SessionStateAnimator::kAllLockScreenContainersMask,
586 internal::SessionStateAnimator::ANIMATION_FULL_CLOSE)); 539 internal::SessionStateAnimator::ANIMATION_FULL_CLOSE));
587 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
588 GenerateMouseMoveEvent(); 540 GenerateMouseMoveEvent();
589 EXPECT_FALSE(cursor_visible()); 541 EXPECT_FALSE(cursor_visible());
590 542
591 EXPECT_EQ(0, NumShutdownRequests()); 543 EXPECT_EQ(0, NumShutdownRequests());
592 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); 544 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running());
593 test_api_->trigger_real_shutdown_timeout(); 545 test_api_->trigger_real_shutdown_timeout();
594 EXPECT_EQ(1, NumShutdownRequests()); 546 EXPECT_EQ(1, NumShutdownRequests());
595 } 547 }
596 548
597 TEST_F(PowerButtonControllerTest, RequestShutdownFromLockScreen) { 549 TEST_F(PowerButtonControllerTest, RequestShutdownFromLockScreen) {
598 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER); 550 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER);
599 state_controller_->OnLockStateChanged(true); 551 state_controller_->OnLockStateChanged(true);
600 state_controller_->RequestShutdown(); 552 state_controller_->RequestShutdown();
601 EXPECT_TRUE( 553 EXPECT_TRUE(
602 animator_api_->ContainersAreAnimated( 554 animator_api_->ContainersAreAnimated(
603 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 555 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
604 internal::SessionStateAnimator::ANIMATION_HIDE)); 556 internal::SessionStateAnimator::ANIMATION_HIDE));
605 EXPECT_TRUE( 557 EXPECT_TRUE(
606 animator_api_->ContainersAreAnimated( 558 animator_api_->ContainersAreAnimated(
607 internal::SessionStateAnimator::kAllLockScreenContainersMask, 559 internal::SessionStateAnimator::kAllLockScreenContainersMask,
608 internal::SessionStateAnimator::ANIMATION_FULL_CLOSE)); 560 internal::SessionStateAnimator::ANIMATION_FULL_CLOSE));
609 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
610 GenerateMouseMoveEvent(); 561 GenerateMouseMoveEvent();
611 EXPECT_FALSE(cursor_visible()); 562 EXPECT_FALSE(cursor_visible());
612 563
613 EXPECT_EQ(0, NumShutdownRequests()); 564 EXPECT_EQ(0, NumShutdownRequests());
614 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running()); 565 EXPECT_TRUE(test_api_->real_shutdown_timer_is_running());
615 test_api_->trigger_real_shutdown_timeout(); 566 test_api_->trigger_real_shutdown_timeout();
616 EXPECT_EQ(1, NumShutdownRequests()); 567 EXPECT_EQ(1, NumShutdownRequests());
617 } 568 }
618 569
619 TEST_F(PowerButtonControllerTest, RequestAndCancelShutdownFromLockScreen) { 570 TEST_F(PowerButtonControllerTest, RequestAndCancelShutdownFromLockScreen) {
620 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER); 571 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER);
621 state_controller_->OnLockStateChanged(true); 572 state_controller_->OnLockStateChanged(true);
622 573
623 // Press the power button and check that we start the shutdown timer. 574 // Press the power button and check that we start the shutdown timer.
624 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); 575 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now());
625 EXPECT_FALSE(test_api_->lock_timer_is_running()); 576 EXPECT_FALSE(test_api_->lock_timer_is_running());
626 EXPECT_TRUE(test_api_->shutdown_timer_is_running()); 577 EXPECT_TRUE(test_api_->shutdown_timer_is_running());
627 EXPECT_TRUE( 578 EXPECT_TRUE(
628 animator_api_->ContainersAreAnimated( 579 animator_api_->ContainersAreAnimated(
629 internal::SessionStateAnimator::kAllContainersMask, 580 internal::SessionStateAnimator::kAllContainersMask,
630 internal::SessionStateAnimator::ANIMATION_PARTIAL_CLOSE)); 581 internal::SessionStateAnimator::ANIMATION_PARTIAL_CLOSE));
631 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
632 582
633 // Release the power button before the shutdown timer fires. 583 // Release the power button before the shutdown timer fires.
634 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now()); 584 controller_->OnPowerButtonEvent(false, base::TimeTicks::Now());
635 EXPECT_FALSE(test_api_->shutdown_timer_is_running()); 585 EXPECT_FALSE(test_api_->shutdown_timer_is_running());
636 EXPECT_TRUE( 586 EXPECT_TRUE(
637 animator_api_->ContainersAreAnimated( 587 animator_api_->ContainersAreAnimated(
638 internal::SessionStateAnimator::kAllLockScreenContainersMask, 588 internal::SessionStateAnimator::kAllLockScreenContainersMask,
639 internal::SessionStateAnimator::ANIMATION_UNDO_PARTIAL_CLOSE)); 589 internal::SessionStateAnimator::ANIMATION_UNDO_PARTIAL_CLOSE));
640 EXPECT_TRUE( 590 EXPECT_TRUE(
641 animator_api_->ContainersAreAnimated( 591 animator_api_->ContainersAreAnimated(
642 internal::SessionStateAnimator::DESKTOP_BACKGROUND, 592 internal::SessionStateAnimator::DESKTOP_BACKGROUND,
643 internal::SessionStateAnimator::ANIMATION_RESTORE)); 593 internal::SessionStateAnimator::ANIMATION_RESTORE));
644 EXPECT_TRUE(animator_api_->BlackLayerIsVisible());
645 }
646
647 // Test that the black layer is resized in response to root window resizes.
648 TEST_F(PowerButtonControllerTest, ResizeBlackLayer) {
649 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now());
650 EXPECT_EQ(Shell::GetPrimaryRootWindow()->bounds().ToString(),
651 animator_api_->GetBlackLayerBounds().ToString());
652
653 const gfx::Size kNewSize(400, 300);
654 Shell::GetPrimaryRootWindow()->SetHostSize(kNewSize);
655 EXPECT_EQ(gfx::Rect(kNewSize).ToString(),
656 animator_api_->GetBlackLayerBounds().ToString());
657 } 594 }
658 595
659 // Test that we ignore power button presses when the screen is turned off. 596 // Test that we ignore power button presses when the screen is turned off.
660 TEST_F(PowerButtonControllerTest, IgnorePowerButtonIfScreenIsOff) { 597 TEST_F(PowerButtonControllerTest, IgnorePowerButtonIfScreenIsOff) {
661 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER); 598 state_controller_->OnLoginStateChanged(user::LOGGED_IN_USER);
662 599
663 // When the screen brightness is at 0%, we shouldn't do anything in response 600 // When the screen brightness is at 0%, we shouldn't do anything in response
664 // to power button presses. 601 // to power button presses.
665 controller_->OnScreenBrightnessChanged(0.0); 602 controller_->OnScreenBrightnessChanged(0.0);
666 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); 603 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now());
667 EXPECT_FALSE(test_api_->lock_timer_is_running()); 604 EXPECT_FALSE(test_api_->lock_timer_is_running());
668 605
669 // After increasing the brightness to 10%, we should start the timer like 606 // After increasing the brightness to 10%, we should start the timer like
670 // usual. 607 // usual.
671 controller_->OnScreenBrightnessChanged(10.0); 608 controller_->OnScreenBrightnessChanged(10.0);
672 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now()); 609 controller_->OnPowerButtonEvent(true, base::TimeTicks::Now());
673 EXPECT_TRUE(test_api_->lock_timer_is_running()); 610 EXPECT_TRUE(test_api_->lock_timer_is_running());
674 } 611 }
675 612
676 } // namespace test 613 } // namespace test
677 } // namespace ash 614 } // namespace ash
OLDNEW
« no previous file with comments | « ash/shell_window_ids.h ('k') | ash/wm/session_state_animator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698