1 // Copyright 2014 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 #ifndef CHROME_BROWSER_SIGNIN_PROFILE_IDENTITY_PROVIDER_H_ 6 #define CHROME_BROWSER_SIGNIN_PROFILE_IDENTITY_PROVIDER_H_ 7 8 #include "base/macros.h" 9 #include "components/signin/core/browser/signin_manager_base.h" 10 #include "google_apis/gaia/identity_provider.h" 11 12 class LoginUIService; 13 class ProfileOAuth2TokenService; 14 15 // An identity provider implementation that's backed by 16 // ProfileOAuth2TokenService and SigninManager. 17 class ProfileIdentityProvider : public IdentityProvider, 18 public SigninManagerBase::Observer { 19 public: 20 ProfileIdentityProvider(SigninManagerBase* signin_manager, 21 ProfileOAuth2TokenService* token_service, 22 LoginUIService* login_ui_service); 23 virtual ~ProfileIdentityProvider(); 24 25 // IdentityProvider: 26 virtual std::string GetActiveUsername() OVERRIDE; 27 virtual std::string GetActiveAccountId() OVERRIDE; 28 virtual OAuth2TokenService* GetTokenService() OVERRIDE; 29 virtual bool RequestLogin() OVERRIDE; 30 31 // SigninManagerBase::Observer: 32 virtual void GoogleSigninSucceeded(const std::string& username, 33 const std::string& password) OVERRIDE; 34 virtual void GoogleSignedOut(const std::string& username) OVERRIDE; 35 36 private: 37 SigninManagerBase* const signin_manager_; 38 ProfileOAuth2TokenService* const token_service_; 39 LoginUIService* const login_ui_service_; 40 41 DISALLOW_COPY_AND_ASSIGN(ProfileIdentityProvider); 42 }; 43 44 #endif // CHROME_BROWSER_SIGNIN_PROFILE_IDENTITY_PROVIDER_H_ 45