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

Unified Diff: chrome/browser/chromeos/login/user_manager_impl.cc

Issue 14756019: Adding new user menu section to the SystemTrayMenu & refactoring of user access (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More windows breakages addressed Created 7 years, 7 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 side-by-side diff with in-line comments
Download patch
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 46d054cc4cda9cfeaed7fbd9a71b8c2a8c6eb474..ea6c24923534c5113a348cc165a0148f7464e54a 100644
--- a/chrome/browser/chromeos/login/user_manager_impl.cc
+++ b/chrome/browser/chromeos/login/user_manager_impl.cc
@@ -211,6 +211,8 @@ UserManagerImpl::~UserManagerImpl() {
}
// These are pointers to the same User instances that were in users_ list.
logged_in_users_.clear();
+ lru_logged_in_users_.clear();
+
delete active_user_;
}
@@ -238,6 +240,17 @@ const UserList& UserManagerImpl::GetLoggedInUsers() const {
return logged_in_users_;
}
+const UserList& UserManagerImpl::GetLRULoggedInUsers() {
+ // If there is no user logged in, we return the active user as the only one.
+ if (lru_logged_in_users_.empty() && active_user_) {
+ temp_single_logged_in_users_.clear();
+ temp_single_logged_in_users_.insert(temp_single_logged_in_users_.begin(),
+ active_user_);
+ return temp_single_logged_in_users_;
+ }
+ return lru_logged_in_users_;
+}
+
void UserManagerImpl::UserLoggedIn(const std::string& email,
const std::string& username_hash,
bool browser_restart) {
@@ -289,6 +302,7 @@ void UserManagerImpl::UserLoggedIn(const std::string& email,
// Place user who just signed in to the top of the logged in users.
logged_in_users_.insert(logged_in_users_.begin(), active_user_);
+ SetLRUUser(active_user_);
NotifyOnLogin();
}
@@ -324,6 +338,9 @@ void UserManagerImpl::SwitchActiveUser(const std::string& email) {
user->set_is_active(true);
active_user_ = user;
+ // Move the user to the front.
+ SetLRUUser(active_user_);
+
NotifyActiveUserHashChanged(active_user_->username_hash());
// TODO(nkostylev): Notify session_manager on active user change.
@@ -1508,4 +1525,13 @@ void UserManagerImpl::ReadPublicAccounts(base::ListValue* public_accounts) {
}
}
+void UserManagerImpl::SetLRUUser(User* user) {
+ UserList::iterator it = std::find(lru_logged_in_users_.begin(),
+ lru_logged_in_users_.end(),
+ user);
+ if (it != lru_logged_in_users_.end())
+ lru_logged_in_users_.erase(it);
+ lru_logged_in_users_.insert(lru_logged_in_users_.begin(), user);
+}
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698