| Index: chrome/browser/chromeos/login/user_manager_impl.cc
|
| diff --git a/chrome/browser/chromeos/login/user_manager_impl.cc b/chrome/browser/chromeos/login/user_manager_impl.cc
|
| index 88a4c763102b8639b8e306545c4514d15d3f9de0..1f52a25efb3e4d6efe94203636aca71c93f75fa8 100644
|
| --- a/chrome/browser/chromeos/login/user_manager_impl.cc
|
| +++ b/chrome/browser/chromeos/login/user_manager_impl.cc
|
| @@ -321,52 +321,48 @@ void UserManagerImpl::UserLoggedIn(const std::string& email) {
|
| is_user_logged_in_ = true;
|
|
|
| if (email == kGuestUser) {
|
| - is_current_user_ephemeral_ = true;
|
| GuestUserLoggedIn();
|
| return;
|
| }
|
|
|
| if (email == kDemoUser) {
|
| - is_current_user_ephemeral_ = true;
|
| DemoUserLoggedIn();
|
| return;
|
| }
|
|
|
| if (IsEphemeralUser(email)) {
|
| + EphemeralUserLoggedIn(email);
|
| + return;
|
| + }
|
| +
|
| + EnsureUsersLoaded();
|
| +
|
| + // Clear the prefs view of the users.
|
| + PrefService* prefs = g_browser_process->local_state();
|
| + ListPrefUpdate prefs_users_update(prefs, UserManager::kLoggedInUsers);
|
| + prefs_users_update->Clear();
|
| +
|
| + // Make sure this user is first.
|
| + prefs_users_update->Append(Value::CreateStringValue(email));
|
| + UserList::iterator logged_in_user = users_.end();
|
| + for (UserList::iterator it = users_.begin(); it != users_.end(); ++it) {
|
| + std::string user_email = (*it)->email();
|
| + // Skip the most recent user.
|
| + if (email != user_email)
|
| + prefs_users_update->Append(Value::CreateStringValue(user_email));
|
| + else
|
| + logged_in_user = it;
|
| + }
|
| +
|
| + if (logged_in_user == users_.end()) {
|
| is_current_user_new_ = true;
|
| - is_current_user_ephemeral_ = true;
|
| logged_in_user_ = CreateUser(email);
|
| - SetInitialUserImage(email);
|
| } else {
|
| - EnsureUsersLoaded();
|
| -
|
| - // Clear the prefs view of the users.
|
| - PrefService* prefs = g_browser_process->local_state();
|
| - ListPrefUpdate prefs_users_update(prefs, UserManager::kLoggedInUsers);
|
| - prefs_users_update->Clear();
|
| -
|
| - // Make sure this user is first.
|
| - prefs_users_update->Append(Value::CreateStringValue(email));
|
| - UserList::iterator logged_in_user = users_.end();
|
| - for (UserList::iterator it = users_.begin(); it != users_.end(); ++it) {
|
| - std::string user_email = (*it)->email();
|
| - // Skip the most recent user.
|
| - if (email != user_email)
|
| - prefs_users_update->Append(Value::CreateStringValue(user_email));
|
| - else
|
| - logged_in_user = it;
|
| - }
|
| -
|
| - if (logged_in_user == users_.end()) {
|
| - is_current_user_new_ = true;
|
| - logged_in_user_ = CreateUser(email);
|
| - } else {
|
| - logged_in_user_ = *logged_in_user;
|
| - users_.erase(logged_in_user);
|
| - }
|
| - // This user must be in the front of the user list.
|
| - users_.insert(users_.begin(), logged_in_user_);
|
| + logged_in_user_ = *logged_in_user;
|
| + users_.erase(logged_in_user);
|
| }
|
| + // This user must be in the front of the user list.
|
| + users_.insert(users_.begin(), logged_in_user_);
|
|
|
| NotifyOnLogin();
|
|
|
| @@ -404,15 +400,27 @@ void UserManagerImpl::UserLoggedIn(const std::string& email) {
|
| }
|
|
|
| void UserManagerImpl::DemoUserLoggedIn() {
|
| + is_current_user_new_ = true;
|
| + is_current_user_ephemeral_ = true;
|
| logged_in_user_ = &demo_user_;
|
| + SetInitialUserImage(kDemoUser);
|
| NotifyOnLogin();
|
| }
|
|
|
| void UserManagerImpl::GuestUserLoggedIn() {
|
| + is_current_user_ephemeral_ = true;
|
| logged_in_user_ = &guest_user_;
|
| NotifyOnLogin();
|
| }
|
|
|
| +void UserManagerImpl::EphemeralUserLoggedIn(const std::string& email) {
|
| + is_current_user_new_ = true;
|
| + is_current_user_ephemeral_ = true;
|
| + logged_in_user_ = CreateUser(email);
|
| + SetInitialUserImage(email);
|
| + NotifyOnLogin();
|
| +}
|
| +
|
| void UserManagerImpl::RemoveUser(const std::string& email,
|
| RemoveUserDelegate* delegate) {
|
| if (!IsKnownUser(email))
|
|
|