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

Side by Side Diff: chrome/browser/chromeos/login/screen_locker.cc

Issue 14113053: chrome: Use base::MessageLoop. (Part 3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase again 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 "chrome/browser/chromeos/login/screen_locker.h" 5 #include "chrome/browser/chromeos/login/screen_locker.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "ash/ash_switches.h" 10 #include "ash/ash_switches.h"
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 authentication_capture_->username = user_context.username; 215 authentication_capture_->username = user_context.username;
216 authentication_capture_->pending_requests = pending_requests; 216 authentication_capture_->pending_requests = pending_requests;
217 authentication_capture_->using_oauth = using_oauth; 217 authentication_capture_->using_oauth = using_oauth;
218 218
219 CommandLine* command_line = CommandLine::ForCurrentProcess(); 219 CommandLine* command_line = CommandLine::ForCurrentProcess();
220 if (command_line->HasSwitch(ash::switches::kAshDisableNewLockAnimations)) { 220 if (command_line->HasSwitch(ash::switches::kAshDisableNewLockAnimations)) {
221 UnlockOnLoginSuccess(); 221 UnlockOnLoginSuccess();
222 } else { 222 } else {
223 // Add guard for case when something get broken in call chain to unlock 223 // Add guard for case when something get broken in call chain to unlock
224 // for sure. 224 // for sure.
225 MessageLoop::current()->PostDelayedTask( 225 base::MessageLoop::current()->PostDelayedTask(
226 FROM_HERE, 226 FROM_HERE,
227 base::Bind(&ScreenLocker::UnlockOnLoginSuccess, 227 base::Bind(&ScreenLocker::UnlockOnLoginSuccess,
228 weak_factory_.GetWeakPtr()), 228 weak_factory_.GetWeakPtr()),
229 base::TimeDelta::FromMilliseconds(kUnlockGuardTimeoutMs)); 229 base::TimeDelta::FromMilliseconds(kUnlockGuardTimeoutMs));
230 delegate_->AnimateAuthenticationSuccess(); 230 delegate_->AnimateAuthenticationSuccess();
231 } 231 }
232 } 232 }
233 233
234 void ScreenLocker::UnlockOnLoginSuccess() { 234 void ScreenLocker::UnlockOnLoginSuccess() {
235 DCHECK(MessageLoop::current()->type() == MessageLoop::TYPE_UI); 235 DCHECK(base::MessageLoop::current()->type() == base::MessageLoop::TYPE_UI);
236 if (!authentication_capture_.get()) { 236 if (!authentication_capture_.get()) {
237 LOG(WARNING) << "Call to UnlockOnLoginSuccess without previous " << 237 LOG(WARNING) << "Call to UnlockOnLoginSuccess without previous " <<
238 "authentication success."; 238 "authentication success.";
239 return; 239 return;
240 } 240 }
241 241
242 VLOG(1) << "Calling session manager's UnlockScreen D-Bus method"; 242 VLOG(1) << "Calling session manager's UnlockScreen D-Bus method";
243 DBusThreadManager::Get()->GetSessionManagerClient()->RequestUnlockScreen(); 243 DBusThreadManager::Get()->GetSessionManagerClient()->RequestUnlockScreen();
244 244
245 if (login_status_consumer_) { 245 if (login_status_consumer_) {
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 } 305 }
306 306
307 void ScreenLocker::SetLoginStatusConsumer( 307 void ScreenLocker::SetLoginStatusConsumer(
308 chromeos::LoginStatusConsumer* consumer) { 308 chromeos::LoginStatusConsumer* consumer) {
309 login_status_consumer_ = consumer; 309 login_status_consumer_ = consumer;
310 } 310 }
311 311
312 // static 312 // static
313 void ScreenLocker::Show() { 313 void ScreenLocker::Show() {
314 content::RecordAction(UserMetricsAction("ScreenLocker_Show")); 314 content::RecordAction(UserMetricsAction("ScreenLocker_Show"));
315 DCHECK(MessageLoop::current()->type() == MessageLoop::TYPE_UI); 315 DCHECK(base::MessageLoop::current()->type() == base::MessageLoop::TYPE_UI);
316 316
317 // Check whether the currently logged in user is a guest account and if so, 317 // Check whether the currently logged in user is a guest account and if so,
318 // refuse to lock the screen (crosbug.com/23764). 318 // refuse to lock the screen (crosbug.com/23764).
319 // For a demo user, we should never show the lock screen (crosbug.com/27647). 319 // For a demo user, we should never show the lock screen (crosbug.com/27647).
320 // TODO(flackr): We can allow lock screen for guest accounts when 320 // TODO(flackr): We can allow lock screen for guest accounts when
321 // unlock_on_input is supported by the WebUI screen locker. 321 // unlock_on_input is supported by the WebUI screen locker.
322 if (UserManager::Get()->IsLoggedInAsGuest() || 322 if (UserManager::Get()->IsLoggedInAsGuest() ||
323 UserManager::Get()->IsLoggedInAsDemoUser()) { 323 UserManager::Get()->IsLoggedInAsDemoUser()) {
324 VLOG(1) << "Refusing to lock screen for guest/demo account"; 324 VLOG(1) << "Refusing to lock screen for guest/demo account";
325 return; 325 return;
(...skipping 16 matching lines...) Expand all
342 } else { 342 } else {
343 VLOG(1) << "ScreenLocker " << screen_locker_ << " already exists; " 343 VLOG(1) << "ScreenLocker " << screen_locker_ << " already exists; "
344 << " calling session manager's HandleLockScreenShown D-Bus method"; 344 << " calling session manager's HandleLockScreenShown D-Bus method";
345 DBusThreadManager::Get()->GetSessionManagerClient()-> 345 DBusThreadManager::Get()->GetSessionManagerClient()->
346 NotifyLockScreenShown(); 346 NotifyLockScreenShown();
347 } 347 }
348 } 348 }
349 349
350 // static 350 // static
351 void ScreenLocker::Hide() { 351 void ScreenLocker::Hide() {
352 DCHECK(MessageLoop::current()->type() == MessageLoop::TYPE_UI); 352 DCHECK(base::MessageLoop::current()->type() == base::MessageLoop::TYPE_UI);
353 // For a guest/demo user, screen_locker_ would have never been initialized. 353 // For a guest/demo user, screen_locker_ would have never been initialized.
354 if (UserManager::Get()->IsLoggedInAsGuest() || 354 if (UserManager::Get()->IsLoggedInAsGuest() ||
355 UserManager::Get()->IsLoggedInAsDemoUser()) { 355 UserManager::Get()->IsLoggedInAsDemoUser()) {
356 VLOG(1) << "Refusing to hide lock screen for guest/demo account"; 356 VLOG(1) << "Refusing to hide lock screen for guest/demo account";
357 return; 357 return;
358 } 358 }
359 359
360 DCHECK(screen_locker_); 360 DCHECK(screen_locker_);
361 base::Callback<void(void)> callback = 361 base::Callback<void(void)> callback =
362 base::Bind(&ScreenLocker::ScheduleDeletion); 362 base::Bind(&ScreenLocker::ScheduleDeletion);
363 ash::Shell::GetInstance()->session_state_controller()-> 363 ash::Shell::GetInstance()->session_state_controller()->
364 OnLockScreenHide(callback); 364 OnLockScreenHide(callback);
365 } 365 }
366 366
367 void ScreenLocker::ScheduleDeletion() { 367 void ScreenLocker::ScheduleDeletion() {
368 // Avoid possible multiple calls. 368 // Avoid possible multiple calls.
369 if (screen_locker_ == NULL) 369 if (screen_locker_ == NULL)
370 return; 370 return;
371 VLOG(1) << "Posting task to delete ScreenLocker " << screen_locker_; 371 VLOG(1) << "Posting task to delete ScreenLocker " << screen_locker_;
372 ScreenLocker* screen_locker = screen_locker_; 372 ScreenLocker* screen_locker = screen_locker_;
373 screen_locker_ = NULL; 373 screen_locker_ = NULL;
374 MessageLoopForUI::current()->DeleteSoon(FROM_HERE, screen_locker); 374 base::MessageLoopForUI::current()->DeleteSoon(FROM_HERE, screen_locker);
375 } 375 }
376 376
377 // static 377 // static
378 void ScreenLocker::InitClass() { 378 void ScreenLocker::InitClass() {
379 g_screen_lock_observer.Get(); 379 g_screen_lock_observer.Get();
380 } 380 }
381 381
382 //////////////////////////////////////////////////////////////////////////////// 382 ////////////////////////////////////////////////////////////////////////////////
383 // ScreenLocker, private: 383 // ScreenLocker, private:
384 384
385 ScreenLocker::~ScreenLocker() { 385 ScreenLocker::~ScreenLocker() {
386 VLOG(1) << "Destroying ScreenLocker " << this; 386 VLOG(1) << "Destroying ScreenLocker " << this;
387 DCHECK(MessageLoop::current()->type() == MessageLoop::TYPE_UI); 387 DCHECK(base::MessageLoop::current()->type() == base::MessageLoop::TYPE_UI);
388 388
389 if (authenticator_) 389 if (authenticator_)
390 authenticator_->SetConsumer(NULL); 390 authenticator_->SetConsumer(NULL);
391 ClearErrors(); 391 ClearErrors();
392 392
393 VLOG(1) << "Moving desktop background to unlocked container"; 393 VLOG(1) << "Moving desktop background to unlocked container";
394 ash::Shell::GetInstance()-> 394 ash::Shell::GetInstance()->
395 desktop_background_controller()->MoveDesktopToUnlockedContainer(); 395 desktop_background_controller()->MoveDesktopToUnlockedContainer();
396 396
397 screen_locker_ = NULL; 397 screen_locker_ = NULL;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 content::Details<bool>(&state)); 429 content::Details<bool>(&state));
430 VLOG(1) << "Calling session manager's HandleLockScreenShown D-Bus method"; 430 VLOG(1) << "Calling session manager's HandleLockScreenShown D-Bus method";
431 DBusThreadManager::Get()->GetSessionManagerClient()->NotifyLockScreenShown(); 431 DBusThreadManager::Get()->GetSessionManagerClient()->NotifyLockScreenShown();
432 } 432 }
433 433
434 content::WebUI* ScreenLocker::GetAssociatedWebUI() { 434 content::WebUI* ScreenLocker::GetAssociatedWebUI() {
435 return delegate_->GetAssociatedWebUI(); 435 return delegate_->GetAssociatedWebUI();
436 } 436 }
437 437
438 } // namespace chromeos 438 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698