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(); |