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

Side by Side Diff: chrome/browser/chromeos/login/session/user_session_manager.cc

Issue 375413002: Replace chromeos::UserManager::Get() with chromeos::GetUserManager(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix test Created 6 years, 5 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 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 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 UserSessionManager* UserSessionManager::GetInstance() { 133 UserSessionManager* UserSessionManager::GetInstance() {
134 return Singleton<UserSessionManager, 134 return Singleton<UserSessionManager,
135 DefaultSingletonTraits<UserSessionManager> >::get(); 135 DefaultSingletonTraits<UserSessionManager> >::get();
136 } 136 }
137 137
138 // static 138 // static
139 void UserSessionManager::OverrideHomedir() { 139 void UserSessionManager::OverrideHomedir() {
140 // Override user homedir, check for ProfileManager being initialized as 140 // Override user homedir, check for ProfileManager being initialized as
141 // it may not exist in unit tests. 141 // it may not exist in unit tests.
142 if (g_browser_process->profile_manager()) { 142 if (g_browser_process->profile_manager()) {
143 UserManager* user_manager = UserManager::Get(); 143 UserManager* user_manager = GetUserManager();
144 if (user_manager->GetLoggedInUsers().size() == 1) { 144 if (user_manager->GetLoggedInUsers().size() == 1) {
145 base::FilePath homedir = ProfileHelper::GetProfilePathByUserIdHash( 145 base::FilePath homedir = ProfileHelper::GetProfilePathByUserIdHash(
146 user_manager->GetPrimaryUser()->username_hash()); 146 user_manager->GetPrimaryUser()->username_hash());
147 // This path has been either created by cryptohome (on real Chrome OS 147 // This path has been either created by cryptohome (on real Chrome OS
148 // device) or by ProfileManager (on chromeos=1 desktop builds). 148 // device) or by ProfileManager (on chromeos=1 desktop builds).
149 PathService::OverrideAndCreateIfNeeded(base::DIR_HOME, 149 PathService::OverrideAndCreateIfNeeded(base::DIR_HOME,
150 homedir, 150 homedir,
151 true /* path is absolute */, 151 true /* path is absolute */,
152 false /* don't create */); 152 false /* don't create */);
153 } 153 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 if (!has_active_session) 189 if (!has_active_session)
190 StartCrosSession(); 190 StartCrosSession();
191 191
192 // TODO(nkostylev): Notify UserLoggedIn() after profile is actually 192 // TODO(nkostylev): Notify UserLoggedIn() after profile is actually
193 // ready to be used (http://crbug.com/361528). 193 // ready to be used (http://crbug.com/361528).
194 NotifyUserLoggedIn(); 194 NotifyUserLoggedIn();
195 PrepareProfile(); 195 PrepareProfile();
196 } 196 }
197 197
198 void UserSessionManager::PerformPostUserLoggedInActions() { 198 void UserSessionManager::PerformPostUserLoggedInActions() {
199 UserManager* user_manager = UserManager::Get(); 199 UserManager* user_manager = GetUserManager();
200 if (user_manager->GetLoggedInUsers().size() == 1) { 200 if (user_manager->GetLoggedInUsers().size() == 1) {
201 // Owner must be first user in session. DeviceSettingsService can't deal 201 // Owner must be first user in session. DeviceSettingsService can't deal
202 // with multiple user and will mix up ownership, crbug.com/230018. 202 // with multiple user and will mix up ownership, crbug.com/230018.
203 OwnerSettingsServiceFactory::GetInstance()-> 203 OwnerSettingsServiceFactory::GetInstance()->
204 SetUsername(user_manager->GetActiveUser()->email()); 204 SetUsername(user_manager->GetActiveUser()->email());
205 205
206 if (NetworkPortalDetector::IsInitialized()) { 206 if (NetworkPortalDetector::IsInitialized()) {
207 NetworkPortalDetector::Get()->SetStrategy( 207 NetworkPortalDetector::Get()->SetStrategy(
208 PortalDetectorStrategy::STRATEGY_ID_SESSION); 208 PortalDetectorStrategy::STRATEGY_ID_SESSION);
209 } 209 }
210 } 210 }
211 } 211 }
212 212
213 void UserSessionManager::RestoreAuthenticationSession(Profile* user_profile) { 213 void UserSessionManager::RestoreAuthenticationSession(Profile* user_profile) {
214 UserManager* user_manager = UserManager::Get(); 214 UserManager* user_manager = GetUserManager();
215 // We need to restore session only for logged in regular (GAIA) users. 215 // We need to restore session only for logged in regular (GAIA) users.
216 // Note: stub user is a special case that is used for tests, running 216 // Note: stub user is a special case that is used for tests, running
217 // linux_chromeos build on dev workstations w/o user_id parameters. 217 // linux_chromeos build on dev workstations w/o user_id parameters.
218 // Stub user is considered to be a regular GAIA user but it has special 218 // Stub user is considered to be a regular GAIA user but it has special
219 // user_id (kStubUser) and certain services like restoring OAuth session are 219 // user_id (kStubUser) and certain services like restoring OAuth session are
220 // explicitly disabled for it. 220 // explicitly disabled for it.
221 if (!user_manager->IsUserLoggedIn() || 221 if (!user_manager->IsUserLoggedIn() ||
222 !user_manager->IsLoggedInAsRegularUser() || 222 !user_manager->IsLoggedInAsRegularUser() ||
223 user_manager->IsLoggedInAsStub()) { 223 user_manager->IsLoggedInAsStub()) {
224 return; 224 return;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 296
297 bool UserSessionManager::RespectLocalePreference( 297 bool UserSessionManager::RespectLocalePreference(
298 Profile* profile, 298 Profile* profile,
299 const User* user, 299 const User* user,
300 scoped_ptr<locale_util::SwitchLanguageCallback> callback) const { 300 scoped_ptr<locale_util::SwitchLanguageCallback> callback) const {
301 // TODO(alemate): http://crbug.com/288941 : Respect preferred language list in 301 // TODO(alemate): http://crbug.com/288941 : Respect preferred language list in
302 // the Google user profile. 302 // the Google user profile.
303 if (g_browser_process == NULL) 303 if (g_browser_process == NULL)
304 return false; 304 return false;
305 305
306 UserManager* user_manager = UserManager::Get(); 306 UserManager* user_manager = GetUserManager();
307 if ((user == NULL) || (user != user_manager->GetPrimaryUser()) || 307 if ((user == NULL) || (user != user_manager->GetPrimaryUser()) ||
308 (!user->is_profile_created())) 308 (!user->is_profile_created()))
309 return false; 309 return false;
310 310
311 // In case of multi-profiles session we don't apply profile locale 311 // In case of multi-profiles session we don't apply profile locale
312 // because it is unsafe. 312 // because it is unsafe.
313 if (user_manager->GetLoggedInUsers().size() != 1) 313 if (user_manager->GetLoggedInUsers().size() != 1)
314 return false; 314 return false;
315 315
316 const PrefService* prefs = profile->GetPrefs(); 316 const PrefService* prefs = profile->GetPrefs();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 351
352 // Here we don't enable keyboard layouts for normal users. Input methods 352 // Here we don't enable keyboard layouts for normal users. Input methods
353 // are set up when the user first logs in. Then the user may customize the 353 // are set up when the user first logs in. Then the user may customize the
354 // input methods. Hence changing input methods here, just because the user's 354 // input methods. Hence changing input methods here, just because the user's
355 // UI language is different from the login screen UI language, is not 355 // UI language is different from the login screen UI language, is not
356 // desirable. Note that input method preferences are synced, so users can use 356 // desirable. Note that input method preferences are synced, so users can use
357 // their farovite input methods as soon as the preferences are synced. 357 // their farovite input methods as soon as the preferences are synced.
358 // 358 //
359 // For Guest mode, user locale preferences will never get initialized. 359 // For Guest mode, user locale preferences will never get initialized.
360 // So input methods should be enabled somewhere. 360 // So input methods should be enabled somewhere.
361 const bool enable_layouts = UserManager::Get()->IsLoggedInAsGuest(); 361 const bool enable_layouts = GetUserManager()->IsLoggedInAsGuest();
362 locale_util::SwitchLanguage(pref_locale, 362 locale_util::SwitchLanguage(pref_locale,
363 enable_layouts, 363 enable_layouts,
364 false /* login_layouts_only */, 364 false /* login_layouts_only */,
365 callback.Pass()); 365 callback.Pass());
366 366
367 return true; 367 return true;
368 } 368 }
369 369
370 void UserSessionManager::OnSessionRestoreStateChanged( 370 void UserSessionManager::OnSessionRestoreStateChanged(
371 Profile* user_profile, 371 Profile* user_profile,
(...skipping 16 matching lines...) Expand all
388 case OAuth2LoginManager::SESSION_RESTORE_NOT_STARTED: 388 case OAuth2LoginManager::SESSION_RESTORE_NOT_STARTED:
389 case OAuth2LoginManager::SESSION_RESTORE_PREPARING: 389 case OAuth2LoginManager::SESSION_RESTORE_PREPARING:
390 case OAuth2LoginManager::SESSION_RESTORE_IN_PROGRESS: 390 case OAuth2LoginManager::SESSION_RESTORE_IN_PROGRESS:
391 return; 391 return;
392 } 392 }
393 393
394 // We should not be clearing existing token state if that was a connection 394 // We should not be clearing existing token state if that was a connection
395 // error. http://crbug.com/295245 395 // error. http://crbug.com/295245
396 if (!connection_error) { 396 if (!connection_error) {
397 // We are in one of "done" states here. 397 // We are in one of "done" states here.
398 UserManager::Get()->SaveUserOAuthStatus( 398 GetUserManager()->SaveUserOAuthStatus(
399 UserManager::Get()->GetLoggedInUser()->email(), 399 GetUserManager()->GetLoggedInUser()->email(), user_status);
400 user_status);
401 } 400 }
402 401
403 login_manager->RemoveObserver(this); 402 login_manager->RemoveObserver(this);
404 } 403 }
405 404
406 void UserSessionManager::OnNewRefreshTokenAvaiable(Profile* user_profile) { 405 void UserSessionManager::OnNewRefreshTokenAvaiable(Profile* user_profile) {
407 // Check if we were waiting to restart chrome. 406 // Check if we were waiting to restart chrome.
408 if (!exit_after_session_restore_) 407 if (!exit_after_session_restore_)
409 return; 408 return;
410 409
411 OAuth2LoginManager* login_manager = 410 OAuth2LoginManager* login_manager =
412 OAuth2LoginManagerFactory::GetInstance()->GetForProfile(user_profile); 411 OAuth2LoginManagerFactory::GetInstance()->GetForProfile(user_profile);
413 login_manager->RemoveObserver(this); 412 login_manager->RemoveObserver(this);
414 413
415 // Mark user auth token status as valid. 414 // Mark user auth token status as valid.
416 UserManager::Get()->SaveUserOAuthStatus( 415 GetUserManager()->SaveUserOAuthStatus(
417 UserManager::Get()->GetLoggedInUser()->email(), 416 GetUserManager()->GetLoggedInUser()->email(),
418 User::OAUTH2_TOKEN_STATUS_VALID); 417 User::OAUTH2_TOKEN_STATUS_VALID);
419 418
420 LOG(WARNING) << "Exiting after new refresh token fetched"; 419 LOG(WARNING) << "Exiting after new refresh token fetched";
421 420
422 // We need to restart cleanly in this case to make sure OAuth2 RT is actually 421 // We need to restart cleanly in this case to make sure OAuth2 RT is actually
423 // saved. 422 // saved.
424 chrome::AttemptRestart(); 423 chrome::AttemptRestart();
425 } 424 }
426 425
427 void UserSessionManager::OnConnectionTypeChanged( 426 void UserSessionManager::OnConnectionTypeChanged(
428 net::NetworkChangeNotifier::ConnectionType type) { 427 net::NetworkChangeNotifier::ConnectionType type) {
429 UserManager* user_manager = UserManager::Get(); 428 UserManager* user_manager = GetUserManager();
430 if (type == net::NetworkChangeNotifier::CONNECTION_NONE || 429 if (type == net::NetworkChangeNotifier::CONNECTION_NONE ||
431 !user_manager->IsUserLoggedIn() || 430 !user_manager->IsUserLoggedIn() ||
432 !user_manager->IsLoggedInAsRegularUser() || 431 !user_manager->IsLoggedInAsRegularUser() ||
433 user_manager->IsLoggedInAsStub()) { 432 user_manager->IsLoggedInAsStub()) {
434 return; 433 return;
435 } 434 }
436 435
437 // Need to iterate over all users and their OAuth2 session state. 436 // Need to iterate over all users and their OAuth2 session state.
438 const UserList& users = user_manager->GetLoggedInUsers(); 437 const UserList& users = user_manager->GetLoggedInUsers();
439 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { 438 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 BootTimesLoader* btl = BootTimesLoader::Get(); 474 BootTimesLoader* btl = BootTimesLoader::Get();
476 btl->AddLoginTimeMarker("StartSession-Start", false); 475 btl->AddLoginTimeMarker("StartSession-Start", false);
477 DBusThreadManager::Get()->GetSessionManagerClient()-> 476 DBusThreadManager::Get()->GetSessionManagerClient()->
478 StartSession(user_context_.GetUserID()); 477 StartSession(user_context_.GetUserID());
479 btl->AddLoginTimeMarker("StartSession-End", false); 478 btl->AddLoginTimeMarker("StartSession-End", false);
480 } 479 }
481 480
482 void UserSessionManager::NotifyUserLoggedIn() { 481 void UserSessionManager::NotifyUserLoggedIn() {
483 BootTimesLoader* btl = BootTimesLoader::Get(); 482 BootTimesLoader* btl = BootTimesLoader::Get();
484 btl->AddLoginTimeMarker("UserLoggedIn-Start", false); 483 btl->AddLoginTimeMarker("UserLoggedIn-Start", false);
485 UserManager* user_manager = UserManager::Get(); 484 UserManager* user_manager = GetUserManager();
486 user_manager->UserLoggedIn(user_context_.GetUserID(), 485 user_manager->UserLoggedIn(user_context_.GetUserID(),
487 user_context_.GetUserIDHash(), 486 user_context_.GetUserIDHash(),
488 false); 487 false);
489 btl->AddLoginTimeMarker("UserLoggedIn-End", false); 488 btl->AddLoginTimeMarker("UserLoggedIn-End", false);
490 } 489 }
491 490
492 void UserSessionManager::PrepareProfile() { 491 void UserSessionManager::PrepareProfile() {
493 bool is_demo_session = 492 bool is_demo_session =
494 DemoAppLauncher::IsDemoAppSession(user_context_.GetUserID()); 493 DemoAppLauncher::IsDemoAppSession(user_context_.GetUserID());
495 494
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 case Profile::CREATE_STATUS_REMOTE_FAIL: 526 case Profile::CREATE_STATUS_REMOTE_FAIL:
528 case Profile::CREATE_STATUS_CANCELED: 527 case Profile::CREATE_STATUS_CANCELED:
529 case Profile::MAX_CREATE_STATUS: 528 case Profile::MAX_CREATE_STATUS:
530 NOTREACHED(); 529 NOTREACHED();
531 break; 530 break;
532 } 531 }
533 } 532 }
534 533
535 void UserSessionManager::InitProfilePreferences(Profile* profile, 534 void UserSessionManager::InitProfilePreferences(Profile* profile,
536 const std::string& user_id) { 535 const std::string& user_id) {
537 if (UserManager::Get()->IsCurrentUserNew()) 536 if (GetUserManager()->IsCurrentUserNew())
538 SetFirstLoginPrefs(profile->GetPrefs()); 537 SetFirstLoginPrefs(profile->GetPrefs());
539 538
540 if (UserManager::Get()->IsLoggedInAsLocallyManagedUser()) { 539 if (GetUserManager()->IsLoggedInAsLocallyManagedUser()) {
541 User* active_user = UserManager::Get()->GetActiveUser(); 540 User* active_user = GetUserManager()->GetActiveUser();
542 std::string managed_user_sync_id = 541 std::string managed_user_sync_id =
543 UserManager::Get()->GetSupervisedUserManager()-> 542 GetUserManager()->GetSupervisedUserManager()->GetUserSyncId(
544 GetUserSyncId(active_user->email()); 543 active_user->email());
545 profile->GetPrefs()->SetString(prefs::kSupervisedUserId, 544 profile->GetPrefs()->SetString(prefs::kSupervisedUserId,
546 managed_user_sync_id); 545 managed_user_sync_id);
547 } else if (UserManager::Get()->IsLoggedInAsRegularUser()) { 546 } else if (GetUserManager()->IsLoggedInAsRegularUser()) {
548 // Make sure that the google service username is properly set (we do this 547 // Make sure that the google service username is properly set (we do this
549 // on every sign in, not just the first login, to deal with existing 548 // on every sign in, not just the first login, to deal with existing
550 // profiles that might not have it set yet). 549 // profiles that might not have it set yet).
551 SigninManagerBase* signin_manager = 550 SigninManagerBase* signin_manager =
552 SigninManagerFactory::GetForProfile(profile); 551 SigninManagerFactory::GetForProfile(profile);
553 signin_manager->SetAuthenticatedUsername(user_id); 552 signin_manager->SetAuthenticatedUsername(user_id);
554 } 553 }
555 } 554 }
556 555
557 void UserSessionManager::UserProfileInitialized(Profile* profile, 556 void UserSessionManager::UserProfileInitialized(Profile* profile,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
609 btl->AddLoginTimeMarker("TPMOwn-Start", false); 608 btl->AddLoginTimeMarker("TPMOwn-Start", false);
610 if (cryptohome_util::TpmIsEnabled() && !cryptohome_util::TpmIsBeingOwned()) { 609 if (cryptohome_util::TpmIsEnabled() && !cryptohome_util::TpmIsBeingOwned()) {
611 if (cryptohome_util::TpmIsOwned()) { 610 if (cryptohome_util::TpmIsOwned()) {
612 client->CallTpmClearStoredPasswordAndBlock(); 611 client->CallTpmClearStoredPasswordAndBlock();
613 } else { 612 } else {
614 client->TpmCanAttemptOwnership(EmptyVoidDBusMethodCallback()); 613 client->TpmCanAttemptOwnership(EmptyVoidDBusMethodCallback());
615 } 614 }
616 } 615 }
617 btl->AddLoginTimeMarker("TPMOwn-End", false); 616 btl->AddLoginTimeMarker("TPMOwn-End", false);
618 617
619 UserManager* user_manager = UserManager::Get(); 618 UserManager* user_manager = GetUserManager();
620 if (user_manager->IsLoggedInAsRegularUser()) { 619 if (user_manager->IsLoggedInAsRegularUser()) {
621 SAMLOfflineSigninLimiter* saml_offline_signin_limiter = 620 SAMLOfflineSigninLimiter* saml_offline_signin_limiter =
622 SAMLOfflineSigninLimiterFactory::GetForProfile(profile); 621 SAMLOfflineSigninLimiterFactory::GetForProfile(profile);
623 if (saml_offline_signin_limiter) 622 if (saml_offline_signin_limiter)
624 saml_offline_signin_limiter->SignedIn(user_context_.GetAuthFlow()); 623 saml_offline_signin_limiter->SignedIn(user_context_.GetAuthFlow());
625 } 624 }
626 625
627 profile->OnLogin(); 626 profile->OnLogin();
628 627
629 // Send the notification before creating the browser so additional objects 628 // Send the notification before creating the browser so additional objects
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 // When switching to RLZ enabled/disabled state, clear all recorded events. 727 // When switching to RLZ enabled/disabled state, clear all recorded events.
729 RLZTracker::ClearRlzState(); 728 RLZTracker::ClearRlzState();
730 local_state->SetBoolean(prefs::kRLZDisabled, disabled); 729 local_state->SetBoolean(prefs::kRLZDisabled, disabled);
731 } 730 }
732 // Init the RLZ library. 731 // Init the RLZ library.
733 int ping_delay = profile->GetPrefs()->GetInteger( 732 int ping_delay = profile->GetPrefs()->GetInteger(
734 first_run::GetPingDelayPrefName().c_str()); 733 first_run::GetPingDelayPrefName().c_str());
735 // Negative ping delay means to send ping immediately after a first search is 734 // Negative ping delay means to send ping immediately after a first search is
736 // recorded. 735 // recorded.
737 RLZTracker::InitRlzFromProfileDelayed( 736 RLZTracker::InitRlzFromProfileDelayed(
738 profile, UserManager::Get()->IsCurrentUserNew(), 737 profile,
739 ping_delay < 0, base::TimeDelta::FromMilliseconds(abs(ping_delay))); 738 GetUserManager()->IsCurrentUserNew(),
739 ping_delay < 0,
740 base::TimeDelta::FromMilliseconds(abs(ping_delay)));
740 if (delegate_) 741 if (delegate_)
741 delegate_->OnRlzInitialized(); 742 delegate_->OnRlzInitialized();
742 #endif 743 #endif
743 } 744 }
744 745
745 void UserSessionManager::InitializeCertsForPrimaryUser(Profile* profile) { 746 void UserSessionManager::InitializeCertsForPrimaryUser(Profile* profile) {
746 // Now that the user profile has been initialized 747 // Now that the user profile has been initialized
747 // |GetNSSCertDatabaseForProfile| is safe to be used. 748 // |GetNSSCertDatabaseForProfile| is safe to be used.
748 UserManager* user_manager = UserManager::Get(); 749 UserManager* user_manager = GetUserManager();
749 const User* primary_user = user_manager->GetPrimaryUser(); 750 const User* primary_user = user_manager->GetPrimaryUser();
750 if (user_manager->IsUserLoggedIn() && 751 if (user_manager->IsUserLoggedIn() &&
751 primary_user && 752 primary_user &&
752 profile == ProfileHelper::Get()->GetProfileByUser(primary_user) && 753 profile == ProfileHelper::Get()->GetProfileByUser(primary_user) &&
753 CertLoader::IsInitialized() && 754 CertLoader::IsInitialized() &&
754 base::SysInfo::IsRunningOnChromeOS()) { 755 base::SysInfo::IsRunningOnChromeOS()) {
755 GetNSSCertDatabaseForProfile(profile, 756 GetNSSCertDatabaseForProfile(profile,
756 base::Bind(&OnGetNSSCertDatabaseForUser)); 757 base::Bind(&OnGetNSSCertDatabaseForUser));
757 } 758 }
758 } 759 }
759 760
760 } // namespace chromeos 761 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698