| 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 |