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

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

Issue 15974008: Rename SessionStateController -> LockStateController (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 6 months 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
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/session_state_controller_impl2.h" 5 #include "ash/wm/session_lock_state_controller_impl2.h"
6 6
7 #include "ash/ash_switches.h" 7 #include "ash/ash_switches.h"
8 #include "ash/cancel_mode.h" 8 #include "ash/cancel_mode.h"
9 #include "ash/shell.h" 9 #include "ash/shell.h"
10 #include "ash/shell_delegate.h" 10 #include "ash/shell_delegate.h"
11 #include "ash/shell_window_ids.h" 11 #include "ash/shell_window_ids.h"
12 #include "ash/wm/session_state_animator.h" 12 #include "ash/wm/session_state_animator.h"
13 #include "base/bind_helpers.h" 13 #include "base/bind_helpers.h"
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/timer.h" 15 #include "base/timer.h"
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 // Number of sequences either ended or aborted. 128 // Number of sequences either ended or aborted.
129 int sequences_completed_; 129 int sequences_completed_;
130 130
131 bool paused_; 131 bool paused_;
132 132
133 DISALLOW_COPY_AND_ASSIGN(AnimationFinishedObserver); 133 DISALLOW_COPY_AND_ASSIGN(AnimationFinishedObserver);
134 }; 134 };
135 135
136 } // namespace 136 } // namespace
137 137
138 SessionStateControllerImpl2::TestApi::TestApi( 138 SessionLockStateControllerImpl2::TestApi::TestApi(
139 SessionStateControllerImpl2* controller) 139 SessionLockStateControllerImpl2* controller)
140 : controller_(controller) { 140 : controller_(controller) {
141 } 141 }
142 142
143 SessionStateControllerImpl2::TestApi::~TestApi() { 143 SessionLockStateControllerImpl2::TestApi::~TestApi() {
144 } 144 }
145 145
146 SessionStateControllerImpl2::SessionStateControllerImpl2() 146 SessionLockStateControllerImpl2::SessionLockStateControllerImpl2()
147 : login_status_(user::LOGGED_IN_NONE), 147 : login_status_(user::LOGGED_IN_NONE),
148 system_is_locked_(false), 148 system_is_locked_(false),
149 shutting_down_(false), 149 shutting_down_(false),
150 shutdown_after_lock_(false), 150 shutdown_after_lock_(false),
151 animating_lock_(false), 151 animating_lock_(false),
152 can_cancel_lock_animation_(false) { 152 can_cancel_lock_animation_(false) {
153 Shell::GetPrimaryRootWindow()->AddRootWindowObserver(this); 153 Shell::GetPrimaryRootWindow()->AddRootWindowObserver(this);
154 } 154 }
155 155
156 SessionStateControllerImpl2::~SessionStateControllerImpl2() { 156 SessionLockStateControllerImpl2::~SessionLockStateControllerImpl2() {
157 Shell::GetPrimaryRootWindow()->RemoveRootWindowObserver(this); 157 Shell::GetPrimaryRootWindow()->RemoveRootWindowObserver(this);
158 } 158 }
159 159
160 void SessionStateControllerImpl2::OnLoginStateChanged( 160 void SessionLockStateControllerImpl2::OnLoginStateChanged(
161 user::LoginStatus status) { 161 user::LoginStatus status) {
162 if (status != user::LOGGED_IN_LOCKED) 162 if (status != user::LOGGED_IN_LOCKED)
163 login_status_ = status; 163 login_status_ = status;
164 system_is_locked_ = (status == user::LOGGED_IN_LOCKED); 164 system_is_locked_ = (status == user::LOGGED_IN_LOCKED);
165 } 165 }
166 166
167 void SessionStateControllerImpl2::OnAppTerminating() { 167 void SessionLockStateControllerImpl2::OnAppTerminating() {
168 // If we hear that Chrome is exiting but didn't request it ourselves, all we 168 // If we hear that Chrome is exiting but didn't request it ourselves, all we
169 // can really hope for is that we'll have time to clear the screen. 169 // can really hope for is that we'll have time to clear the screen.
170 // This is also the case when the user signs off. 170 // This is also the case when the user signs off.
171 if (!shutting_down_) { 171 if (!shutting_down_) {
172 shutting_down_ = true; 172 shutting_down_ = true;
173 Shell* shell = ash::Shell::GetInstance(); 173 Shell* shell = ash::Shell::GetInstance();
174 shell->env_filter()->set_cursor_hidden_by_filter(false); 174 shell->env_filter()->set_cursor_hidden_by_filter(false);
175 shell->cursor_manager()->HideCursor(); 175 shell->cursor_manager()->HideCursor();
176 animator_->StartAnimation( 176 animator_->StartAnimation(
177 internal::SessionStateAnimator::kAllContainersMask, 177 internal::SessionStateAnimator::kAllContainersMask,
178 internal::SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY, 178 internal::SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY,
179 internal::SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); 179 internal::SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE);
180 } 180 }
181 } 181 }
182 182
183 void SessionStateControllerImpl2::OnLockStateChanged(bool locked) { 183 void SessionLockStateControllerImpl2::OnLockStateChanged(bool locked) {
184 if (shutting_down_ || (system_is_locked_ == locked)) 184 if (shutting_down_ || (system_is_locked_ == locked))
185 return; 185 return;
186 186
187 system_is_locked_ = locked; 187 system_is_locked_ = locked;
188 188
189 if (locked) { 189 if (locked) {
190 StartPostLockAnimation(); 190 StartPostLockAnimation();
191 lock_fail_timer_.Stop(); 191 lock_fail_timer_.Stop();
192 } else { 192 } else {
193 StartUnlockAnimationAfterUIDestroyed(); 193 StartUnlockAnimationAfterUIDestroyed();
194 } 194 }
195 } 195 }
196 196
197 void SessionStateControllerImpl2::SetLockScreenDisplayedCallback( 197 void SessionLockStateControllerImpl2::SetLockScreenDisplayedCallback(
198 base::Closure& callback) { 198 base::Closure& callback) {
199 lock_screen_displayed_callback_ = callback; 199 lock_screen_displayed_callback_ = callback;
200 } 200 }
201 201
202 void SessionStateControllerImpl2::OnStartingLock() { 202 void SessionLockStateControllerImpl2::OnStartingLock() {
203 if (shutting_down_ || system_is_locked_) 203 if (shutting_down_ || system_is_locked_)
204 return; 204 return;
205 if (animating_lock_) 205 if (animating_lock_)
206 return; 206 return;
207 StartImmediatePreLockAnimation(false /* request_lock_on_completion */); 207 StartImmediatePreLockAnimation(false /* request_lock_on_completion */);
208 } 208 }
209 209
210 void SessionStateControllerImpl2::StartLockAnimationAndLockImmediately() { 210 void SessionLockStateControllerImpl2::StartLockAnimationAndLockImmediately() {
211 if (animating_lock_) 211 if (animating_lock_)
212 return; 212 return;
213 StartImmediatePreLockAnimation(true /* request_lock_on_completion */); 213 StartImmediatePreLockAnimation(true /* request_lock_on_completion */);
214 } 214 }
215 215
216 void SessionStateControllerImpl2::StartLockAnimation(bool shutdown_after_lock) { 216 void SessionLockStateControllerImpl2::StartLockAnimation(
217 bool shutdown_after_lock) {
217 if (animating_lock_) 218 if (animating_lock_)
218 return; 219 return;
219 shutdown_after_lock_ = shutdown_after_lock; 220 shutdown_after_lock_ = shutdown_after_lock;
220 can_cancel_lock_animation_ = true; 221 can_cancel_lock_animation_ = true;
221 222
222 StartCancellablePreLockAnimation(); 223 StartCancellablePreLockAnimation();
223 } 224 }
224 225
225 bool SessionStateControllerImpl2::LockRequested() { 226 bool SessionLockStateControllerImpl2::LockRequested() {
226 return lock_fail_timer_.IsRunning(); 227 return lock_fail_timer_.IsRunning();
227 } 228 }
228 229
229 bool SessionStateControllerImpl2::ShutdownRequested() { 230 bool SessionLockStateControllerImpl2::ShutdownRequested() {
230 return shutting_down_; 231 return shutting_down_;
231 } 232 }
232 233
233 bool SessionStateControllerImpl2::CanCancelLockAnimation() { 234 bool SessionLockStateControllerImpl2::CanCancelLockAnimation() {
234 return can_cancel_lock_animation_; 235 return can_cancel_lock_animation_;
235 } 236 }
236 237
237 void SessionStateControllerImpl2::CancelLockAnimation() { 238 void SessionLockStateControllerImpl2::CancelLockAnimation() {
238 if (!CanCancelLockAnimation()) 239 if (!CanCancelLockAnimation())
239 return; 240 return;
240 shutdown_after_lock_ = false; 241 shutdown_after_lock_ = false;
241 animating_lock_ = false; 242 animating_lock_ = false;
242 CancelPreLockAnimation(); 243 CancelPreLockAnimation();
243 } 244 }
244 245
245 bool SessionStateControllerImpl2::CanCancelShutdownAnimation() { 246 bool SessionLockStateControllerImpl2::CanCancelShutdownAnimation() {
246 return pre_shutdown_timer_.IsRunning() || 247 return pre_shutdown_timer_.IsRunning() ||
247 shutdown_after_lock_ || 248 shutdown_after_lock_ ||
248 lock_to_shutdown_timer_.IsRunning(); 249 lock_to_shutdown_timer_.IsRunning();
249 } 250 }
250 251
251 void SessionStateControllerImpl2::StartShutdownAnimation() { 252 void SessionLockStateControllerImpl2::StartShutdownAnimation() {
252 StartCancellableShutdownAnimation(); 253 StartCancellableShutdownAnimation();
253 } 254 }
254 255
255 void SessionStateControllerImpl2::CancelShutdownAnimation() { 256 void SessionLockStateControllerImpl2::CancelShutdownAnimation() {
256 if (!CanCancelShutdownAnimation()) 257 if (!CanCancelShutdownAnimation())
257 return; 258 return;
258 if (lock_to_shutdown_timer_.IsRunning()) { 259 if (lock_to_shutdown_timer_.IsRunning()) {
259 lock_to_shutdown_timer_.Stop(); 260 lock_to_shutdown_timer_.Stop();
260 return; 261 return;
261 } 262 }
262 if (shutdown_after_lock_) { 263 if (shutdown_after_lock_) {
263 shutdown_after_lock_ = false; 264 shutdown_after_lock_ = false;
264 return; 265 return;
265 } 266 }
266 267
267 animator_->StartGlobalAnimation( 268 animator_->StartGlobalAnimation(
268 internal::SessionStateAnimator::ANIMATION_UNDO_GRAYSCALE_BRIGHTNESS, 269 internal::SessionStateAnimator::ANIMATION_UNDO_GRAYSCALE_BRIGHTNESS,
269 internal::SessionStateAnimator::ANIMATION_SPEED_REVERT_SHUTDOWN); 270 internal::SessionStateAnimator::ANIMATION_SPEED_REVERT_SHUTDOWN);
270 pre_shutdown_timer_.Stop(); 271 pre_shutdown_timer_.Stop();
271 } 272 }
272 273
273 void SessionStateControllerImpl2::RequestShutdown() { 274 void SessionLockStateControllerImpl2::RequestShutdown() {
274 if (!shutting_down_) 275 if (!shutting_down_)
275 RequestShutdownImpl(); 276 RequestShutdownImpl();
276 } 277 }
277 278
278 void SessionStateControllerImpl2::RequestShutdownImpl() { 279 void SessionLockStateControllerImpl2::RequestShutdownImpl() {
279 DCHECK(!shutting_down_); 280 DCHECK(!shutting_down_);
280 shutting_down_ = true; 281 shutting_down_ = true;
281 282
282 Shell* shell = ash::Shell::GetInstance(); 283 Shell* shell = ash::Shell::GetInstance();
283 shell->env_filter()->set_cursor_hidden_by_filter(false); 284 shell->env_filter()->set_cursor_hidden_by_filter(false);
284 shell->cursor_manager()->HideCursor(); 285 shell->cursor_manager()->HideCursor();
285 286
286 StartShutdownAnimationImpl(); 287 StartShutdownAnimationImpl();
287 } 288 }
288 289
289 void SessionStateControllerImpl2::OnRootWindowHostCloseRequested( 290 void SessionLockStateControllerImpl2::OnRootWindowHostCloseRequested(
290 const aura::RootWindow*) { 291 const aura::RootWindow*) {
291 Shell::GetInstance()->delegate()->Exit(); 292 Shell::GetInstance()->delegate()->Exit();
292 } 293 }
293 294
294 void SessionStateControllerImpl2::OnLockFailTimeout() { 295 void SessionLockStateControllerImpl2::OnLockFailTimeout() {
295 DCHECK(!system_is_locked_); 296 DCHECK(!system_is_locked_);
296 // Undo lock animation. 297 // Undo lock animation.
297 StartUnlockAnimationAfterUIDestroyed(); 298 StartUnlockAnimationAfterUIDestroyed();
298 } 299 }
299 300
300 void SessionStateControllerImpl2::StartLockToShutdownTimer() { 301 void SessionLockStateControllerImpl2::StartLockToShutdownTimer() {
301 shutdown_after_lock_ = false; 302 shutdown_after_lock_ = false;
302 lock_to_shutdown_timer_.Stop(); 303 lock_to_shutdown_timer_.Stop();
303 lock_to_shutdown_timer_.Start( 304 lock_to_shutdown_timer_.Start(
304 FROM_HERE, 305 FROM_HERE,
305 base::TimeDelta::FromMilliseconds(kLockToShutdownTimeoutMs), 306 base::TimeDelta::FromMilliseconds(kLockToShutdownTimeoutMs),
306 this, &SessionStateControllerImpl2::OnLockToShutdownTimeout); 307 this, &SessionLockStateControllerImpl2::OnLockToShutdownTimeout);
307 } 308 }
308 309
309 void SessionStateControllerImpl2::OnLockToShutdownTimeout() { 310 void SessionLockStateControllerImpl2::OnLockToShutdownTimeout() {
310 DCHECK(system_is_locked_); 311 DCHECK(system_is_locked_);
311 StartCancellableShutdownAnimation(); 312 StartCancellableShutdownAnimation();
312 } 313 }
313 314
314 void SessionStateControllerImpl2::StartCancellableShutdownAnimation() { 315 void SessionLockStateControllerImpl2::StartCancellableShutdownAnimation() {
315 Shell* shell = ash::Shell::GetInstance(); 316 Shell* shell = ash::Shell::GetInstance();
316 // Hide cursor, but let it reappear if the mouse moves. 317 // Hide cursor, but let it reappear if the mouse moves.
317 shell->env_filter()->set_cursor_hidden_by_filter(true); 318 shell->env_filter()->set_cursor_hidden_by_filter(true);
318 shell->cursor_manager()->HideCursor(); 319 shell->cursor_manager()->HideCursor();
319 320
320 animator_->StartGlobalAnimation( 321 animator_->StartGlobalAnimation(
321 internal::SessionStateAnimator::ANIMATION_GRAYSCALE_BRIGHTNESS, 322 internal::SessionStateAnimator::ANIMATION_GRAYSCALE_BRIGHTNESS,
322 internal::SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); 323 internal::SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN);
323 StartPreShutdownAnimationTimer(); 324 StartPreShutdownAnimationTimer();
324 } 325 }
325 326
326 void SessionStateControllerImpl2::StartShutdownAnimationImpl() { 327 void SessionLockStateControllerImpl2::StartShutdownAnimationImpl() {
327 animator_->StartGlobalAnimation( 328 animator_->StartGlobalAnimation(
328 internal::SessionStateAnimator::ANIMATION_GRAYSCALE_BRIGHTNESS, 329 internal::SessionStateAnimator::ANIMATION_GRAYSCALE_BRIGHTNESS,
329 internal::SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); 330 internal::SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN);
330 StartRealShutdownTimer(true); 331 StartRealShutdownTimer(true);
331 } 332 }
332 333
333 void SessionStateControllerImpl2::StartPreShutdownAnimationTimer() { 334 void SessionLockStateControllerImpl2::StartPreShutdownAnimationTimer() {
334 pre_shutdown_timer_.Stop(); 335 pre_shutdown_timer_.Stop();
335 pre_shutdown_timer_.Start( 336 pre_shutdown_timer_.Start(
336 FROM_HERE, 337 FROM_HERE,
337 animator_-> 338 animator_->
338 GetDuration(internal::SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN), 339 GetDuration(internal::SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN),
339 this, 340 this,
340 &SessionStateControllerImpl2::OnPreShutdownAnimationTimeout); 341 &SessionLockStateControllerImpl2::OnPreShutdownAnimationTimeout);
341 } 342 }
342 343
343 void SessionStateControllerImpl2::OnPreShutdownAnimationTimeout() { 344 void SessionLockStateControllerImpl2::OnPreShutdownAnimationTimeout() {
344 shutting_down_ = true; 345 shutting_down_ = true;
345 346
346 Shell* shell = ash::Shell::GetInstance(); 347 Shell* shell = ash::Shell::GetInstance();
347 shell->env_filter()->set_cursor_hidden_by_filter(false); 348 shell->env_filter()->set_cursor_hidden_by_filter(false);
348 shell->cursor_manager()->HideCursor(); 349 shell->cursor_manager()->HideCursor();
349 350
350 StartRealShutdownTimer(false); 351 StartRealShutdownTimer(false);
351 } 352 }
352 353
353 void SessionStateControllerImpl2::StartRealShutdownTimer( 354 void SessionLockStateControllerImpl2::StartRealShutdownTimer(
354 bool with_animation_time) { 355 bool with_animation_time) {
355 base::TimeDelta duration = 356 base::TimeDelta duration =
356 base::TimeDelta::FromMilliseconds(kShutdownRequestDelayMs); 357 base::TimeDelta::FromMilliseconds(kShutdownRequestDelayMs);
357 if (with_animation_time) { 358 if (with_animation_time) {
358 duration += animator_->GetDuration( 359 duration += animator_->GetDuration(
359 internal::SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN); 360 internal::SessionStateAnimator::ANIMATION_SPEED_SHUTDOWN);
360 } 361 }
361 real_shutdown_timer_.Start( 362 real_shutdown_timer_.Start(
362 FROM_HERE, 363 FROM_HERE,
363 duration, 364 duration,
364 this, 365 this,
365 &SessionStateControllerImpl2::OnRealShutdownTimeout); 366 &SessionLockStateControllerImpl2::OnRealShutdownTimeout);
366 } 367 }
367 368
368 void SessionStateControllerImpl2::OnRealShutdownTimeout() { 369 void SessionLockStateControllerImpl2::OnRealShutdownTimeout() {
369 DCHECK(shutting_down_); 370 DCHECK(shutting_down_);
370 #if defined(OS_CHROMEOS) 371 #if defined(OS_CHROMEOS)
371 if (!base::chromeos::IsRunningOnChromeOS()) { 372 if (!base::chromeos::IsRunningOnChromeOS()) {
372 ShellDelegate* delegate = Shell::GetInstance()->delegate(); 373 ShellDelegate* delegate = Shell::GetInstance()->delegate();
373 if (delegate) { 374 if (delegate) {
374 delegate->Exit(); 375 delegate->Exit();
375 return; 376 return;
376 } 377 }
377 } 378 }
378 #endif 379 #endif
379 Shell::GetInstance()->delegate()->RecordUserMetricsAction( 380 Shell::GetInstance()->delegate()->RecordUserMetricsAction(
380 UMA_ACCEL_SHUT_DOWN_POWER_BUTTON); 381 UMA_ACCEL_SHUT_DOWN_POWER_BUTTON);
381 delegate_->RequestShutdown(); 382 delegate_->RequestShutdown();
382 } 383 }
383 384
384 void SessionStateControllerImpl2::OnLockScreenHide( 385 void SessionLockStateControllerImpl2::OnLockScreenHide(
385 base::Callback<void(void)>& callback) { 386 base::Callback<void(void)>& callback) {
386 StartUnlockAnimationBeforeUIDestroyed(callback); 387 StartUnlockAnimationBeforeUIDestroyed(callback);
387 } 388 }
388 389
389 void SessionStateControllerImpl2::LockAnimationCancelled() { 390 void SessionLockStateControllerImpl2::LockAnimationCancelled() {
390 can_cancel_lock_animation_ = false; 391 can_cancel_lock_animation_ = false;
391 RestoreUnlockedProperties(); 392 RestoreUnlockedProperties();
392 } 393 }
393 394
394 void SessionStateControllerImpl2::PreLockAnimationFinished(bool request_lock) { 395 void SessionLockStateControllerImpl2::PreLockAnimationFinished(
396 bool request_lock) {
395 can_cancel_lock_animation_ = false; 397 can_cancel_lock_animation_ = false;
396 398
397 if (request_lock) { 399 if (request_lock) {
398 Shell::GetInstance()->delegate()->RecordUserMetricsAction( 400 Shell::GetInstance()->delegate()->RecordUserMetricsAction(
399 shutdown_after_lock_ ? 401 shutdown_after_lock_ ?
400 UMA_ACCEL_LOCK_SCREEN_POWER_BUTTON : 402 UMA_ACCEL_LOCK_SCREEN_POWER_BUTTON :
401 UMA_ACCEL_LOCK_SCREEN_LOCK_BUTTON); 403 UMA_ACCEL_LOCK_SCREEN_LOCK_BUTTON);
402 delegate_->RequestLockScreen(); 404 delegate_->RequestLockScreen();
403 } 405 }
404 406
405 lock_fail_timer_.Start( 407 lock_fail_timer_.Start(
406 FROM_HERE, 408 FROM_HERE,
407 base::TimeDelta::FromMilliseconds(kLockFailTimeoutMs), 409 base::TimeDelta::FromMilliseconds(kLockFailTimeoutMs),
408 this, 410 this,
409 &SessionStateControllerImpl2::OnLockFailTimeout); 411 &SessionLockStateControllerImpl2::OnLockFailTimeout);
410 } 412 }
411 413
412 void SessionStateControllerImpl2::PostLockAnimationFinished() { 414 void SessionLockStateControllerImpl2::PostLockAnimationFinished() {
413 animating_lock_ = false; 415 animating_lock_ = false;
414 416
415 FOR_EACH_OBSERVER(SessionStateObserver, observers_, 417 FOR_EACH_OBSERVER(SessionLockStateObserver, observers_,
416 OnSessionStateEvent( 418 OnSessionLockStateEvent(
417 SessionStateObserver::EVENT_LOCK_ANIMATION_FINISHED)); 419 SessionLockStateObserver::EVENT_LOCK_ANIMATION_FINISHED));
418 if (!lock_screen_displayed_callback_.is_null()) { 420 if (!lock_screen_displayed_callback_.is_null()) {
419 lock_screen_displayed_callback_.Run(); 421 lock_screen_displayed_callback_.Run();
420 lock_screen_displayed_callback_.Reset(); 422 lock_screen_displayed_callback_.Reset();
421 } 423 }
422 if (shutdown_after_lock_) { 424 if (shutdown_after_lock_) {
423 shutdown_after_lock_ = false; 425 shutdown_after_lock_ = false;
424 StartLockToShutdownTimer(); 426 StartLockToShutdownTimer();
425 } 427 }
426 } 428 }
427 429
428 void SessionStateControllerImpl2::UnlockAnimationAfterUIDestroyedFinished() { 430 void SessionLockStateControllerImpl2::
431 UnlockAnimationAfterUIDestroyedFinished() {
429 RestoreUnlockedProperties(); 432 RestoreUnlockedProperties();
430 } 433 }
431 434
432 void SessionStateControllerImpl2::StartImmediatePreLockAnimation( 435 void SessionLockStateControllerImpl2::StartImmediatePreLockAnimation(
433 bool request_lock_on_completion) { 436 bool request_lock_on_completion) {
434 animating_lock_ = true; 437 animating_lock_ = true;
435 438
436 StoreUnlockedProperties(); 439 StoreUnlockedProperties();
437 440
438 base::Closure next_animation_starter = 441 base::Closure next_animation_starter =
439 base::Bind(&SessionStateControllerImpl2::PreLockAnimationFinished, 442 base::Bind(&SessionLockStateControllerImpl2::PreLockAnimationFinished,
440 base::Unretained(this), request_lock_on_completion); 443 base::Unretained(this), request_lock_on_completion);
441 AnimationFinishedObserver* observer = 444 AnimationFinishedObserver* observer =
442 new AnimationFinishedObserver(next_animation_starter); 445 new AnimationFinishedObserver(next_animation_starter);
443 446
444 observer->Pause(); 447 observer->Pause();
445 448
446 animator_->StartAnimationWithObserver( 449 animator_->StartAnimationWithObserver(
447 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 450 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
448 internal::SessionStateAnimator::ANIMATION_LIFT, 451 internal::SessionStateAnimator::ANIMATION_LIFT,
449 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, 452 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS,
450 observer); 453 observer);
451 animator_->StartAnimationWithObserver( 454 animator_->StartAnimationWithObserver(
452 internal::SessionStateAnimator::LAUNCHER, 455 internal::SessionStateAnimator::LAUNCHER,
453 internal::SessionStateAnimator::ANIMATION_FADE_OUT, 456 internal::SessionStateAnimator::ANIMATION_FADE_OUT,
454 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, 457 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS,
455 observer); 458 observer);
456 // Hide the screen locker containers so we can raise them later. 459 // Hide the screen locker containers so we can raise them later.
457 animator_->StartAnimation( 460 animator_->StartAnimation(
458 internal::SessionStateAnimator::LOCK_SCREEN_CONTAINERS, 461 internal::SessionStateAnimator::LOCK_SCREEN_CONTAINERS,
459 internal::SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY, 462 internal::SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY,
460 internal::SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); 463 internal::SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE);
461 AnimateBackgroundAppearanceIfNecessary( 464 AnimateBackgroundAppearanceIfNecessary(
462 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, 465 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS,
463 observer); 466 observer);
464 467
465 observer->Unpause(); 468 observer->Unpause();
466 469
467 DispatchCancelMode(); 470 DispatchCancelMode();
468 FOR_EACH_OBSERVER(SessionStateObserver, observers_, 471 FOR_EACH_OBSERVER(SessionLockStateObserver, observers_,
469 OnSessionStateEvent(SessionStateObserver::EVENT_LOCK_ANIMATION_STARTED)); 472 OnSessionLockStateEvent(
473 SessionLockStateObserver::EVENT_LOCK_ANIMATION_STARTED));
470 } 474 }
471 475
472 void SessionStateControllerImpl2::StartCancellablePreLockAnimation() { 476 void SessionLockStateControllerImpl2::StartCancellablePreLockAnimation() {
473 animating_lock_ = true; 477 animating_lock_ = true;
474 StoreUnlockedProperties(); 478 StoreUnlockedProperties();
475 479
476 base::Closure next_animation_starter = 480 base::Closure next_animation_starter =
477 base::Bind(&SessionStateControllerImpl2::PreLockAnimationFinished, 481 base::Bind(&SessionLockStateControllerImpl2::PreLockAnimationFinished,
478 base::Unretained(this), true /* request_lock */); 482 base::Unretained(this), true /* request_lock */);
479 AnimationFinishedObserver* observer = 483 AnimationFinishedObserver* observer =
480 new AnimationFinishedObserver(next_animation_starter); 484 new AnimationFinishedObserver(next_animation_starter);
481 485
482 observer->Pause(); 486 observer->Pause();
483 487
484 animator_->StartAnimationWithObserver( 488 animator_->StartAnimationWithObserver(
485 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 489 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
486 internal::SessionStateAnimator::ANIMATION_LIFT, 490 internal::SessionStateAnimator::ANIMATION_LIFT,
487 internal::SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, 491 internal::SessionStateAnimator::ANIMATION_SPEED_UNDOABLE,
488 observer); 492 observer);
489 animator_->StartAnimationWithObserver( 493 animator_->StartAnimationWithObserver(
490 internal::SessionStateAnimator::LAUNCHER, 494 internal::SessionStateAnimator::LAUNCHER,
491 internal::SessionStateAnimator::ANIMATION_FADE_OUT, 495 internal::SessionStateAnimator::ANIMATION_FADE_OUT,
492 internal::SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, 496 internal::SessionStateAnimator::ANIMATION_SPEED_UNDOABLE,
493 observer); 497 observer);
494 // Hide the screen locker containers so we can raise them later. 498 // Hide the screen locker containers so we can raise them later.
495 animator_->StartAnimation( 499 animator_->StartAnimation(
496 internal::SessionStateAnimator::LOCK_SCREEN_CONTAINERS, 500 internal::SessionStateAnimator::LOCK_SCREEN_CONTAINERS,
497 internal::SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY, 501 internal::SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY,
498 internal::SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); 502 internal::SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE);
499 AnimateBackgroundAppearanceIfNecessary( 503 AnimateBackgroundAppearanceIfNecessary(
500 internal::SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, 504 internal::SessionStateAnimator::ANIMATION_SPEED_UNDOABLE,
501 observer); 505 observer);
502 506
503 DispatchCancelMode(); 507 DispatchCancelMode();
504 FOR_EACH_OBSERVER(SessionStateObserver, observers_, 508 FOR_EACH_OBSERVER(SessionLockStateObserver, observers_,
505 OnSessionStateEvent( 509 OnSessionLockStateEvent(
506 SessionStateObserver::EVENT_PRELOCK_ANIMATION_STARTED)); 510 SessionLockStateObserver::EVENT_PRELOCK_ANIMATION_STARTED));
507 observer->Unpause(); 511 observer->Unpause();
508 } 512 }
509 513
510 void SessionStateControllerImpl2::CancelPreLockAnimation() { 514 void SessionLockStateControllerImpl2::CancelPreLockAnimation() {
511 base::Closure next_animation_starter = 515 base::Closure next_animation_starter =
512 base::Bind(&SessionStateControllerImpl2::LockAnimationCancelled, 516 base::Bind(&SessionLockStateControllerImpl2::LockAnimationCancelled,
513 base::Unretained(this)); 517 base::Unretained(this));
514 AnimationFinishedObserver* observer = 518 AnimationFinishedObserver* observer =
515 new AnimationFinishedObserver(next_animation_starter); 519 new AnimationFinishedObserver(next_animation_starter);
516 520
517 observer->Pause(); 521 observer->Pause();
518 522
519 animator_->StartAnimationWithObserver( 523 animator_->StartAnimationWithObserver(
520 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 524 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
521 internal::SessionStateAnimator::ANIMATION_UNDO_LIFT, 525 internal::SessionStateAnimator::ANIMATION_UNDO_LIFT,
522 internal::SessionStateAnimator::ANIMATION_SPEED_UNDO_MOVE_WINDOWS, 526 internal::SessionStateAnimator::ANIMATION_SPEED_UNDO_MOVE_WINDOWS,
523 observer); 527 observer);
524 animator_->StartAnimationWithObserver( 528 animator_->StartAnimationWithObserver(
525 internal::SessionStateAnimator::LAUNCHER, 529 internal::SessionStateAnimator::LAUNCHER,
526 internal::SessionStateAnimator::ANIMATION_FADE_IN, 530 internal::SessionStateAnimator::ANIMATION_FADE_IN,
527 internal::SessionStateAnimator::ANIMATION_SPEED_UNDO_MOVE_WINDOWS, 531 internal::SessionStateAnimator::ANIMATION_SPEED_UNDO_MOVE_WINDOWS,
528 observer); 532 observer);
529 AnimateBackgroundHidingIfNecessary( 533 AnimateBackgroundHidingIfNecessary(
530 internal::SessionStateAnimator::ANIMATION_SPEED_UNDO_MOVE_WINDOWS, 534 internal::SessionStateAnimator::ANIMATION_SPEED_UNDO_MOVE_WINDOWS,
531 observer); 535 observer);
532 536
533 observer->Unpause(); 537 observer->Unpause();
534 } 538 }
535 539
536 void SessionStateControllerImpl2::StartPostLockAnimation() { 540 void SessionLockStateControllerImpl2::StartPostLockAnimation() {
537 base::Closure next_animation_starter = 541 base::Closure next_animation_starter =
538 base::Bind(&SessionStateControllerImpl2::PostLockAnimationFinished, 542 base::Bind(&SessionLockStateControllerImpl2::PostLockAnimationFinished,
539 base::Unretained(this)); 543 base::Unretained(this));
540 544
541 AnimationFinishedObserver* observer = 545 AnimationFinishedObserver* observer =
542 new AnimationFinishedObserver(next_animation_starter); 546 new AnimationFinishedObserver(next_animation_starter);
543 547
544 observer->Pause(); 548 observer->Pause();
545 animator_->StartAnimationWithObserver( 549 animator_->StartAnimationWithObserver(
546 internal::SessionStateAnimator::LOCK_SCREEN_CONTAINERS, 550 internal::SessionStateAnimator::LOCK_SCREEN_CONTAINERS,
547 internal::SessionStateAnimator::ANIMATION_RAISE_TO_SCREEN, 551 internal::SessionStateAnimator::ANIMATION_RAISE_TO_SCREEN,
548 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, 552 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS,
549 observer); 553 observer);
550 observer->Unpause(); 554 observer->Unpause();
551 } 555 }
552 556
553 void SessionStateControllerImpl2::StartUnlockAnimationBeforeUIDestroyed( 557 void SessionLockStateControllerImpl2::StartUnlockAnimationBeforeUIDestroyed(
554 base::Closure& callback) { 558 base::Closure& callback) {
555 animator_->StartAnimationWithCallback( 559 animator_->StartAnimationWithCallback(
556 internal::SessionStateAnimator::LOCK_SCREEN_CONTAINERS, 560 internal::SessionStateAnimator::LOCK_SCREEN_CONTAINERS,
557 internal::SessionStateAnimator::ANIMATION_LIFT, 561 internal::SessionStateAnimator::ANIMATION_LIFT,
558 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, 562 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS,
559 callback); 563 callback);
560 } 564 }
561 565
562 void SessionStateControllerImpl2::StartUnlockAnimationAfterUIDestroyed() { 566 void SessionLockStateControllerImpl2::StartUnlockAnimationAfterUIDestroyed() {
563 base::Closure next_animation_starter = 567 base::Closure next_animation_starter =
564 base::Bind( 568 base::Bind(
565 &SessionStateControllerImpl2::UnlockAnimationAfterUIDestroyedFinished, 569 &SessionLockStateControllerImpl2::
566 base::Unretained(this)); 570 UnlockAnimationAfterUIDestroyedFinished,
571 base::Unretained(this));
567 572
568 AnimationFinishedObserver* observer = 573 AnimationFinishedObserver* observer =
569 new AnimationFinishedObserver(next_animation_starter); 574 new AnimationFinishedObserver(next_animation_starter);
570 575
571 observer->Pause(); 576 observer->Pause();
572 577
573 animator_->StartAnimationWithObserver( 578 animator_->StartAnimationWithObserver(
574 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS, 579 internal::SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS,
575 internal::SessionStateAnimator::ANIMATION_DROP, 580 internal::SessionStateAnimator::ANIMATION_DROP,
576 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, 581 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS,
577 observer); 582 observer);
578 animator_->StartAnimationWithObserver( 583 animator_->StartAnimationWithObserver(
579 internal::SessionStateAnimator::LAUNCHER, 584 internal::SessionStateAnimator::LAUNCHER,
580 internal::SessionStateAnimator::ANIMATION_FADE_IN, 585 internal::SessionStateAnimator::ANIMATION_FADE_IN,
581 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, 586 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS,
582 observer); 587 observer);
583 AnimateBackgroundHidingIfNecessary( 588 AnimateBackgroundHidingIfNecessary(
584 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS, 589 internal::SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS,
585 observer); 590 observer);
586 observer->Unpause(); 591 observer->Unpause();
587 } 592 }
588 593
589 void SessionStateControllerImpl2::StoreUnlockedProperties() { 594 void SessionLockStateControllerImpl2::StoreUnlockedProperties() {
590 if (!unlocked_properties_) { 595 if (!unlocked_properties_) {
591 unlocked_properties_.reset(new UnlockedStateProperties()); 596 unlocked_properties_.reset(new UnlockedStateProperties());
592 unlocked_properties_->background_is_hidden = IsBackgroundHidden(); 597 unlocked_properties_->background_is_hidden = IsBackgroundHidden();
593 } 598 }
594 if (unlocked_properties_->background_is_hidden) { 599 if (unlocked_properties_->background_is_hidden) {
595 // Hide background so that it can be animated later. 600 // Hide background so that it can be animated later.
596 animator_->StartAnimation( 601 animator_->StartAnimation(
597 internal::SessionStateAnimator::DESKTOP_BACKGROUND, 602 internal::SessionStateAnimator::DESKTOP_BACKGROUND,
598 internal::SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY, 603 internal::SessionStateAnimator::ANIMATION_HIDE_IMMEDIATELY,
599 internal::SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); 604 internal::SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE);
600 ShowBackground(); 605 ShowBackground();
601 } 606 }
602 } 607 }
603 608
604 void SessionStateControllerImpl2::RestoreUnlockedProperties() { 609 void SessionLockStateControllerImpl2::RestoreUnlockedProperties() {
605 if (!unlocked_properties_) 610 if (!unlocked_properties_)
606 return; 611 return;
607 if (unlocked_properties_->background_is_hidden) { 612 if (unlocked_properties_->background_is_hidden) {
608 HideBackground(); 613 HideBackground();
609 // Restore background visibility. 614 // Restore background visibility.
610 animator_->StartAnimation( 615 animator_->StartAnimation(
611 internal::SessionStateAnimator::DESKTOP_BACKGROUND, 616 internal::SessionStateAnimator::DESKTOP_BACKGROUND,
612 internal::SessionStateAnimator::ANIMATION_FADE_IN, 617 internal::SessionStateAnimator::ANIMATION_FADE_IN,
613 internal::SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE); 618 internal::SessionStateAnimator::ANIMATION_SPEED_IMMEDIATE);
614 } 619 }
615 unlocked_properties_.reset(); 620 unlocked_properties_.reset();
616 } 621 }
617 622
618 void SessionStateControllerImpl2::AnimateBackgroundAppearanceIfNecessary( 623 void SessionLockStateControllerImpl2::AnimateBackgroundAppearanceIfNecessary(
619 internal::SessionStateAnimator::AnimationSpeed speed, 624 internal::SessionStateAnimator::AnimationSpeed speed,
620 ui::LayerAnimationObserver* observer) { 625 ui::LayerAnimationObserver* observer) {
621 if (unlocked_properties_.get() && 626 if (unlocked_properties_.get() &&
622 unlocked_properties_->background_is_hidden) { 627 unlocked_properties_->background_is_hidden) {
623 animator_->StartAnimationWithObserver( 628 animator_->StartAnimationWithObserver(
624 internal::SessionStateAnimator::DESKTOP_BACKGROUND, 629 internal::SessionStateAnimator::DESKTOP_BACKGROUND,
625 internal::SessionStateAnimator::ANIMATION_FADE_IN, 630 internal::SessionStateAnimator::ANIMATION_FADE_IN,
626 speed, 631 speed,
627 observer); 632 observer);
628 } 633 }
629 } 634 }
630 635
631 void SessionStateControllerImpl2::AnimateBackgroundHidingIfNecessary( 636 void SessionLockStateControllerImpl2::AnimateBackgroundHidingIfNecessary(
632 internal::SessionStateAnimator::AnimationSpeed speed, 637 internal::SessionStateAnimator::AnimationSpeed speed,
633 ui::LayerAnimationObserver* observer) { 638 ui::LayerAnimationObserver* observer) {
634 if (unlocked_properties_.get() && 639 if (unlocked_properties_.get() &&
635 unlocked_properties_->background_is_hidden) { 640 unlocked_properties_->background_is_hidden) {
636 animator_->StartAnimationWithObserver( 641 animator_->StartAnimationWithObserver(
637 internal::SessionStateAnimator::DESKTOP_BACKGROUND, 642 internal::SessionStateAnimator::DESKTOP_BACKGROUND,
638 internal::SessionStateAnimator::ANIMATION_FADE_OUT, 643 internal::SessionStateAnimator::ANIMATION_FADE_OUT,
639 speed, 644 speed,
640 observer); 645 observer);
641 } 646 }
642 } 647 }
643 648
644 } // namespace ash 649 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698