Chromium Code Reviews| Index: chrome/browser/chromeos/login/ui/login_display_host_impl.cc |
| diff --git a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc |
| index 4cd04528a57abfe9d81930c823a036eec34d0ca3..1b27b23c104ea9a1bdfc901030cbbefffb8de06f 100644 |
| --- a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc |
| +++ b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc |
| @@ -37,6 +37,7 @@ |
| #include "chrome/browser/chromeos/login/helper.h" |
| #include "chrome/browser/chromeos/login/login_wizard.h" |
| #include "chrome/browser/chromeos/login/screens/core_oobe_actor.h" |
| +#include "chrome/browser/chromeos/login/signin/token_handler_util.h" |
| #include "chrome/browser/chromeos/login/startup_utils.h" |
| #include "chrome/browser/chromeos/login/ui/input_events_blocker.h" |
| #include "chrome/browser/chromeos/login/ui/keyboard_driven_oobe_key_handler.h" |
| @@ -71,6 +72,7 @@ |
| #include "chromeos/settings/timezone_settings.h" |
| #include "chromeos/timezone/timezone_resolver.h" |
| #include "components/session_manager/core/session_manager.h" |
| +#include "components/user_manager/user.h" |
| #include "components/user_manager/user_manager.h" |
| #include "content/public/browser/notification_service.h" |
| #include "content/public/browser/notification_types.h" |
| @@ -624,6 +626,22 @@ void LoginDisplayHostImpl::StartSignInScreen( |
| SetStatusAreaVisible(true); |
| existing_user_controller_->Init(users); |
| + // Validate user OAuth tokens. |
| + |
| + if (!base::CommandLine::ForCurrentProcess()->HasSwitch( |
|
Nikita (slow)
2015/03/20 18:06:50
Please also use StartupUtils::IsWebviewSigninEnabl
Denis Kuznetsov (DE-MUC)
2015/03/20 19:50:30
This feature does not depend on Webview signin.
|
| + switches::kEnableOAuthTokenHandlers)) { |
| + token_handler_util_.reset( |
| + new TokenHandlerUtil(user_manager::UserManager::Get())); |
| + for (auto* user : users) { |
| + auto user_id = user->GetUserID(); |
| + if (token_handler_util_->HasToken(user_id)) { |
| + token_handler_util_->CheckToken( |
| + user_id, base::Bind(&LoginDisplayHostImpl::OnTokenHandlerChecked, |
| + pointer_factory_.GetWeakPtr())); |
| + } |
| + } |
| + } |
| + |
| // We might be here after a reboot that was triggered after OOBE was complete, |
| // so check for auto-enrollment again. This might catch a cached decision from |
| // a previous oobe flow, or might start a new check with the server. |
| @@ -650,6 +668,16 @@ void LoginDisplayHostImpl::StartSignInScreen( |
| "login-wait-for-signin-state-initialize"); |
| } |
| +void LoginDisplayHostImpl::OnTokenHandlerChecked( |
| + const user_manager::UserID& user_id, |
| + TokenHandlerUtil::TokenHandleStatus token_status) { |
| + if (token_status == TokenHandlerUtil::INVALID) { |
| + user_manager::UserManager::Get()->SaveUserOAuthStatus( |
| + user_id, user_manager::User::OAUTH2_TOKEN_STATUS_INVALID); |
| + token_handler_util_->DeleteToken(user_id); |
| + } |
| +} |
| + |
| void LoginDisplayHostImpl::OnPreferencesChanged() { |
| if (is_showing_login_) |
| webui_login_display_->OnPreferencesChanged(); |