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

Side by Side Diff: chrome/browser/signin/easy_unlock_service.cc

Issue 1165323004: We should use UserID object to identify users instead of username. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/signin/easy_unlock_service.h" 5 #include "chrome/browser/signin/easy_unlock_service.h"
6 6
7 #include "apps/app_lifetime_monitor.h" 7 #include "apps/app_lifetime_monitor.h"
8 #include "apps/app_lifetime_monitor_factory.h" 8 #include "apps/app_lifetime_monitor_factory.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 13 matching lines...) Expand all
24 #include "chrome/browser/signin/easy_unlock_service_observer.h" 24 #include "chrome/browser/signin/easy_unlock_service_observer.h"
25 #include "chrome/browser/signin/proximity_auth_facade.h" 25 #include "chrome/browser/signin/proximity_auth_facade.h"
26 #include "chrome/common/chrome_switches.h" 26 #include "chrome/common/chrome_switches.h"
27 #include "chrome/common/extensions/extension_constants.h" 27 #include "chrome/common/extensions/extension_constants.h"
28 #include "chrome/common/pref_names.h" 28 #include "chrome/common/pref_names.h"
29 #include "components/pref_registry/pref_registry_syncable.h" 29 #include "components/pref_registry/pref_registry_syncable.h"
30 #include "components/proximity_auth/ble/proximity_auth_ble_system.h" 30 #include "components/proximity_auth/ble/proximity_auth_ble_system.h"
31 #include "components/proximity_auth/screenlock_bridge.h" 31 #include "components/proximity_auth/screenlock_bridge.h"
32 #include "components/proximity_auth/switches.h" 32 #include "components/proximity_auth/switches.h"
33 #include "components/user_manager/user.h" 33 #include "components/user_manager/user.h"
34 #include "components/user_manager/user_id.h"
34 #include "device/bluetooth/bluetooth_adapter.h" 35 #include "device/bluetooth/bluetooth_adapter.h"
35 #include "device/bluetooth/bluetooth_adapter_factory.h" 36 #include "device/bluetooth/bluetooth_adapter_factory.h"
36 37
37 #if defined(OS_CHROMEOS) 38 #if defined(OS_CHROMEOS)
38 #include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.h" 39 #include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.h"
39 #include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager. h" 40 #include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager. h"
40 #include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager_ factory.h" 41 #include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager_ factory.h"
41 #include "chrome/browser/chromeos/login/session/user_session_manager.h" 42 #include "chrome/browser/chromeos/login/session/user_session_manager.h"
42 #include "chrome/browser/chromeos/profiles/profile_helper.h" 43 #include "chrome/browser/chromeos/profiles/profile_helper.h"
43 #include "chromeos/dbus/dbus_thread_manager.h" 44 #include "chromeos/dbus/dbus_thread_manager.h"
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 void EasyUnlockService::RegisterPrefs(PrefRegistrySimple* registry) { 279 void EasyUnlockService::RegisterPrefs(PrefRegistrySimple* registry) {
279 registry->RegisterStringPref(prefs::kEasyUnlockDeviceId, std::string()); 280 registry->RegisterStringPref(prefs::kEasyUnlockDeviceId, std::string());
280 registry->RegisterDictionaryPref(prefs::kEasyUnlockHardlockState); 281 registry->RegisterDictionaryPref(prefs::kEasyUnlockHardlockState);
281 registry->RegisterDictionaryPref(prefs::kEasyUnlockLocalStateUserPrefs); 282 registry->RegisterDictionaryPref(prefs::kEasyUnlockLocalStateUserPrefs);
282 #if defined(OS_CHROMEOS) 283 #if defined(OS_CHROMEOS)
283 EasyUnlockTpmKeyManager::RegisterLocalStatePrefs(registry); 284 EasyUnlockTpmKeyManager::RegisterLocalStatePrefs(registry);
284 #endif 285 #endif
285 } 286 }
286 287
287 // static 288 // static
288 void EasyUnlockService::ResetLocalStateForUser(const std::string& user_id) { 289 void EasyUnlockService::ResetLocalStateForUser(const user_manager::UserID& user_ id) {
289 DCHECK(!user_id.empty()); 290 DCHECK(!user_id.empty());
290 291
291 PrefService* local_state = GetLocalState(); 292 PrefService* local_state = GetLocalState();
292 if (!local_state) 293 if (!local_state)
293 return; 294 return;
294 295
295 DictionaryPrefUpdate update(local_state, prefs::kEasyUnlockHardlockState); 296 DictionaryPrefUpdate update(local_state, prefs::kEasyUnlockHardlockState);
296 update->RemoveWithoutPathExpansion(user_id, NULL); 297 update->RemoveWithoutPathExpansion(user_id.GetUserEmail(), NULL);
297 298
298 #if defined(OS_CHROMEOS) 299 #if defined(OS_CHROMEOS)
299 EasyUnlockTpmKeyManager::ResetLocalStateForUser(user_id); 300 EasyUnlockTpmKeyManager::ResetLocalStateForUser(user_id);
300 #endif 301 #endif
301 } 302 }
302 303
303 // static 304 // static
304 EasyUnlockService::UserSettings EasyUnlockService::GetUserSettings( 305 EasyUnlockService::UserSettings EasyUnlockService::GetUserSettings(
305 const std::string& user_id) { 306 const user_manager::UserID& user_id) {
306 DCHECK(!user_id.empty()); 307 DCHECK(!user_id.empty());
307 UserSettings user_settings; 308 UserSettings user_settings;
308 309
309 PrefService* local_state = GetLocalState(); 310 PrefService* local_state = GetLocalState();
310 if (!local_state) 311 if (!local_state)
311 return user_settings; 312 return user_settings;
312 313
313 const base::DictionaryValue* all_user_prefs_dict = 314 const base::DictionaryValue* all_user_prefs_dict =
314 local_state->GetDictionary(prefs::kEasyUnlockLocalStateUserPrefs); 315 local_state->GetDictionary(prefs::kEasyUnlockLocalStateUserPrefs);
315 if (!all_user_prefs_dict) 316 if (!all_user_prefs_dict)
316 return user_settings; 317 return user_settings;
317 318
318 const base::DictionaryValue* user_prefs_dict; 319 const base::DictionaryValue* user_prefs_dict;
319 if (!all_user_prefs_dict->GetDictionaryWithoutPathExpansion(user_id, 320 if (!all_user_prefs_dict->GetDictionaryWithoutPathExpansion(user_id.GetUserEma il(),
320 &user_prefs_dict)) 321 &user_prefs_dict))
321 return user_settings; 322 return user_settings;
322 323
323 user_prefs_dict->GetBooleanWithoutPathExpansion( 324 user_prefs_dict->GetBooleanWithoutPathExpansion(
324 prefs::kEasyUnlockProximityRequired, 325 prefs::kEasyUnlockProximityRequired,
325 &user_settings.require_close_proximity); 326 &user_settings.require_close_proximity);
326 327
327 return user_settings; 328 return user_settings;
328 } 329 }
329 330
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 const base::ListValue* devices = GetRemoteDevices(); 378 const base::ListValue* devices = GetRemoteDevices();
378 return devices && !devices->empty(); 379 return devices && !devices->empty();
379 } 380 }
380 381
381 void EasyUnlockService::OpenSetupApp() { 382 void EasyUnlockService::OpenSetupApp() {
382 app_manager_->LaunchSetup(); 383 app_manager_->LaunchSetup();
383 } 384 }
384 385
385 void EasyUnlockService::SetHardlockState( 386 void EasyUnlockService::SetHardlockState(
386 EasyUnlockScreenlockStateHandler::HardlockState state) { 387 EasyUnlockScreenlockStateHandler::HardlockState state) {
387 const std::string user_id = GetUserEmail(); 388 const user_manager::UserID user_id = GetUserID();
388 if (user_id.empty()) 389 if (user_id.empty())
389 return; 390 return;
390 391
391 if (state == GetHardlockState()) 392 if (state == GetHardlockState())
392 return; 393 return;
393 394
394 SetHardlockStateForUser(user_id, state); 395 SetHardlockStateForUser(user_id, state);
395 } 396 }
396 397
397 EasyUnlockScreenlockStateHandler::HardlockState 398 EasyUnlockScreenlockStateHandler::HardlockState
398 EasyUnlockService::GetHardlockState() const { 399 EasyUnlockService::GetHardlockState() const {
399 EasyUnlockScreenlockStateHandler::HardlockState state; 400 EasyUnlockScreenlockStateHandler::HardlockState state;
400 if (GetPersistedHardlockState(&state)) 401 if (GetPersistedHardlockState(&state))
401 return state; 402 return state;
402 403
403 return EasyUnlockScreenlockStateHandler::NO_HARDLOCK; 404 return EasyUnlockScreenlockStateHandler::NO_HARDLOCK;
404 } 405 }
405 406
406 bool EasyUnlockService::GetPersistedHardlockState( 407 bool EasyUnlockService::GetPersistedHardlockState(
407 EasyUnlockScreenlockStateHandler::HardlockState* state) const { 408 EasyUnlockScreenlockStateHandler::HardlockState* state) const {
408 std::string user_id = GetUserEmail(); 409 const user_manager::UserID user_id = GetUserID();
409 if (user_id.empty()) 410 if (user_id.empty())
410 return false; 411 return false;
411 412
412 PrefService* local_state = GetLocalState(); 413 PrefService* local_state = GetLocalState();
413 if (!local_state) 414 if (!local_state)
414 return false; 415 return false;
415 416
416 const base::DictionaryValue* dict = 417 const base::DictionaryValue* dict =
417 local_state->GetDictionary(prefs::kEasyUnlockHardlockState); 418 local_state->GetDictionary(prefs::kEasyUnlockHardlockState);
418 int state_int; 419 int state_int;
419 if (dict && dict->GetIntegerWithoutPathExpansion(user_id, &state_int)) { 420 if (dict && dict->GetIntegerWithoutPathExpansion(user_id.GetUserEmail(), &stat e_int)) {
420 *state = 421 *state =
421 static_cast<EasyUnlockScreenlockStateHandler::HardlockState>(state_int); 422 static_cast<EasyUnlockScreenlockStateHandler::HardlockState>(state_int);
422 return true; 423 return true;
423 } 424 }
424 425
425 return false; 426 return false;
426 } 427 }
427 428
428 void EasyUnlockService::ShowInitialUserState() { 429 void EasyUnlockService::ShowInitialUserState() {
429 if (!GetScreenlockStateHandler()) 430 if (!GetScreenlockStateHandler())
(...skipping 11 matching lines...) Expand all
441 screenlock_state_handler_->MaybeShowHardlockUI(); 442 screenlock_state_handler_->MaybeShowHardlockUI();
442 } 443 }
443 } 444 }
444 445
445 EasyUnlockScreenlockStateHandler* 446 EasyUnlockScreenlockStateHandler*
446 EasyUnlockService::GetScreenlockStateHandler() { 447 EasyUnlockService::GetScreenlockStateHandler() {
447 if (!IsAllowed()) 448 if (!IsAllowed())
448 return NULL; 449 return NULL;
449 if (!screenlock_state_handler_) { 450 if (!screenlock_state_handler_) {
450 screenlock_state_handler_.reset(new EasyUnlockScreenlockStateHandler( 451 screenlock_state_handler_.reset(new EasyUnlockScreenlockStateHandler(
451 GetUserEmail(), GetHardlockState(), GetScreenlockBridgeInstance())); 452 GetUserID(), GetHardlockState(), GetScreenlockBridgeInstance()));
452 } 453 }
453 return screenlock_state_handler_.get(); 454 return screenlock_state_handler_.get();
454 } 455 }
455 456
456 bool EasyUnlockService::UpdateScreenlockState(ScreenlockState state) { 457 bool EasyUnlockService::UpdateScreenlockState(ScreenlockState state) {
457 EasyUnlockScreenlockStateHandler* handler = GetScreenlockStateHandler(); 458 EasyUnlockScreenlockStateHandler* handler = GetScreenlockStateHandler();
458 if (!handler) 459 if (!handler)
459 return false; 460 return false;
460 461
461 handler->ChangeState(state); 462 handler->ChangeState(state);
462 463
463 if (state == ScreenlockState::AUTHENTICATED) { 464 if (state == ScreenlockState::AUTHENTICATED) {
464 #if defined(OS_CHROMEOS) 465 #if defined(OS_CHROMEOS)
465 if (power_monitor_) 466 if (power_monitor_)
466 power_monitor_->RecordStartUpTime(); 467 power_monitor_->RecordStartUpTime();
467 #endif 468 #endif
468 } else if (auth_attempt_.get()) { 469 } else if (auth_attempt_.get()) {
469 // Clean up existing auth attempt if we can no longer authenticate the 470 // Clean up existing auth attempt if we can no longer authenticate the
470 // remote device. 471 // remote device.
471 auth_attempt_.reset(); 472 auth_attempt_.reset();
472 473
473 if (!handler->InStateValidOnRemoteAuthFailure()) 474 if (!handler->InStateValidOnRemoteAuthFailure())
474 HandleAuthFailure(GetUserEmail()); 475 HandleAuthFailure(GetUserID());
475 } 476 }
476 477
477 FOR_EACH_OBSERVER( 478 FOR_EACH_OBSERVER(
478 EasyUnlockServiceObserver, observers_, OnScreenlockStateChanged(state)); 479 EasyUnlockServiceObserver, observers_, OnScreenlockStateChanged(state));
479 return true; 480 return true;
480 } 481 }
481 482
482 ScreenlockState EasyUnlockService::GetScreenlockState() { 483 ScreenlockState EasyUnlockService::GetScreenlockState() {
483 EasyUnlockScreenlockStateHandler* handler = GetScreenlockStateHandler(); 484 EasyUnlockScreenlockStateHandler* handler = GetScreenlockStateHandler();
484 if (!handler) 485 if (!handler)
485 return ScreenlockState::INACTIVE; 486 return ScreenlockState::INACTIVE;
486 487
487 return handler->state(); 488 return handler->state();
488 } 489 }
489 490
490 void EasyUnlockService::AttemptAuth(const std::string& user_id) { 491 void EasyUnlockService::AttemptAuth(const user_manager::UserID& user_id) {
491 AttemptAuth(user_id, AttemptAuthCallback()); 492 AttemptAuth(user_id, AttemptAuthCallback());
492 } 493 }
493 494
494 void EasyUnlockService::AttemptAuth(const std::string& user_id, 495 void EasyUnlockService::AttemptAuth(const user_manager::UserID& user_id,
495 const AttemptAuthCallback& callback) { 496 const AttemptAuthCallback& callback) {
496 const EasyUnlockAuthAttempt::Type auth_attempt_type = 497 const EasyUnlockAuthAttempt::Type auth_attempt_type =
497 GetType() == TYPE_REGULAR ? EasyUnlockAuthAttempt::TYPE_UNLOCK 498 GetType() == TYPE_REGULAR ? EasyUnlockAuthAttempt::TYPE_UNLOCK
498 : EasyUnlockAuthAttempt::TYPE_SIGNIN; 499 : EasyUnlockAuthAttempt::TYPE_SIGNIN;
499 const std::string user_email = GetUserEmail(); 500 const user_manager::UserID current_user_id = GetUserID();
500 if (user_email.empty()) { 501 if (current_user_id.empty()) {
501 LOG(ERROR) << "Empty user email. Refresh token might go bad."; 502 LOG(ERROR) << "Empty user email. Refresh token might go bad.";
502 if (!callback.is_null()) { 503 if (!callback.is_null()) {
503 const bool kFailure = false; 504 const bool kFailure = false;
504 callback.Run(auth_attempt_type, kFailure, user_id, std::string(), 505 callback.Run(auth_attempt_type, kFailure, user_id, std::string(),
505 std::string()); 506 std::string());
506 } 507 }
507 return; 508 return;
508 } 509 }
509 510
510 CHECK_EQ(GetUserEmail(), user_id); 511 CHECK_EQ(GetUserID(), user_id);
511 512
512 auth_attempt_.reset(new EasyUnlockAuthAttempt(app_manager_.get(), user_id, 513 auth_attempt_.reset(new EasyUnlockAuthAttempt(app_manager_.get(), user_id,
513 auth_attempt_type, callback)); 514 auth_attempt_type, callback));
514 if (!auth_attempt_->Start()) 515 if (!auth_attempt_->Start())
515 auth_attempt_.reset(); 516 auth_attempt_.reset();
516 } 517 }
517 518
518 void EasyUnlockService::FinalizeUnlock(bool success) { 519 void EasyUnlockService::FinalizeUnlock(bool success) {
519 if (!auth_attempt_.get()) 520 if (!auth_attempt_.get())
520 return; 521 return;
521 522
522 this->OnWillFinalizeUnlock(success); 523 this->OnWillFinalizeUnlock(success);
523 auth_attempt_->FinalizeUnlock(GetUserEmail(), success); 524 auth_attempt_->FinalizeUnlock(GetUserID(), success);
524 auth_attempt_.reset(); 525 auth_attempt_.reset();
525 // TODO(isherman): If observing screen unlock events, is there a race 526 // TODO(isherman): If observing screen unlock events, is there a race
526 // condition in terms of reading the service's state vs. the app setting the 527 // condition in terms of reading the service's state vs. the app setting the
527 // state? 528 // state?
528 529
529 // Make sure that the lock screen is updated on failure. 530 // Make sure that the lock screen is updated on failure.
530 if (!success) { 531 if (!success) {
531 RecordEasyUnlockScreenUnlockEvent(EASY_UNLOCK_FAILURE); 532 RecordEasyUnlockScreenUnlockEvent(EASY_UNLOCK_FAILURE);
532 HandleAuthFailure(GetUserEmail()); 533 HandleAuthFailure(GetUserID());
533 } 534 }
534 } 535 }
535 536
536 void EasyUnlockService::FinalizeSignin(const std::string& key) { 537 void EasyUnlockService::FinalizeSignin(const std::string& key) {
537 if (!auth_attempt_.get()) 538 if (!auth_attempt_.get())
538 return; 539 return;
539 std::string wrapped_secret = GetWrappedSecret(); 540 std::string wrapped_secret = GetWrappedSecret();
540 if (!wrapped_secret.empty()) 541 if (!wrapped_secret.empty())
541 auth_attempt_->FinalizeSignin(GetUserEmail(), wrapped_secret, key); 542 auth_attempt_->FinalizeSignin(GetUserID(), wrapped_secret, key);
542 auth_attempt_.reset(); 543 auth_attempt_.reset();
543 544
544 // Processing empty key is equivalent to auth cancellation. In this case the 545 // Processing empty key is equivalent to auth cancellation. In this case the
545 // signin request will not actually be processed by login stack, so the lock 546 // signin request will not actually be processed by login stack, so the lock
546 // screen state should be set from here. 547 // screen state should be set from here.
547 if (key.empty()) 548 if (key.empty())
548 HandleAuthFailure(GetUserEmail()); 549 HandleAuthFailure(GetUserID());
549 } 550 }
550 551
551 void EasyUnlockService::HandleAuthFailure(const std::string& user_id) { 552 void EasyUnlockService::HandleAuthFailure(const user_manager::UserID& user_id) {
552 if (user_id != GetUserEmail()) 553 if (user_id != GetUserID())
553 return; 554 return;
554 555
555 if (!screenlock_state_handler_.get()) 556 if (!screenlock_state_handler_.get())
556 return; 557 return;
557 558
558 screenlock_state_handler_->SetHardlockState( 559 screenlock_state_handler_->SetHardlockState(
559 EasyUnlockScreenlockStateHandler::LOGIN_FAILED); 560 EasyUnlockScreenlockStateHandler::LOGIN_FAILED);
560 } 561 }
561 562
562 void EasyUnlockService::CheckCryptohomeKeysAndMaybeHardlock() { 563 void EasyUnlockService::CheckCryptohomeKeysAndMaybeHardlock() {
563 #if defined(OS_CHROMEOS) 564 #if defined(OS_CHROMEOS)
564 std::string user_id = GetUserEmail(); 565 const user_manager::UserID user_id = GetUserID();
565 if (user_id.empty()) 566 if (user_id.empty())
566 return; 567 return;
567 568
568 const base::ListValue* device_list = GetRemoteDevices(); 569 const base::ListValue* device_list = GetRemoteDevices();
569 std::set<std::string> paired_devices; 570 std::set<std::string> paired_devices;
570 if (device_list) { 571 if (device_list) {
571 chromeos::EasyUnlockDeviceKeyDataList parsed_paired; 572 chromeos::EasyUnlockDeviceKeyDataList parsed_paired;
572 chromeos::EasyUnlockKeyManager::RemoteDeviceListToDeviceDataList( 573 chromeos::EasyUnlockKeyManager::RemoteDeviceListToDeviceDataList(
573 *device_list, &parsed_paired); 574 *device_list, &parsed_paired);
574 for (const auto& device_key_data : parsed_paired) 575 for (const auto& device_key_data : parsed_paired)
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 #endif 682 #endif
682 } 683 }
683 } 684 }
684 } 685 }
685 686
686 void EasyUnlockService::DisableAppWithoutResettingScreenlockState() { 687 void EasyUnlockService::DisableAppWithoutResettingScreenlockState() {
687 app_manager_->DisableAppIfLoaded(); 688 app_manager_->DisableAppIfLoaded();
688 } 689 }
689 690
690 void EasyUnlockService::NotifyUserUpdated() { 691 void EasyUnlockService::NotifyUserUpdated() {
691 std::string user_id = GetUserEmail(); 692 const user_manager::UserID user_id = GetUserID();
692 if (user_id.empty()) 693 if (user_id.empty())
693 return; 694 return;
694 695
695 // Notify the easy unlock app that the user info changed. 696 // Notify the easy unlock app that the user info changed.
696 bool logged_in = GetType() == TYPE_REGULAR; 697 bool logged_in = GetType() == TYPE_REGULAR;
697 bool data_ready = logged_in || GetRemoteDevices() != NULL; 698 bool data_ready = logged_in || GetRemoteDevices() != NULL;
698 app_manager_->SendUserUpdatedEvent(user_id, logged_in, data_ready); 699 app_manager_->SendUserUpdatedEvent(user_id, logged_in, data_ready);
699 } 700 }
700 701
701 void EasyUnlockService::NotifyTurnOffOperationStatusChanged() { 702 void EasyUnlockService::NotifyTurnOffOperationStatusChanged() {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 bttype = BT_NORMAL; 742 bttype = BT_NORMAL;
742 } 743 }
743 #endif 744 #endif
744 } 745 }
745 UMA_HISTOGRAM_ENUMERATION( 746 UMA_HISTOGRAM_ENUMERATION(
746 "EasyUnlock.BluetoothAvailability", bttype, BT_MAX_TYPE); 747 "EasyUnlock.BluetoothAvailability", bttype, BT_MAX_TYPE);
747 } 748 }
748 } 749 }
749 750
750 void EasyUnlockService::SetHardlockStateForUser( 751 void EasyUnlockService::SetHardlockStateForUser(
751 const std::string& user_id, 752 const user_manager::UserID& user_id,
752 EasyUnlockScreenlockStateHandler::HardlockState state) { 753 EasyUnlockScreenlockStateHandler::HardlockState state) {
753 DCHECK(!user_id.empty()); 754 DCHECK(!user_id.empty());
754 755
755 PrefService* local_state = GetLocalState(); 756 PrefService* local_state = GetLocalState();
756 if (!local_state) 757 if (!local_state)
757 return; 758 return;
758 759
759 DictionaryPrefUpdate update(local_state, prefs::kEasyUnlockHardlockState); 760 DictionaryPrefUpdate update(local_state, prefs::kEasyUnlockHardlockState);
760 update->SetIntegerWithoutPathExpansion(user_id, static_cast<int>(state)); 761 update->SetIntegerWithoutPathExpansion(user_id.GetUserEmail(), static_cast<int >(state));
761 762
762 if (GetUserEmail() == user_id) 763 if (GetUserID() == user_id)
763 SetScreenlockHardlockedState(state); 764 SetScreenlockHardlockedState(state);
764 } 765 }
765 766
766 EasyUnlockAuthEvent EasyUnlockService::GetPasswordAuthEvent() const { 767 EasyUnlockAuthEvent EasyUnlockService::GetPasswordAuthEvent() const {
767 DCHECK(IsEnabled()); 768 DCHECK(IsEnabled());
768 769
769 if (GetHardlockState() != EasyUnlockScreenlockStateHandler::NO_HARDLOCK) { 770 if (GetHardlockState() != EasyUnlockScreenlockStateHandler::NO_HARDLOCK) {
770 switch (GetHardlockState()) { 771 switch (GetHardlockState()) {
771 case EasyUnlockScreenlockStateHandler::NO_HARDLOCK: 772 case EasyUnlockScreenlockStateHandler::NO_HARDLOCK:
772 NOTREACHED(); 773 NOTREACHED();
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 return PASSWORD_ENTRY_WITH_AUTHENTICATED_PHONE; 813 return PASSWORD_ENTRY_WITH_AUTHENTICATED_PHONE;
813 } 814 }
814 } 815 }
815 816
816 NOTREACHED(); 817 NOTREACHED();
817 return EASY_UNLOCK_AUTH_EVENT_COUNT; 818 return EASY_UNLOCK_AUTH_EVENT_COUNT;
818 } 819 }
819 820
820 #if defined(OS_CHROMEOS) 821 #if defined(OS_CHROMEOS)
821 void EasyUnlockService::OnCryptohomeKeysFetchedForChecking( 822 void EasyUnlockService::OnCryptohomeKeysFetchedForChecking(
822 const std::string& user_id, 823 const user_manager::UserID& user_id,
823 const std::set<std::string> paired_devices, 824 const std::set<std::string> paired_devices,
824 bool success, 825 bool success,
825 const chromeos::EasyUnlockDeviceKeyDataList& key_data_list) { 826 const chromeos::EasyUnlockDeviceKeyDataList& key_data_list) {
826 DCHECK(!user_id.empty() && !paired_devices.empty()); 827 DCHECK(!user_id.empty() && !paired_devices.empty());
827 828
828 if (!success) { 829 if (!success) {
829 SetHardlockStateForUser(user_id, 830 SetHardlockStateForUser(user_id,
830 EasyUnlockScreenlockStateHandler::NO_PAIRING); 831 EasyUnlockScreenlockStateHandler::NO_PAIRING);
831 return; 832 return;
832 } 833 }
(...skipping 13 matching lines...) Expand all
846 } 847 }
847 #endif 848 #endif
848 849
849 void EasyUnlockService::PrepareForSuspend() { 850 void EasyUnlockService::PrepareForSuspend() {
850 app_manager_->DisableAppIfLoaded(); 851 app_manager_->DisableAppIfLoaded();
851 if (screenlock_state_handler_ && screenlock_state_handler_->IsActive()) 852 if (screenlock_state_handler_ && screenlock_state_handler_->IsActive())
852 UpdateScreenlockState(ScreenlockState::BLUETOOTH_CONNECTING); 853 UpdateScreenlockState(ScreenlockState::BLUETOOTH_CONNECTING);
853 } 854 }
854 855
855 void EasyUnlockService::EnsureTpmKeyPresentIfNeeded() { 856 void EasyUnlockService::EnsureTpmKeyPresentIfNeeded() {
856 if (tpm_key_checked_ || GetType() != TYPE_REGULAR || GetUserEmail().empty() || 857 if (tpm_key_checked_ || GetType() != TYPE_REGULAR || GetUserID().empty() ||
857 GetHardlockState() == EasyUnlockScreenlockStateHandler::NO_PAIRING) { 858 GetHardlockState() == EasyUnlockScreenlockStateHandler::NO_PAIRING) {
858 return; 859 return;
859 } 860 }
860 861
861 #if defined(OS_CHROMEOS) 862 #if defined(OS_CHROMEOS)
862 // If this is called before the session is started, the chances are Chrome 863 // If this is called before the session is started, the chances are Chrome
863 // is restarting in order to apply user flags. Don't check TPM keys in this 864 // is restarting in order to apply user flags. Don't check TPM keys in this
864 // case. 865 // case.
865 if (!user_manager::UserManager::Get() || 866 if (!user_manager::UserManager::Get() ||
866 !user_manager::UserManager::Get()->IsSessionStarted()) 867 !user_manager::UserManager::Get()->IsSessionStarted())
867 return; 868 return;
868 869
869 // TODO(tbarzic): Set check_private_key only if previous sign-in attempt 870 // TODO(tbarzic): Set check_private_key only if previous sign-in attempt
870 // failed. 871 // failed.
871 EasyUnlockTpmKeyManagerFactory::GetInstance()->Get(profile_) 872 EasyUnlockTpmKeyManagerFactory::GetInstance()->Get(profile_)
872 ->PrepareTpmKey(true /* check_private_key */, 873 ->PrepareTpmKey(true /* check_private_key */,
873 base::Closure()); 874 base::Closure());
874 #endif // defined(OS_CHROMEOS) 875 #endif // defined(OS_CHROMEOS)
875 876
876 tpm_key_checked_ = true; 877 tpm_key_checked_ = true;
877 } 878 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698