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

Side by Side Diff: chrome/browser/chromeos/login/session/user_session_manager.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/chromeos/login/session/user_session_manager.h" 5 #include "chrome/browser/chromeos/login/session/user_session_manager.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/base_paths.h" 9 #include "base/base_paths.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 // This makes sure that Chrome restarts with no per-session flags. The guest 367 // This makes sure that Chrome restarts with no per-session flags. The guest
368 // profile will always have empty set of per-session flags. If this is not 368 // profile will always have empty set of per-session flags. If this is not
369 // done and device owner has some per-session flags, when Chrome is relaunched 369 // done and device owner has some per-session flags, when Chrome is relaunched
370 // the guest profile session flags will not match the current command line and 370 // the guest profile session flags will not match the current command line and
371 // another restart will be attempted in order to reset the user flags for the 371 // another restart will be attempted in order to reset the user flags for the
372 // guest user. 372 // guest user.
373 const base::CommandLine user_flags(base::CommandLine::NO_PROGRAM); 373 const base::CommandLine user_flags(base::CommandLine::NO_PROGRAM);
374 if (!about_flags::AreSwitchesIdenticalToCurrentCommandLine( 374 if (!about_flags::AreSwitchesIdenticalToCurrentCommandLine(
375 user_flags, *base::CommandLine::ForCurrentProcess(), NULL)) { 375 user_flags, *base::CommandLine::ForCurrentProcess(), NULL)) {
376 DBusThreadManager::Get()->GetSessionManagerClient()->SetFlagsForUser( 376 DBusThreadManager::Get()->GetSessionManagerClient()->SetFlagsForUser(
377 chromeos::login::kGuestUserName, base::CommandLine::StringVector()); 377 chromeos::login::GetGuestUserID(), base::CommandLine::StringVector());
378 } 378 }
379 379
380 RestartChrome(cmd_line_str); 380 RestartChrome(cmd_line_str);
381 } 381 }
382 382
383 scoped_refptr<Authenticator> UserSessionManager::CreateAuthenticator( 383 scoped_refptr<Authenticator> UserSessionManager::CreateAuthenticator(
384 AuthStatusConsumer* consumer) { 384 AuthStatusConsumer* consumer) {
385 // Screen locker needs new Authenticator instance each time. 385 // Screen locker needs new Authenticator instance each time.
386 if (ScreenLocker::default_screen_locker()) { 386 if (ScreenLocker::default_screen_locker()) {
387 if (authenticator_.get()) 387 if (authenticator_.get())
(...skipping 17 matching lines...) Expand all
405 405
406 void UserSessionManager::StartSession( 406 void UserSessionManager::StartSession(
407 const UserContext& user_context, 407 const UserContext& user_context,
408 StartSessionType start_session_type, 408 StartSessionType start_session_type,
409 bool has_auth_cookies, 409 bool has_auth_cookies,
410 bool has_active_session, 410 bool has_active_session,
411 UserSessionManagerDelegate* delegate) { 411 UserSessionManagerDelegate* delegate) {
412 delegate_ = delegate; 412 delegate_ = delegate;
413 start_session_type_ = start_session_type; 413 start_session_type_ = start_session_type;
414 414
415 VLOG(1) << "Starting session for " << user_context.GetUserID(); 415 VLOG(1) << "Starting session for " << user_context.GetUserID().GetUserEmail();
416 416
417 PreStartSession(); 417 PreStartSession();
418 CreateUserSession(user_context, has_auth_cookies); 418 CreateUserSession(user_context, has_auth_cookies);
419 419
420 if (!has_active_session) 420 if (!has_active_session)
421 StartCrosSession(); 421 StartCrosSession();
422 422
423 // TODO(nkostylev): Notify UserLoggedIn() after profile is actually 423 // TODO(nkostylev): Notify UserLoggedIn() after profile is actually
424 // ready to be used (http://crbug.com/361528). 424 // ready to be used (http://crbug.com/361528).
425 NotifyUserLoggedIn(); 425 NotifyUserLoggedIn();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 if (!user_manager->IsUserLoggedIn() || 458 if (!user_manager->IsUserLoggedIn() ||
459 !user_manager->IsLoggedInAsUserWithGaiaAccount() || 459 !user_manager->IsLoggedInAsUserWithGaiaAccount() ||
460 user_manager->IsLoggedInAsStub()) { 460 user_manager->IsLoggedInAsStub()) {
461 return; 461 return;
462 } 462 }
463 463
464 const user_manager::User* user = 464 const user_manager::User* user =
465 ProfileHelper::Get()->GetUserByProfile(user_profile); 465 ProfileHelper::Get()->GetUserByProfile(user_profile);
466 DCHECK(user); 466 DCHECK(user);
467 if (!net::NetworkChangeNotifier::IsOffline()) { 467 if (!net::NetworkChangeNotifier::IsOffline()) {
468 pending_signin_restore_sessions_.erase(user->email()); 468 pending_signin_restore_sessions_.erase(user->GetUserID());
469 RestoreAuthSessionImpl(user_profile, false /* has_auth_cookies */); 469 RestoreAuthSessionImpl(user_profile, false /* has_auth_cookies */);
470 } else { 470 } else {
471 // Even if we're online we should wait till initial 471 // Even if we're online we should wait till initial
472 // OnConnectionTypeChanged() call. Otherwise starting fetchers too early may 472 // OnConnectionTypeChanged() call. Otherwise starting fetchers too early may
473 // end up canceling all request when initial network connection type is 473 // end up canceling all request when initial network connection type is
474 // processed. See http://crbug.com/121643. 474 // processed. See http://crbug.com/121643.
475 pending_signin_restore_sessions_.insert(user->email()); 475 pending_signin_restore_sessions_.insert(user->GetUserID());
476 } 476 }
477 } 477 }
478 478
479 void UserSessionManager::RestoreActiveSessions() { 479 void UserSessionManager::RestoreActiveSessions() {
480 user_sessions_restore_in_progress_ = true; 480 user_sessions_restore_in_progress_ = true;
481 DBusThreadManager::Get()->GetSessionManagerClient()->RetrieveActiveSessions( 481 DBusThreadManager::Get()->GetSessionManagerClient()->RetrieveActiveSessions(
482 base::Bind(&UserSessionManager::OnRestoreActiveSessions, AsWeakPtr())); 482 base::Bind(&UserSessionManager::OnRestoreActiveSessions, AsWeakPtr()));
483 } 483 }
484 484
485 bool UserSessionManager::UserSessionsRestored() const { 485 bool UserSessionManager::UserSessionsRestored() const {
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 649
650 LogCustomSwitches(command_line_difference); 650 LogCustomSwitches(command_line_difference);
651 651
652 about_flags::ReportCustomFlags("Login.CustomFlags", command_line_difference); 652 about_flags::ReportCustomFlags("Login.CustomFlags", command_line_difference);
653 653
654 base::CommandLine::StringVector flags; 654 base::CommandLine::StringVector flags;
655 // argv[0] is the program name |base::CommandLine::NO_PROGRAM|. 655 // argv[0] is the program name |base::CommandLine::NO_PROGRAM|.
656 flags.assign(user_flags.argv().begin() + 1, user_flags.argv().end()); 656 flags.assign(user_flags.argv().begin() + 1, user_flags.argv().end());
657 LOG(WARNING) << "Restarting to apply per-session flags..."; 657 LOG(WARNING) << "Restarting to apply per-session flags...";
658 DBusThreadManager::Get()->GetSessionManagerClient()->SetFlagsForUser( 658 DBusThreadManager::Get()->GetSessionManagerClient()->SetFlagsForUser(
659 user_manager::UserManager::Get()->GetActiveUser()->email(), flags); 659 user_manager::UserManager::Get()->GetActiveUser()->GetUserID(), flags);
660 AttemptRestart(profile); 660 AttemptRestart(profile);
661 return true; 661 return true;
662 } 662 }
663 663
664 bool UserSessionManager::NeedsToUpdateEasyUnlockKeys() const { 664 bool UserSessionManager::NeedsToUpdateEasyUnlockKeys() const {
665 return EasyUnlockService::IsSignInEnabled() && 665 return EasyUnlockService::IsSignInEnabled() &&
666 !user_context_.GetUserID().empty() && 666 !user_context_.GetUserID().empty() &&
667 user_manager::User::TypeHasGaiaAccount(user_context_.GetUserType()) && 667 user_manager::User::TypeHasGaiaAccount(user_context_.GetUserType()) &&
668 user_context_.GetKey() && !user_context_.GetKey()->GetSecret().empty(); 668 user_context_.GetKey() && !user_context_.GetKey()->GetSecret().empty();
669 } 669 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 case OAuth2LoginManager::SESSION_RESTORE_PREPARING: 714 case OAuth2LoginManager::SESSION_RESTORE_PREPARING:
715 case OAuth2LoginManager::SESSION_RESTORE_IN_PROGRESS: 715 case OAuth2LoginManager::SESSION_RESTORE_IN_PROGRESS:
716 return; 716 return;
717 } 717 }
718 718
719 // We should not be clearing existing token state if that was a connection 719 // We should not be clearing existing token state if that was a connection
720 // error. http://crbug.com/295245 720 // error. http://crbug.com/295245
721 if (!connection_error) { 721 if (!connection_error) {
722 // We are in one of "done" states here. 722 // We are in one of "done" states here.
723 user_manager::UserManager::Get()->SaveUserOAuthStatus( 723 user_manager::UserManager::Get()->SaveUserOAuthStatus(
724 user_manager::UserManager::Get()->GetLoggedInUser()->email(), 724 user_manager::UserManager::Get()->GetLoggedInUser()->GetUserID(),
725 user_status); 725 user_status);
726 } 726 }
727 727
728 login_manager->RemoveObserver(this); 728 login_manager->RemoveObserver(this);
729 729
730 if (exit_after_session_restore_ && 730 if (exit_after_session_restore_ &&
731 (state == OAuth2LoginManager::SESSION_RESTORE_DONE || 731 (state == OAuth2LoginManager::SESSION_RESTORE_DONE ||
732 state == OAuth2LoginManager::SESSION_RESTORE_FAILED || 732 state == OAuth2LoginManager::SESSION_RESTORE_FAILED ||
733 state == OAuth2LoginManager::SESSION_RESTORE_CONNECTION_FAILED)) { 733 state == OAuth2LoginManager::SESSION_RESTORE_CONNECTION_FAILED)) {
734 LOG(WARNING) << "Restarting Chrome after session restore finishes, " 734 LOG(WARNING) << "Restarting Chrome after session restore finishes, "
(...skipping 22 matching lines...) Expand all
757 // Need to iterate over all users and their OAuth2 session state. 757 // Need to iterate over all users and their OAuth2 session state.
758 const user_manager::UserList& users = user_manager->GetLoggedInUsers(); 758 const user_manager::UserList& users = user_manager->GetLoggedInUsers();
759 for (user_manager::UserList::const_iterator it = users.begin(); 759 for (user_manager::UserList::const_iterator it = users.begin();
760 it != users.end(); 760 it != users.end();
761 ++it) { 761 ++it) {
762 if (!(*it)->is_profile_created()) 762 if (!(*it)->is_profile_created())
763 continue; 763 continue;
764 764
765 Profile* user_profile = ProfileHelper::Get()->GetProfileByUserUnsafe(*it); 765 Profile* user_profile = ProfileHelper::Get()->GetProfileByUserUnsafe(*it);
766 bool should_restore_session = 766 bool should_restore_session =
767 pending_signin_restore_sessions_.find((*it)->email()) != 767 pending_signin_restore_sessions_.find((*it)->GetUserID()) !=
768 pending_signin_restore_sessions_.end(); 768 pending_signin_restore_sessions_.end();
769 OAuth2LoginManager* login_manager = 769 OAuth2LoginManager* login_manager =
770 OAuth2LoginManagerFactory::GetInstance()->GetForProfile(user_profile); 770 OAuth2LoginManagerFactory::GetInstance()->GetForProfile(user_profile);
771 if (login_manager->SessionRestoreIsRunning()) { 771 if (login_manager->SessionRestoreIsRunning()) {
772 // If we come online for the first time after successful offline login, 772 // If we come online for the first time after successful offline login,
773 // we need to kick off OAuth token verification process again. 773 // we need to kick off OAuth token verification process again.
774 login_manager->ContinueSessionRestore(); 774 login_manager->ContinueSessionRestore();
775 } else if (should_restore_session) { 775 } else if (should_restore_session) {
776 pending_signin_restore_sessions_.erase((*it)->email()); 776 pending_signin_restore_sessions_.erase((*it)->GetUserID());
777 RestoreAuthSessionImpl(user_profile, false /* has_auth_cookies */); 777 RestoreAuthSessionImpl(user_profile, false /* has_auth_cookies */);
778 } 778 }
779 } 779 }
780 } 780 }
781 781
782 void UserSessionManager::OnProfilePrepared(Profile* profile, 782 void UserSessionManager::OnProfilePrepared(Profile* profile,
783 bool browser_launched) { 783 bool browser_launched) {
784 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( 784 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
785 ::switches::kTestName)) { 785 ::switches::kTestName)) {
786 // Did not log in (we crashed or are debugging), need to restore Sync. 786 // Did not log in (we crashed or are debugging), need to restore Sync.
(...skipping 29 matching lines...) Expand all
816 } 816 }
817 817
818 void UserSessionManager::PreStartSession() { 818 void UserSessionManager::PreStartSession() {
819 // Switch log file as soon as possible. 819 // Switch log file as soon as possible.
820 if (base::SysInfo::IsRunningOnChromeOS()) 820 if (base::SysInfo::IsRunningOnChromeOS())
821 logging::RedirectChromeLogging(*(base::CommandLine::ForCurrentProcess())); 821 logging::RedirectChromeLogging(*(base::CommandLine::ForCurrentProcess()));
822 } 822 }
823 823
824 void UserSessionManager::StoreUserContextDataBeforeProfileIsCreated() { 824 void UserSessionManager::StoreUserContextDataBeforeProfileIsCreated() {
825 // Store obfuscated GAIA ID. 825 // Store obfuscated GAIA ID.
826 if (!user_context_.GetGaiaID().empty()) { 826 if (!user_context_.GetUserID().GetGaiaId().empty()) {
827 user_manager::UserManager::Get()->UpdateGaiaID(user_context_.GetUserID(), 827 user_manager::UserManager::Get()->UpdateGaiaID(user_context_.GetUserID(),
828 user_context_.GetGaiaID()); 828 user_context_.GetUserID().Get GaiaId());
829 } 829 }
830 } 830 }
831 831
832 void UserSessionManager::StartCrosSession() { 832 void UserSessionManager::StartCrosSession() {
833 BootTimesRecorder* btl = BootTimesRecorder::Get(); 833 BootTimesRecorder* btl = BootTimesRecorder::Get();
834 btl->AddLoginTimeMarker("StartSession-Start", false); 834 btl->AddLoginTimeMarker("StartSession-Start", false);
835 DBusThreadManager::Get()->GetSessionManagerClient()-> 835 DBusThreadManager::Get()->GetSessionManagerClient()->
836 StartSession(user_context_.GetUserID()); 836 StartSession(user_context_.GetUserID());
837 btl->AddLoginTimeMarker("StartSession-End", false); 837 btl->AddLoginTimeMarker("StartSession-End", false);
838 } 838 }
(...skipping 15 matching lines...) Expand all
854 // TODO(nkostylev): Figure out whether demo session is using the right profile 854 // TODO(nkostylev): Figure out whether demo session is using the right profile
855 // path or not. See https://codereview.chromium.org/171423009 855 // path or not. See https://codereview.chromium.org/171423009
856 g_browser_process->profile_manager()->CreateProfileAsync( 856 g_browser_process->profile_manager()->CreateProfileAsync(
857 ProfileHelper::GetProfilePathByUserIdHash(user_context_.GetUserIDHash()), 857 ProfileHelper::GetProfilePathByUserIdHash(user_context_.GetUserIDHash()),
858 base::Bind(&UserSessionManager::OnProfileCreated, 858 base::Bind(&UserSessionManager::OnProfileCreated,
859 AsWeakPtr(), 859 AsWeakPtr(),
860 user_context_, 860 user_context_,
861 is_demo_session), 861 is_demo_session),
862 base::string16(), 862 base::string16(),
863 base::string16(), 863 base::string16(),
864 std::string()); 864 user_manager::UserID(std::string(), std::string()));
Denis Kuznetsov (DE-MUC) 2015/06/10 16:50:46 EmptyGaiaID() ?
865 } 865 }
866 866
867 void UserSessionManager::OnProfileCreated(const UserContext& user_context, 867 void UserSessionManager::OnProfileCreated(const UserContext& user_context,
868 bool is_incognito_profile, 868 bool is_incognito_profile,
869 Profile* profile, 869 Profile* profile,
870 Profile::CreateStatus status) { 870 Profile::CreateStatus status) {
871 CHECK(profile); 871 CHECK(profile);
872 872
873 switch (status) { 873 switch (status) {
874 case Profile::CREATE_STATUS_CREATED: 874 case Profile::CREATE_STATUS_CREATED:
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
911 SetFirstLoginPrefs(profile, 911 SetFirstLoginPrefs(profile,
912 user_context.GetPublicSessionLocale(), 912 user_context.GetPublicSessionLocale(),
913 user_context.GetPublicSessionInputMethod()); 913 user_context.GetPublicSessionInputMethod());
914 } 914 }
915 915
916 if (user_manager::UserManager::Get()->IsLoggedInAsSupervisedUser()) { 916 if (user_manager::UserManager::Get()->IsLoggedInAsSupervisedUser()) {
917 user_manager::User* active_user = 917 user_manager::User* active_user =
918 user_manager::UserManager::Get()->GetActiveUser(); 918 user_manager::UserManager::Get()->GetActiveUser();
919 std::string supervised_user_sync_id = 919 std::string supervised_user_sync_id =
920 ChromeUserManager::Get()->GetSupervisedUserManager()->GetUserSyncId( 920 ChromeUserManager::Get()->GetSupervisedUserManager()->GetUserSyncId(
921 active_user->email()); 921 active_user->GetUserID());
922 profile->GetPrefs()->SetString(prefs::kSupervisedUserId, 922 profile->GetPrefs()->SetString(prefs::kSupervisedUserId,
923 supervised_user_sync_id); 923 supervised_user_sync_id);
924 } else if (user_manager::UserManager::Get()-> 924 } else if (user_manager::UserManager::Get()->
925 IsLoggedInAsUserWithGaiaAccount()) { 925 IsLoggedInAsUserWithGaiaAccount()) {
926 // Get the Gaia ID from the user context. If it's not available, this may 926 user_manager::UserID user_id(user->GetUserID());
927 // not be available when unlocking a previously opened profile, or when 927
928 // creating a supervised users. However, in these cases the gaia_id should 928 {
929 // be already available in the account tracker. 929 // Get the Gaia ID from the user context. If it's not available, this may
930 std::string gaia_id = user_context.GetGaiaID(); 930 // not be available when unlocking a previously opened profile, or when
931 if (gaia_id.empty()) { 931 // creating a supervised users. However, in these cases the gaia_id shoul d
932 AccountTrackerService* account_tracker = 932 // be already available in the account tracker.
933 AccountTrackerServiceFactory::GetForProfile(profile); 933 std::string gaia_id = user_context.GetUserID().GetGaiaId();
934 AccountTrackerService::AccountInfo info = 934 if (gaia_id.empty()) {
935 account_tracker->FindAccountInfoByEmail(user_context.GetUserID()); 935 AccountTrackerService* account_tracker =
936 gaia_id = info.gaia; 936 AccountTrackerServiceFactory::GetForProfile(profile);
937 DCHECK(!gaia_id.empty()); 937 AccountTrackerService::AccountInfo info =
938 account_tracker->FindAccountInfoByEmail(user_context.GetUserID().Get UserEmail());
939 gaia_id = info.gaia;
940 DCHECK(!gaia_id.empty());
941 }
942 user_id.SetGaiaId(gaia_id);
938 } 943 }
939 944
940 // Make sure that the google service username is properly set (we do this 945 // Make sure that the google service username is properly set (we do this
941 // on every sign in, not just the first login, to deal with existing 946 // on every sign in, not just the first login, to deal with existing
942 // profiles that might not have it set yet). 947 // profiles that might not have it set yet).
943 SigninManagerBase* signin_manager = 948 SigninManagerBase* signin_manager =
944 SigninManagerFactory::GetForProfile(profile); 949 SigninManagerFactory::GetForProfile(profile);
945 signin_manager->SetAuthenticatedAccountInfo(gaia_id, 950 signin_manager->SetAuthenticatedAccountInfo(user_id.GetGaiaId(),
946 user_context.GetUserID()); 951 user_id.GetUserEmail());
947 952
948 // Backfill GAIA ID in user prefs stored in Local State. 953 // Backfill GAIA ID in user prefs stored in Local State.
949 std::string tmp_gaia_id; 954 std::string tmp_gaia_id;
950 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); 955 user_manager::UserManager* user_manager = user_manager::UserManager::Get();
951 if (!user_manager->FindGaiaID(user_context.GetUserID(), &tmp_gaia_id) && 956 if (!user_manager->FindGaiaID(user_context.GetUserID(), &tmp_gaia_id) &&
952 !gaia_id.empty()) { 957 !user_id.GetGaiaId().empty()) {
953 user_manager->UpdateGaiaID(user_context.GetUserID(), gaia_id); 958 user_manager->UpdateGaiaID(user_context.GetUserID(), user_id.GetGaiaId());
954 } 959 }
955 } 960 }
956 } 961 }
957 962
958 void UserSessionManager::UserProfileInitialized(Profile* profile, 963 void UserSessionManager::UserProfileInitialized(Profile* profile,
959 bool is_incognito_profile, 964 bool is_incognito_profile,
960 const std::string& user_id) { 965 const user_manager::UserID& user _id) {
961 // Demo user signed in. 966 // Demo user signed in.
962 if (is_incognito_profile) { 967 if (is_incognito_profile) {
963 profile->OnLogin(); 968 profile->OnLogin();
964 969
965 // Send the notification before creating the browser so additional objects 970 // Send the notification before creating the browser so additional objects
966 // that need the profile (e.g. the launcher) can be created first. 971 // that need the profile (e.g. the launcher) can be created first.
967 content::NotificationService::current()->Notify( 972 content::NotificationService::current()->Notify(
968 chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED, 973 chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED,
969 content::NotificationService::AllSources(), 974 content::NotificationService::AllSources(),
970 content::Details<Profile>(profile)); 975 content::Details<Profile>(profile));
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
1335 // If we could not get list of active user sessions it is safer to just 1340 // If we could not get list of active user sessions it is safer to just
1336 // sign out so that we don't get in the inconsistent state. 1341 // sign out so that we don't get in the inconsistent state.
1337 DBusThreadManager::Get()->GetSessionManagerClient()->StopSession(); 1342 DBusThreadManager::Get()->GetSessionManagerClient()->StopSession();
1338 return; 1343 return;
1339 } 1344 }
1340 1345
1341 // One profile has been already loaded on browser start. 1346 // One profile has been already loaded on browser start.
1342 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); 1347 user_manager::UserManager* user_manager = user_manager::UserManager::Get();
1343 DCHECK(user_manager->GetLoggedInUsers().size() == 1); 1348 DCHECK(user_manager->GetLoggedInUsers().size() == 1);
1344 DCHECK(user_manager->GetActiveUser()); 1349 DCHECK(user_manager->GetActiveUser());
1345 std::string active_user_id = user_manager->GetActiveUser()->email(); 1350 const user_manager::UserID& active_user_id = user_manager->GetActiveUser()->Ge tUserID();
Denis Kuznetsov (DE-MUC) 2015/06/10 16:50:46 auto
1346 1351
1347 SessionManagerClient::ActiveSessionsMap::const_iterator it; 1352 SessionManagerClient::ActiveSessionsMap::const_iterator it;
1348 for (it = sessions.begin(); it != sessions.end(); ++it) { 1353 for (it = sessions.begin(); it != sessions.end(); ++it) {
1349 if (active_user_id == it->first) 1354 if (active_user_id == it->first)
1350 continue; 1355 continue;
1351 pending_user_sessions_[it->first] = it->second; 1356 pending_user_sessions_[it->first] = it->second;
1352 } 1357 }
1353 RestorePendingUserSessions(); 1358 RestorePendingUserSessions();
1354 } 1359 }
1355 1360
1356 void UserSessionManager::RestorePendingUserSessions() { 1361 void UserSessionManager::RestorePendingUserSessions() {
1357 if (pending_user_sessions_.empty()) { 1362 if (pending_user_sessions_.empty()) {
1358 user_manager::UserManager::Get()->SwitchToLastActiveUser(); 1363 user_manager::UserManager::Get()->SwitchToLastActiveUser();
1359 NotifyPendingUserSessionsRestoreFinished(); 1364 NotifyPendingUserSessionsRestoreFinished();
1360 return; 1365 return;
1361 } 1366 }
1362 1367
1363 // Get next user to restore sessions and delete it from list. 1368 // Get next user to restore sessions and delete it from list.
1364 SessionManagerClient::ActiveSessionsMap::const_iterator it = 1369 SessionManagerClient::ActiveSessionsMap::const_iterator it =
1365 pending_user_sessions_.begin(); 1370 pending_user_sessions_.begin();
1366 std::string user_id = it->first; 1371 user_manager::UserID user_id = it->first;
1367 std::string user_id_hash = it->second; 1372 std::string user_id_hash = it->second;
1368 DCHECK(!user_id.empty()); 1373 DCHECK(!user_id.empty());
1369 DCHECK(!user_id_hash.empty()); 1374 DCHECK(!user_id_hash.empty());
1370 pending_user_sessions_.erase(user_id); 1375 pending_user_sessions_.erase(user_id);
1371 1376
1372 // Check that this user is not logged in yet. 1377 // Check that this user is not logged in yet.
1373 user_manager::UserList logged_in_users = 1378 user_manager::UserList logged_in_users =
1374 user_manager::UserManager::Get()->GetLoggedInUsers(); 1379 user_manager::UserManager::Get()->GetLoggedInUsers();
1375 bool user_already_logged_in = false; 1380 bool user_already_logged_in = false;
1376 for (user_manager::UserList::const_iterator it = logged_in_users.begin(); 1381 for (user_manager::UserList::const_iterator it = logged_in_users.begin();
1377 it != logged_in_users.end(); 1382 it != logged_in_users.end();
1378 ++it) { 1383 ++it) {
1379 const user_manager::User* user = (*it); 1384 const user_manager::User* user = (*it);
1380 if (user->email() == user_id) { 1385 if (user->GetUserID() == user_id) {
1381 user_already_logged_in = true; 1386 user_already_logged_in = true;
1382 break; 1387 break;
1383 } 1388 }
1384 } 1389 }
1385 DCHECK(!user_already_logged_in); 1390 DCHECK(!user_already_logged_in);
1386 1391
1387 if (!user_already_logged_in) { 1392 if (!user_already_logged_in) {
1388 UserContext user_context(user_id); 1393 UserContext user_context(user_id);
1389 user_context.SetUserIDHash(user_id_hash); 1394 user_context.SetUserIDHash(user_id_hash);
1390 user_context.SetIsUsingOAuth(false); 1395 user_context.SetIsUsingOAuth(false);
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
1490 OAuth2LoginManager::SESSION_RESTORE_IN_PROGRESS) { 1495 OAuth2LoginManager::SESSION_RESTORE_IN_PROGRESS) {
1491 chrome::AttemptRestart(); 1496 chrome::AttemptRestart();
1492 return; 1497 return;
1493 } 1498 }
1494 1499
1495 LOG(WARNING) << "Attempting browser restart during session restore."; 1500 LOG(WARNING) << "Attempting browser restart during session restore.";
1496 exit_after_session_restore_ = true; 1501 exit_after_session_restore_ = true;
1497 } 1502 }
1498 1503
1499 void UserSessionManager::OnEasyUnlockKeyOpsFinished( 1504 void UserSessionManager::OnEasyUnlockKeyOpsFinished(
1500 const std::string& user_id, 1505 const user_manager::UserID& user_id,
1501 bool success) { 1506 bool success) {
1502 running_easy_unlock_key_ops_ = false; 1507 running_easy_unlock_key_ops_ = false;
1503 if (!easy_unlock_key_ops_finished_callback_.is_null()) 1508 if (!easy_unlock_key_ops_finished_callback_.is_null())
1504 easy_unlock_key_ops_finished_callback_.Run(); 1509 easy_unlock_key_ops_finished_callback_.Run();
1505 1510
1506 const user_manager::User* user = 1511 const user_manager::User* user =
1507 user_manager::UserManager::Get()->FindUser(user_id); 1512 user_manager::UserManager::Get()->FindUser(user_id);
1508 EasyUnlockService* easy_unlock_service = 1513 EasyUnlockService* easy_unlock_service =
1509 EasyUnlockService::GetForUser(*user); 1514 EasyUnlockService::GetForUser(*user);
1510 easy_unlock_service->CheckCryptohomeKeysAndMaybeHardlock(); 1515 easy_unlock_service->CheckCryptohomeKeysAndMaybeHardlock();
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
1695 cros_settings->GetBoolean(kAccountsPrefShowUserNamesOnSignIn, 1700 cros_settings->GetBoolean(kAccountsPrefShowUserNamesOnSignIn,
1696 &show_names_on_signin); 1701 &show_names_on_signin);
1697 return show_names_on_signin && !ephemeral_users_enabled; 1702 return show_names_on_signin && !ephemeral_users_enabled;
1698 } 1703 }
1699 1704
1700 void UserSessionManager::Shutdown() { 1705 void UserSessionManager::Shutdown() {
1701 token_handle_util_.reset(); 1706 token_handle_util_.reset();
1702 } 1707 }
1703 1708
1704 } // namespace chromeos 1709 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698