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

Unified Diff: chrome/browser/chromeos/login/screens/user_selection_screen.cc

Issue 1191273002: ChromeOS: Show the new POD RE-AUTH ICON when users needs to re-auth (Closed) 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/login/screens/user_selection_screen.cc
diff --git a/chrome/browser/chromeos/login/screens/user_selection_screen.cc b/chrome/browser/chromeos/login/screens/user_selection_screen.cc
index 814faee0196f4f8509c36bf03975a9ca2b9b8d0e..fee3111bb0abae5443196deaf8ad7a70ed29a3e6 100644
--- a/chrome/browser/chromeos/login/screens/user_selection_screen.cc
+++ b/chrome/browser/chromeos/login/screens/user_selection_screen.cc
@@ -405,6 +405,8 @@ void UserSelectionScreen::SendUserList() {
}
handler_->LoadUsers(users_list, show_guest_);
+
+ CheckNextUserStatus("");
dzhioev (left Google) 2015/06/22 23:51:24 std::string()
dzhioev (left Google) 2015/06/22 23:51:24 In my opinion this implementation is too cryptic.
Denis Kuznetsov (DE-MUC) 2015/06/25 18:43:42 Some magic constant that is not explained in metho
dzhioev (left Google) 2015/06/25 22:19:36 Which constants are you talking about?
Alexander Alekseev 2015/06/30 20:43:39 Done.
Alexander Alekseev 2015/06/30 20:43:39 Done.
}
void UserSelectionScreen::HandleGetUsers() {
@@ -412,9 +414,14 @@ void UserSelectionScreen::HandleGetUsers() {
}
void UserSelectionScreen::CheckUserStatus(const std::string& user_id) {
+ CheckUserStatusImpl(user_id, false /* check_all_users */);
+}
+
+bool UserSelectionScreen::CheckUserStatusImpl(const std::string& user_id,
+ bool check_all_users) {
// No checks on lock screen.
if (ScreenLocker::default_screen_locker())
- return;
+ return false;
if (!token_handle_util_.get()) {
token_handle_util_.reset(
@@ -422,13 +429,33 @@ void UserSelectionScreen::CheckUserStatus(const std::string& user_id) {
}
if (token_handle_util_->HasToken(user_id)) {
- token_handle_util_->CheckToken(
+ return token_handle_util_->CheckToken(
user_id, base::Bind(&UserSelectionScreen::OnUserStatusChecked,
- weak_factory_.GetWeakPtr()));
+ weak_factory_.GetWeakPtr(), check_all_users));
+ }
+ return false;
+}
+
+void UserSelectionScreen::CheckNextUserStatus(
+ const std::string& current_user_id) {
+ const user_manager::UserList& users = GetUsers();
+ bool found = current_user_id.empty();
+ for (const user_manager::User* user : users) {
+ const std::string& next_user_id = user->email();
+
+ if (!found) {
+ if (next_user_id == current_user_id)
+ found = true;
+
+ continue;
+ }
+ if (CheckUserStatusImpl(next_user_id, true /* check_all_users */))
+ return;
}
}
void UserSelectionScreen::OnUserStatusChecked(
+ const bool check_all_users,
const user_manager::UserID& user_id,
TokenHandleUtil::TokenHandleStatus status) {
if (status == TokenHandleUtil::INVALID) {
@@ -436,6 +463,8 @@ void UserSelectionScreen::OnUserStatusChecked(
token_handle_util_->MarkHandleInvalid(user_id);
SetAuthType(user_id, ONLINE_SIGN_IN, base::string16());
}
+ if (check_all_users)
+ CheckNextUserStatus(user_id);
}
// EasyUnlock stuff

Powered by Google App Engine
This is Rietveld 408576698