| Index: chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
|
| diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
|
| index bee7eb9489d02dccac911bc4597fe9a3cd7d56ff..a2ee971997055708135ec50371d0e6948c985167 100644
|
| --- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
|
| +++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
|
| @@ -1175,18 +1175,23 @@ void SigninScreenHandler::FillUserDictionary(User* user,
|
| bool is_owner,
|
| base::DictionaryValue* user_dict) {
|
| const std::string& email = user->email();
|
| - bool is_public_account =
|
| + const bool is_public_account =
|
| user->GetType() == User::USER_TYPE_PUBLIC_ACCOUNT;
|
| - bool is_locally_managed_user =
|
| + const bool is_locally_managed_user =
|
| user->GetType() == User::USER_TYPE_LOCALLY_MANAGED;
|
| const User::OAuthTokenStatus token_status = user->oauth_token_status();
|
|
|
| - // Allow offline sign-in if the oauth token is valid. For supervised users,
|
| - // allow offline sign-in if the token status is unknown as well. The token
|
| - // will be invalidated inside the session in case it has been revoked.
|
| - const bool allow_offline_signin =
|
| - token_status == User::OAUTH2_TOKEN_STATUS_VALID ||
|
| - (is_locally_managed_user &&
|
| + // Force online sign-in if at least one of the following is true:
|
| + // * The flag to force online sign-in is set for the user.
|
| + // * The user's oauth token is invalid.
|
| + // * The user's oauth token status is unknown. This condition does not apply
|
| + // to supervised users: A supervised user whose oauth token status is
|
| + // unknown may still log in offline. The token will be invalidated inside
|
| + // the session in case it has been revoked.
|
| + const bool force_online_signin =
|
| + user->force_online_signin() ||
|
| + (token_status == User::OAUTH2_TOKEN_STATUS_INVALID) ||
|
| + (!is_locally_managed_user &&
|
| token_status == User::OAUTH_TOKEN_STATUS_UNKNOWN);
|
|
|
| user_dict->SetString(kKeyUsername, email);
|
| @@ -1194,7 +1199,7 @@ void SigninScreenHandler::FillUserDictionary(User* user,
|
| user_dict->SetString(kKeyDisplayName, user->GetDisplayName());
|
| user_dict->SetBoolean(kKeyPublicAccount, is_public_account);
|
| user_dict->SetBoolean(kKeyLocallyManagedUser, is_locally_managed_user);
|
| - user_dict->SetInteger(kKeyForceOnlineSignin, !allow_offline_signin);
|
| + user_dict->SetInteger(kKeyForceOnlineSignin, force_online_signin);
|
| user_dict->SetBoolean(kKeySignedIn, user->is_logged_in());
|
| user_dict->SetBoolean(kKeyIsOwner, is_owner);
|
|
|
|
|