identity_signin_flow.cc revision effb81e5f8246d0db0270817048dc992db66e9fb
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/extensions/api/identity/identity_signin_flow.h" 6 7#include "chrome/browser/app_mode/app_mode_utils.h" 8#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 9#include "chrome/browser/signin/signin_manager.h" 10#include "chrome/browser/signin/signin_manager_factory.h" 11#include "chrome/browser/ui/webui/signin/login_ui_service.h" 12#include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" 13#include "components/signin/core/browser/profile_oauth2_token_service.h" 14 15namespace extensions { 16 17IdentitySigninFlow::IdentitySigninFlow(Delegate* delegate, Profile* profile) 18 : delegate_(delegate), 19 profile_(profile) { 20} 21 22IdentitySigninFlow::~IdentitySigninFlow() { 23 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_)-> 24 RemoveObserver(this); 25} 26 27void IdentitySigninFlow::Start() { 28 DCHECK(delegate_); 29 30#if defined(OS_CHROMEOS) 31 // In normal mode (i.e. non-forced app mode), the user has to log out to 32 // re-establish credentials. Let the global error popup handle everything. 33 if (!chrome::IsRunningInForcedAppMode()) { 34 delegate_->SigninFailed(); 35 return; 36 } 37#endif 38 39 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_)->AddObserver(this); 40 41 LoginUIService* login_ui_service = 42 LoginUIServiceFactory::GetForProfile(profile_); 43 login_ui_service->ShowLoginPopup(); 44} 45 46void IdentitySigninFlow::OnRefreshTokenAvailable( 47 const std::string& account_id) { 48 if (SigninManagerFactory::GetForProfile(profile_)-> 49 GetAuthenticatedAccountId() == account_id) { 50 delegate_->SigninSuccess(); 51 } 52} 53 54} // namespace extensions 55