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
12class LoginUIService;
13class ProfileOAuth2TokenService;
14
15// An identity provider implementation that's backed by
16// ProfileOAuth2TokenService and SigninManager.
17class 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& account_id,
33                                     const std::string& username,
34                                     const std::string& password) OVERRIDE;
35  virtual void GoogleSignedOut(const std::string& account_id,
36                               const std::string& username) OVERRIDE;
37
38 private:
39  SigninManagerBase* const signin_manager_;
40  ProfileOAuth2TokenService* const token_service_;
41  LoginUIService* const login_ui_service_;
42
43  DISALLOW_COPY_AND_ASSIGN(ProfileIdentityProvider);
44};
45
46#endif  // CHROME_BROWSER_SIGNIN_PROFILE_IDENTITY_PROVIDER_H_
47