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 <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "ash/accessibility_delegate.h" | 9 #include "ash/accessibility_delegate.h" |
10 #include "ash/ash_switches.h" | 10 #include "ash/ash_switches.h" |
(...skipping 23 matching lines...) Expand all Loading... |
34 | 34 |
35 namespace ash { | 35 namespace ash { |
36 | 36 |
37 namespace { | 37 namespace { |
38 | 38 |
39 const int kMaxShutdownSoundDurationMs = 1500; | 39 const int kMaxShutdownSoundDurationMs = 1500; |
40 | 40 |
41 aura::Window* GetBackground() { | 41 aura::Window* GetBackground() { |
42 aura::Window* root_window = Shell::GetPrimaryRootWindow(); | 42 aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
43 return Shell::GetContainer(root_window, | 43 return Shell::GetContainer(root_window, |
44 internal::kShellWindowId_DesktopBackgroundContainer); | 44 kShellWindowId_DesktopBackgroundContainer); |
45 } | 45 } |
46 | 46 |
47 bool IsBackgroundHidden() { | 47 bool IsBackgroundHidden() { |
48 return !GetBackground()->IsVisible(); | 48 return !GetBackground()->IsVisible(); |
49 } | 49 } |
50 | 50 |
51 void ShowBackground() { | 51 void ShowBackground() { |
52 ui::ScopedLayerAnimationSettings settings( | 52 ui::ScopedLayerAnimationSettings settings( |
53 GetBackground()->layer()->GetAnimator()); | 53 GetBackground()->layer()->GetAnimator()); |
54 settings.SetTransitionDuration(base::TimeDelta()); | 54 settings.SetTransitionDuration(base::TimeDelta()); |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 const int LockStateController::kShutdownRequestDelayMs = 50; | 154 const int LockStateController::kShutdownRequestDelayMs = 50; |
155 | 155 |
156 LockStateController::TestApi::TestApi(LockStateController* controller) | 156 LockStateController::TestApi::TestApi(LockStateController* controller) |
157 : controller_(controller) { | 157 : controller_(controller) { |
158 } | 158 } |
159 | 159 |
160 LockStateController::TestApi::~TestApi() { | 160 LockStateController::TestApi::~TestApi() { |
161 } | 161 } |
162 | 162 |
163 LockStateController::LockStateController() | 163 LockStateController::LockStateController() |
164 : animator_(new internal::SessionStateAnimator()), | 164 : animator_(new SessionStateAnimator()), |
165 login_status_(user::LOGGED_IN_NONE), | 165 login_status_(user::LOGGED_IN_NONE), |
166 system_is_locked_(false), | 166 system_is_locked_(false), |
167 shutting_down_(false), | 167 shutting_down_(false), |
168 shutdown_after_lock_(false), | 168 shutdown_after_lock_(false), |
169 animating_lock_(false), | 169 animating_lock_(false), |
170 can_cancel_lock_animation_(false), | 170 can_cancel_lock_animation_(false), |
171 weak_ptr_factory_(this) { | 171 weak_ptr_factory_(this) { |
172 Shell::GetPrimaryRootWindow()->GetHost()->AddObserver(this); | 172 Shell::GetPrimaryRootWindow()->GetHost()->AddObserver(this); |
173 } | 173 } |
174 | 174 |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 if (lock_to_shutdown_timer_.IsRunning()) { | 244 if (lock_to_shutdown_timer_.IsRunning()) { |
245 lock_to_shutdown_timer_.Stop(); | 245 lock_to_shutdown_timer_.Stop(); |
246 return; | 246 return; |
247 } | 247 } |
248 if (shutdown_after_lock_) { | 248 if (shutdown_after_lock_) { |
249 shutdown_after_lock_ = false; | 249 shutdown_after_lock_ = false; |
250 return; | 250 return; |
251 } | 251 } |
252 | 252 |
253 animator_->StartGlobalAnimation( | 253 animator_->StartGlobalAnimation( |
254 internal::SessionStateAnimator::ANIMATION_UNDO_GRAYSCALE_BRIGHTNESS, | 254 SessionStateAnimator::ANIMATION_UNDO_GRAYSCALE_BRIGHTNESS, |
255 internal::SessionStateAnimator::ANIMATION_SPEED_REVERT_SHUTDOWN); | 255 SessionStateAnimator::ANIMATION_SPEED_REVERT_SHUTDOWN); |
256 pre_shutdown_timer_.Stop(); | 256 pre_shutdown_timer_.Stop(); |
257 } | 257 } |
258 | 258 |
259 void LockStateController::OnStartingLock() { | 259 void LockStateController::OnStartingLock() { |
260 if (shutting_down_ || system_is_locked_) | 260 if (shutting_down_ || system_is_locked_) |
261 return; | 261 return; |
262 if (animating_lock_) | 262 if (animating_lock_) |
263 return; | 263 return; |
264 StartImmediatePreLockAnimation(false /* request_lock_on_completion */); | 264 StartImmediatePreLockAnimation(false /* request_lock_on_completion */); |
265 } | 265 } |
266 | 266 |
267 void LockStateController::RequestShutdown() { | 267 void LockStateController::RequestShutdown() { |
268 if (shutting_down_) | 268 if (shutting_down_) |
269 return; | 269 return; |
270 | 270 |
271 shutting_down_ = true; | 271 shutting_down_ = true; |
272 | 272 |
273 Shell* shell = ash::Shell::GetInstance(); | 273 Shell* shell = ash::Shell::GetInstance(); |
274 shell->cursor_manager()->HideCursor(); | 274 shell->cursor_manager()->HideCursor(); |
275 shell->cursor_manager()->LockCursor(); | 275 shell->cursor_manager()->LockCursor(); |
276 | 276 |
277 animator_->StartGlobalAnimation( | 277 animator_->StartGlobalAnimation( |
278 internal::SessionStateAnimator::ANIMATION_GRAYSCALE_BRIGHTNESS, | 278 SessionStateAnimator::ANIMATION_GRAYSCALE_BRIGHTNESS, |
279 internal::SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); | 279 SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); |
280 StartRealShutdownTimer(true); | 280 StartRealShutdownTimer(true); |
281 } | 281 } |
282 | 282 |
283 void LockStateController::OnLockScreenHide( | 283 void LockStateController::OnLockScreenHide( |
284 base::Callback<void(void)>& callback) { | 284 base::Callback<void(void)>& callback) { |
285 StartUnlockAnimationBeforeUIDestroyed(callback); | 285 StartUnlockAnimationBeforeUIDestroyed(callback); |
286 } | 286 } |
287 | 287 |
288 void LockStateController::SetLockScreenDisplayedCallback( | 288 void LockStateController::SetLockScreenDisplayedCallback( |
289 const base::Closure& callback) { | 289 const base::Closure& callback) { |
(...skipping 14 matching lines...) Expand all Loading... |
304 | 304 |
305 void LockStateController::OnAppTerminating() { | 305 void LockStateController::OnAppTerminating() { |
306 // If we hear that Chrome is exiting but didn't request it ourselves, all we | 306 // If we hear that Chrome is exiting but didn't request it ourselves, all we |
307 // can really hope for is that we'll have time to clear the screen. | 307 // can really hope for is that we'll have time to clear the screen. |
308 // This is also the case when the user signs off. | 308 // This is also the case when the user signs off. |
309 if (!shutting_down_) { | 309 if (!shutting_down_) { |
310 shutting_down_ = true; | 310 shutting_down_ = true; |
311 Shell* shell = ash::Shell::GetInstance(); | 311 Shell* shell = ash::Shell::GetInstance(); |
312 shell->cursor_manager()->HideCursor(); | 312 shell->cursor_manager()->HideCursor(); |
313 shell->cursor_manager()->LockCursor(); | 313 shell->cursor_manager()->LockCursor(); |
314 animator_->StartAnimation( | 314 animator_->StartAnimation(SessionStateAnimator::kAllContainersMask, |
315 internal::SessionStateAnimator::kAllContainersMask, | 315 SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY, |
316 internal::SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY, | 316 SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); |
317 internal::SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); | |
318 } | 317 } |
319 } | 318 } |
320 | 319 |
321 void LockStateController::OnLockStateChanged(bool locked) { | 320 void LockStateController::OnLockStateChanged(bool locked) { |
322 VLOG(1) << "OnLockStateChanged " << locked; | 321 VLOG(1) << "OnLockStateChanged " << locked; |
323 if (shutting_down_ || (system_is_locked_ == locked)) | 322 if (shutting_down_ || (system_is_locked_ == locked)) |
324 return; | 323 return; |
325 | 324 |
326 system_is_locked_ = locked; | 325 system_is_locked_ = locked; |
327 | 326 |
(...skipping 22 matching lines...) Expand all Loading... |
350 | 349 |
351 void LockStateController::OnLockToShutdownTimeout() { | 350 void LockStateController::OnLockToShutdownTimeout() { |
352 DCHECK(system_is_locked_); | 351 DCHECK(system_is_locked_); |
353 StartCancellableShutdownAnimation(); | 352 StartCancellableShutdownAnimation(); |
354 } | 353 } |
355 | 354 |
356 void LockStateController::StartPreShutdownAnimationTimer() { | 355 void LockStateController::StartPreShutdownAnimationTimer() { |
357 pre_shutdown_timer_.Stop(); | 356 pre_shutdown_timer_.Stop(); |
358 pre_shutdown_timer_.Start( | 357 pre_shutdown_timer_.Start( |
359 FROM_HERE, | 358 FROM_HERE, |
360 animator_-> | 359 animator_->GetDuration(SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN), |
361 GetDuration(internal::SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN), | |
362 this, | 360 this, |
363 &LockStateController::OnPreShutdownAnimationTimeout); | 361 &LockStateController::OnPreShutdownAnimationTimeout); |
364 } | 362 } |
365 | 363 |
366 void LockStateController::OnPreShutdownAnimationTimeout() { | 364 void LockStateController::OnPreShutdownAnimationTimeout() { |
367 VLOG(1) << "OnPreShutdownAnimationTimeout"; | 365 VLOG(1) << "OnPreShutdownAnimationTimeout"; |
368 shutting_down_ = true; | 366 shutting_down_ = true; |
369 | 367 |
370 Shell* shell = ash::Shell::GetInstance(); | 368 Shell* shell = ash::Shell::GetInstance(); |
371 shell->cursor_manager()->HideCursor(); | 369 shell->cursor_manager()->HideCursor(); |
372 | 370 |
373 StartRealShutdownTimer(false); | 371 StartRealShutdownTimer(false); |
374 } | 372 } |
375 | 373 |
376 void LockStateController::StartRealShutdownTimer(bool with_animation_time) { | 374 void LockStateController::StartRealShutdownTimer(bool with_animation_time) { |
377 base::TimeDelta duration = | 375 base::TimeDelta duration = |
378 base::TimeDelta::FromMilliseconds(kShutdownRequestDelayMs); | 376 base::TimeDelta::FromMilliseconds(kShutdownRequestDelayMs); |
379 if (with_animation_time) { | 377 if (with_animation_time) { |
380 duration += animator_->GetDuration( | 378 duration += |
381 internal::SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); | 379 animator_->GetDuration(SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); |
382 } | 380 } |
383 | 381 |
384 #if defined(OS_CHROMEOS) | 382 #if defined(OS_CHROMEOS) |
385 const AccessibilityDelegate* const delegate = | 383 const AccessibilityDelegate* const delegate = |
386 Shell::GetInstance()->accessibility_delegate(); | 384 Shell::GetInstance()->accessibility_delegate(); |
387 base::TimeDelta sound_duration = delegate->PlayShutdownSound(); | 385 base::TimeDelta sound_duration = delegate->PlayShutdownSound(); |
388 sound_duration = | 386 sound_duration = |
389 std::min(sound_duration, | 387 std::min(sound_duration, |
390 base::TimeDelta::FromMilliseconds(kMaxShutdownSoundDurationMs)); | 388 base::TimeDelta::FromMilliseconds(kMaxShutdownSoundDurationMs)); |
391 duration = std::max(duration, sound_duration); | 389 duration = std::max(duration, sound_duration); |
(...skipping 19 matching lines...) Expand all Loading... |
411 UMA_ACCEL_SHUT_DOWN_POWER_BUTTON); | 409 UMA_ACCEL_SHUT_DOWN_POWER_BUTTON); |
412 delegate_->RequestShutdown(); | 410 delegate_->RequestShutdown(); |
413 } | 411 } |
414 | 412 |
415 void LockStateController::StartCancellableShutdownAnimation() { | 413 void LockStateController::StartCancellableShutdownAnimation() { |
416 Shell* shell = ash::Shell::GetInstance(); | 414 Shell* shell = ash::Shell::GetInstance(); |
417 // Hide cursor, but let it reappear if the mouse moves. | 415 // Hide cursor, but let it reappear if the mouse moves. |
418 shell->cursor_manager()->HideCursor(); | 416 shell->cursor_manager()->HideCursor(); |
419 | 417 |
420 animator_->StartGlobalAnimation( | 418 animator_->StartGlobalAnimation( |
421 internal::SessionStateAnimator::ANIMATION_GRAYSCALE_BRIGHTNESS, | 419 SessionStateAnimator::ANIMATION_GRAYSCALE_BRIGHTNESS, |
422 internal::SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); | 420 SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); |
423 StartPreShutdownAnimationTimer(); | 421 StartPreShutdownAnimationTimer(); |
424 } | 422 } |
425 | 423 |
426 void LockStateController::StartImmediatePreLockAnimation( | 424 void LockStateController::StartImmediatePreLockAnimation( |
427 bool request_lock_on_completion) { | 425 bool request_lock_on_completion) { |
428 VLOG(1) << "StartImmediatePreLockAnimation " << request_lock_on_completion; | 426 VLOG(1) << "StartImmediatePreLockAnimation " << request_lock_on_completion; |
429 animating_lock_ = true; | 427 animating_lock_ = true; |
430 StoreUnlockedProperties(); | 428 StoreUnlockedProperties(); |
431 | 429 |
432 base::Closure next_animation_starter = | 430 base::Closure next_animation_starter = |
433 base::Bind(&LockStateController::PreLockAnimationFinished, | 431 base::Bind(&LockStateController::PreLockAnimationFinished, |
434 weak_ptr_factory_.GetWeakPtr(), | 432 weak_ptr_factory_.GetWeakPtr(), |
435 request_lock_on_completion); | 433 request_lock_on_completion); |
436 AnimationFinishedObserver* observer = | 434 AnimationFinishedObserver* observer = |
437 new AnimationFinishedObserver(next_animation_starter); | 435 new AnimationFinishedObserver(next_animation_starter); |
438 | 436 |
439 observer->Pause(); | 437 observer->Pause(); |
440 | 438 |
441 animator_->StartAnimationWithObserver( | 439 animator_->StartAnimationWithObserver( |
442 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, | 440 SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, |
443 internal::SessionStateAnimator::ANIMATION_LIFT, | 441 SessionStateAnimator::ANIMATION_LIFT, |
444 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, | 442 SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, |
445 observer); | 443 observer); |
446 animator_->StartAnimationWithObserver( | 444 animator_->StartAnimationWithObserver( |
447 internal::SessionStateAnimator::LAUNCHER, | 445 SessionStateAnimator::LAUNCHER, |
448 internal::SessionStateAnimator::ANIMATION_FADE_OUT, | 446 SessionStateAnimator::ANIMATION_FADE_OUT, |
449 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, | 447 SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, |
450 observer); | 448 observer); |
451 // Hide the screen locker containers so we can raise them later. | 449 // Hide the screen locker containers so we can raise them later. |
452 animator_->StartAnimation( | 450 animator_->StartAnimation(SessionStateAnimator::LOCK_SCREEN_CONTAINERS, |
453 internal::SessionStateAnimator::LOCK_SCREEN_CONTAINERS, | 451 SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY, |
454 internal::SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY, | 452 SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); |
455 internal::SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); | |
456 AnimateBackgroundAppearanceIfNecessary( | 453 AnimateBackgroundAppearanceIfNecessary( |
457 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, | 454 SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, observer); |
458 observer); | |
459 | 455 |
460 observer->Unpause(); | 456 observer->Unpause(); |
461 | 457 |
462 DispatchCancelMode(); | 458 DispatchCancelMode(); |
463 FOR_EACH_OBSERVER(LockStateObserver, observers_, | 459 FOR_EACH_OBSERVER(LockStateObserver, observers_, |
464 OnLockStateEvent(LockStateObserver::EVENT_LOCK_ANIMATION_STARTED)); | 460 OnLockStateEvent(LockStateObserver::EVENT_LOCK_ANIMATION_STARTED)); |
465 } | 461 } |
466 | 462 |
467 void LockStateController::StartCancellablePreLockAnimation() { | 463 void LockStateController::StartCancellablePreLockAnimation() { |
468 animating_lock_ = true; | 464 animating_lock_ = true; |
469 StoreUnlockedProperties(); | 465 StoreUnlockedProperties(); |
470 VLOG(1) << "StartCancellablePreLockAnimation"; | 466 VLOG(1) << "StartCancellablePreLockAnimation"; |
471 base::Closure next_animation_starter = | 467 base::Closure next_animation_starter = |
472 base::Bind(&LockStateController::PreLockAnimationFinished, | 468 base::Bind(&LockStateController::PreLockAnimationFinished, |
473 weak_ptr_factory_.GetWeakPtr(), | 469 weak_ptr_factory_.GetWeakPtr(), |
474 true /* request_lock */); | 470 true /* request_lock */); |
475 AnimationFinishedObserver* observer = | 471 AnimationFinishedObserver* observer = |
476 new AnimationFinishedObserver(next_animation_starter); | 472 new AnimationFinishedObserver(next_animation_starter); |
477 | 473 |
478 observer->Pause(); | 474 observer->Pause(); |
479 | 475 |
480 animator_->StartAnimationWithObserver( | 476 animator_->StartAnimationWithObserver( |
481 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, | 477 SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, |
482 internal::SessionStateAnimator::ANIMATION_LIFT, | 478 SessionStateAnimator::ANIMATION_LIFT, |
483 internal::SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, | 479 SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, |
484 observer); | 480 observer); |
485 animator_->StartAnimationWithObserver( | 481 animator_->StartAnimationWithObserver( |
486 internal::SessionStateAnimator::LAUNCHER, | 482 SessionStateAnimator::LAUNCHER, |
487 internal::SessionStateAnimator::ANIMATION_FADE_OUT, | 483 SessionStateAnimator::ANIMATION_FADE_OUT, |
488 internal::SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, | 484 SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, |
489 observer); | 485 observer); |
490 // Hide the screen locker containers so we can raise them later. | 486 // Hide the screen locker containers so we can raise them later. |
491 animator_->StartAnimation( | 487 animator_->StartAnimation(SessionStateAnimator::LOCK_SCREEN_CONTAINERS, |
492 internal::SessionStateAnimator::LOCK_SCREEN_CONTAINERS, | 488 SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY, |
493 internal::SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY, | 489 SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); |
494 internal::SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); | |
495 AnimateBackgroundAppearanceIfNecessary( | 490 AnimateBackgroundAppearanceIfNecessary( |
496 internal::SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, | 491 SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, observer); |
497 observer); | |
498 | 492 |
499 DispatchCancelMode(); | 493 DispatchCancelMode(); |
500 FOR_EACH_OBSERVER(LockStateObserver, observers_, | 494 FOR_EACH_OBSERVER(LockStateObserver, observers_, |
501 OnLockStateEvent(LockStateObserver::EVENT_PRELOCK_ANIMATION_STARTED)); | 495 OnLockStateEvent(LockStateObserver::EVENT_PRELOCK_ANIMATION_STARTED)); |
502 observer->Unpause(); | 496 observer->Unpause(); |
503 } | 497 } |
504 | 498 |
505 void LockStateController::CancelPreLockAnimation() { | 499 void LockStateController::CancelPreLockAnimation() { |
506 VLOG(1) << "CancelPreLockAnimation"; | 500 VLOG(1) << "CancelPreLockAnimation"; |
507 base::Closure next_animation_starter = | 501 base::Closure next_animation_starter = |
508 base::Bind(&LockStateController::LockAnimationCancelled, | 502 base::Bind(&LockStateController::LockAnimationCancelled, |
509 weak_ptr_factory_.GetWeakPtr()); | 503 weak_ptr_factory_.GetWeakPtr()); |
510 AnimationFinishedObserver* observer = | 504 AnimationFinishedObserver* observer = |
511 new AnimationFinishedObserver(next_animation_starter); | 505 new AnimationFinishedObserver(next_animation_starter); |
512 | 506 |
513 observer->Pause(); | 507 observer->Pause(); |
514 | 508 |
515 animator_->StartAnimationWithObserver( | 509 animator_->StartAnimationWithObserver( |
516 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, | 510 SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, |
517 internal::SessionStateAnimator::ANIMATION_UNDO_LIFT, | 511 SessionStateAnimator::ANIMATION_UNDO_LIFT, |
518 internal::SessionStateAnimator::ANIMATION_SPEED_UNDO_MOVE_WINDOWS, | 512 SessionStateAnimator::ANIMATION_SPEED_UNDO_MOVE_WINDOWS, |
519 observer); | 513 observer); |
520 animator_->StartAnimationWithObserver( | 514 animator_->StartAnimationWithObserver( |
521 internal::SessionStateAnimator::LAUNCHER, | 515 SessionStateAnimator::LAUNCHER, |
522 internal::SessionStateAnimator::ANIMATION_FADE_IN, | 516 SessionStateAnimator::ANIMATION_FADE_IN, |
523 internal::SessionStateAnimator::ANIMATION_SPEED_UNDO_MOVE_WINDOWS, | 517 SessionStateAnimator::ANIMATION_SPEED_UNDO_MOVE_WINDOWS, |
524 observer); | 518 observer); |
525 AnimateBackgroundHidingIfNecessary( | 519 AnimateBackgroundHidingIfNecessary( |
526 internal::SessionStateAnimator::ANIMATION_SPEED_UNDO_MOVE_WINDOWS, | 520 SessionStateAnimator::ANIMATION_SPEED_UNDO_MOVE_WINDOWS, observer); |
527 observer); | |
528 | 521 |
529 observer->Unpause(); | 522 observer->Unpause(); |
530 } | 523 } |
531 | 524 |
532 void LockStateController::StartPostLockAnimation() { | 525 void LockStateController::StartPostLockAnimation() { |
533 VLOG(1) << "StartPostLockAnimation"; | 526 VLOG(1) << "StartPostLockAnimation"; |
534 base::Closure next_animation_starter = | 527 base::Closure next_animation_starter = |
535 base::Bind(&LockStateController::PostLockAnimationFinished, | 528 base::Bind(&LockStateController::PostLockAnimationFinished, |
536 weak_ptr_factory_.GetWeakPtr()); | 529 weak_ptr_factory_.GetWeakPtr()); |
537 | 530 |
538 AnimationFinishedObserver* observer = | 531 AnimationFinishedObserver* observer = |
539 new AnimationFinishedObserver(next_animation_starter); | 532 new AnimationFinishedObserver(next_animation_starter); |
540 | 533 |
541 observer->Pause(); | 534 observer->Pause(); |
542 animator_->StartAnimationWithObserver( | 535 animator_->StartAnimationWithObserver( |
543 internal::SessionStateAnimator::LOCK_SCREEN_CONTAINERS, | 536 SessionStateAnimator::LOCK_SCREEN_CONTAINERS, |
544 internal::SessionStateAnimator::ANIMATION_RAISE_TO_SCREEN, | 537 SessionStateAnimator::ANIMATION_RAISE_TO_SCREEN, |
545 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, | 538 SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, |
546 observer); | 539 observer); |
547 observer->Unpause(); | 540 observer->Unpause(); |
548 } | 541 } |
549 | 542 |
550 void LockStateController::StartUnlockAnimationBeforeUIDestroyed( | 543 void LockStateController::StartUnlockAnimationBeforeUIDestroyed( |
551 base::Closure& callback) { | 544 base::Closure& callback) { |
552 VLOG(1) << "StartUnlockAnimationBeforeUIDestroyed"; | 545 VLOG(1) << "StartUnlockAnimationBeforeUIDestroyed"; |
553 animator_->StartAnimationWithCallback( | 546 animator_->StartAnimationWithCallback( |
554 internal::SessionStateAnimator::LOCK_SCREEN_CONTAINERS, | 547 SessionStateAnimator::LOCK_SCREEN_CONTAINERS, |
555 internal::SessionStateAnimator::ANIMATION_LIFT, | 548 SessionStateAnimator::ANIMATION_LIFT, |
556 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, | 549 SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, |
557 callback); | 550 callback); |
558 } | 551 } |
559 | 552 |
560 void LockStateController::StartUnlockAnimationAfterUIDestroyed() { | 553 void LockStateController::StartUnlockAnimationAfterUIDestroyed() { |
561 VLOG(1) << "StartUnlockAnimationAfterUIDestroyed"; | 554 VLOG(1) << "StartUnlockAnimationAfterUIDestroyed"; |
562 base::Closure next_animation_starter = | 555 base::Closure next_animation_starter = |
563 base::Bind(&LockStateController::UnlockAnimationAfterUIDestroyedFinished, | 556 base::Bind(&LockStateController::UnlockAnimationAfterUIDestroyedFinished, |
564 weak_ptr_factory_.GetWeakPtr()); | 557 weak_ptr_factory_.GetWeakPtr()); |
565 | 558 |
566 AnimationFinishedObserver* observer = | 559 AnimationFinishedObserver* observer = |
567 new AnimationFinishedObserver(next_animation_starter); | 560 new AnimationFinishedObserver(next_animation_starter); |
568 | 561 |
569 observer->Pause(); | 562 observer->Pause(); |
570 | 563 |
571 animator_->StartAnimationWithObserver( | 564 animator_->StartAnimationWithObserver( |
572 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, | 565 SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, |
573 internal::SessionStateAnimator::ANIMATION_DROP, | 566 SessionStateAnimator::ANIMATION_DROP, |
574 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, | 567 SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, |
575 observer); | 568 observer); |
576 animator_->StartAnimationWithObserver( | 569 animator_->StartAnimationWithObserver( |
577 internal::SessionStateAnimator::LAUNCHER, | 570 SessionStateAnimator::LAUNCHER, |
578 internal::SessionStateAnimator::ANIMATION_FADE_IN, | 571 SessionStateAnimator::ANIMATION_FADE_IN, |
579 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, | 572 SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, |
580 observer); | 573 observer); |
581 AnimateBackgroundHidingIfNecessary( | 574 AnimateBackgroundHidingIfNecessary( |
582 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, | 575 SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, observer); |
583 observer); | |
584 observer->Unpause(); | 576 observer->Unpause(); |
585 } | 577 } |
586 | 578 |
587 void LockStateController::LockAnimationCancelled() { | 579 void LockStateController::LockAnimationCancelled() { |
588 can_cancel_lock_animation_ = false; | 580 can_cancel_lock_animation_ = false; |
589 RestoreUnlockedProperties(); | 581 RestoreUnlockedProperties(); |
590 } | 582 } |
591 | 583 |
592 void LockStateController::PreLockAnimationFinished(bool request_lock) { | 584 void LockStateController::PreLockAnimationFinished(bool request_lock) { |
593 can_cancel_lock_animation_ = false; | 585 can_cancel_lock_animation_ = false; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
640 RestoreUnlockedProperties(); | 632 RestoreUnlockedProperties(); |
641 } | 633 } |
642 | 634 |
643 void LockStateController::StoreUnlockedProperties() { | 635 void LockStateController::StoreUnlockedProperties() { |
644 if (!unlocked_properties_) { | 636 if (!unlocked_properties_) { |
645 unlocked_properties_.reset(new UnlockedStateProperties()); | 637 unlocked_properties_.reset(new UnlockedStateProperties()); |
646 unlocked_properties_->background_is_hidden = IsBackgroundHidden(); | 638 unlocked_properties_->background_is_hidden = IsBackgroundHidden(); |
647 } | 639 } |
648 if (unlocked_properties_->background_is_hidden) { | 640 if (unlocked_properties_->background_is_hidden) { |
649 // Hide background so that it can be animated later. | 641 // Hide background so that it can be animated later. |
650 animator_->StartAnimation( | 642 animator_->StartAnimation(SessionStateAnimator::DESKTOP_BACKGROUND, |
651 internal::SessionStateAnimator::DESKTOP_BACKGROUND, | 643 SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY, |
652 internal::SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY, | 644 SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); |
653 internal::SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); | |
654 ShowBackground(); | 645 ShowBackground(); |
655 } | 646 } |
656 } | 647 } |
657 | 648 |
658 void LockStateController::RestoreUnlockedProperties() { | 649 void LockStateController::RestoreUnlockedProperties() { |
659 if (!unlocked_properties_) | 650 if (!unlocked_properties_) |
660 return; | 651 return; |
661 if (unlocked_properties_->background_is_hidden) { | 652 if (unlocked_properties_->background_is_hidden) { |
662 HideBackground(); | 653 HideBackground(); |
663 // Restore background visibility. | 654 // Restore background visibility. |
664 animator_->StartAnimation( | 655 animator_->StartAnimation(SessionStateAnimator::DESKTOP_BACKGROUND, |
665 internal::SessionStateAnimator::DESKTOP_BACKGROUND, | 656 SessionStateAnimator::ANIMATION_FADE_IN, |
666 internal::SessionStateAnimator::ANIMATION_FADE_IN, | 657 SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); |
667 internal::SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); | |
668 } | 658 } |
669 unlocked_properties_.reset(); | 659 unlocked_properties_.reset(); |
670 } | 660 } |
671 | 661 |
672 void LockStateController::AnimateBackgroundAppearanceIfNecessary( | 662 void LockStateController::AnimateBackgroundAppearanceIfNecessary( |
673 internal::SessionStateAnimator::AnimationSpeed speed, | 663 SessionStateAnimator::AnimationSpeed speed, |
674 ui::LayerAnimationObserver* observer) { | 664 ui::LayerAnimationObserver* observer) { |
675 if (unlocked_properties_.get() && | 665 if (unlocked_properties_.get() && |
676 unlocked_properties_->background_is_hidden) { | 666 unlocked_properties_->background_is_hidden) { |
677 animator_->StartAnimationWithObserver( | 667 animator_->StartAnimationWithObserver( |
678 internal::SessionStateAnimator::DESKTOP_BACKGROUND, | 668 SessionStateAnimator::DESKTOP_BACKGROUND, |
679 internal::SessionStateAnimator::ANIMATION_FADE_IN, | 669 SessionStateAnimator::ANIMATION_FADE_IN, |
680 speed, | 670 speed, |
681 observer); | 671 observer); |
682 } | 672 } |
683 } | 673 } |
684 | 674 |
685 void LockStateController::AnimateBackgroundHidingIfNecessary( | 675 void LockStateController::AnimateBackgroundHidingIfNecessary( |
686 internal::SessionStateAnimator::AnimationSpeed speed, | 676 SessionStateAnimator::AnimationSpeed speed, |
687 ui::LayerAnimationObserver* observer) { | 677 ui::LayerAnimationObserver* observer) { |
688 if (unlocked_properties_.get() && | 678 if (unlocked_properties_.get() && |
689 unlocked_properties_->background_is_hidden) { | 679 unlocked_properties_->background_is_hidden) { |
690 animator_->StartAnimationWithObserver( | 680 animator_->StartAnimationWithObserver( |
691 internal::SessionStateAnimator::DESKTOP_BACKGROUND, | 681 SessionStateAnimator::DESKTOP_BACKGROUND, |
692 internal::SessionStateAnimator::ANIMATION_FADE_OUT, | 682 SessionStateAnimator::ANIMATION_FADE_OUT, |
693 speed, | 683 speed, |
694 observer); | 684 observer); |
695 } | 685 } |
696 } | 686 } |
697 | 687 |
698 } // namespace ash | 688 } // namespace ash |
OLD | NEW |