OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 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_UBERTOKEN_FETCHER_H_ | |
6 #define CHROME_BROWSER_SIGNIN_UBERTOKEN_FETCHER_H_ | |
7 | |
8 #include "base/memory/scoped_ptr.h" | |
9 #include "google_apis/gaia/gaia_auth_consumer.h" | |
10 #include "google_apis/gaia/oauth2_token_service.h" | |
11 | |
12 // Allow to retrieves an uber-auth token for the user. This class uses the | |
13 // |OAuth2TokenService| and considers that the user is already logged in. It | |
14 // will use the OAuth2 access token to generate the uber-auth token. | |
15 // | |
16 // This class should be used on a single thread, but it can be whichever thread | |
17 // that you like. | |
18 // | |
19 // This class can handle one request at a time. | |
20 | |
21 class GaiaAuthFetcher; | |
22 class GoogleServiceAuthError; | |
23 class Profile; | |
24 | |
25 // Callback for the |UbertokenFetcher| class. | |
26 class UbertokenConsumer { | |
27 public: | |
28 UbertokenConsumer() {} | |
29 virtual ~UbertokenConsumer() {} | |
30 virtual void OnUbertokenSuccess(const std::string& token) {} | |
31 virtual void OnUbertokenFailure(const GoogleServiceAuthError& error) {} | |
32 }; | |
33 | |
34 // Allows to retrieve an uber-auth token. | |
35 class UbertokenFetcher : public GaiaAuthConsumer, | |
36 public OAuth2TokenService::Consumer { | |
37 public: | |
38 UbertokenFetcher(Profile* profile, UbertokenConsumer* consumer); | |
39 virtual ~UbertokenFetcher(); | |
40 | |
41 // Start fetching the token for |account_id|. | |
42 virtual void StartFetchingToken(const std::string& account_id); | |
43 | |
44 // Overriden from GaiaAuthConsumer | |
45 virtual void OnUberAuthTokenSuccess(const std::string& token) OVERRIDE; | |
46 virtual void OnUberAuthTokenFailure( | |
47 const GoogleServiceAuthError& error) OVERRIDE; | |
48 | |
49 // Overriden from OAuth2TokenService::Consumer: | |
50 virtual void OnGetTokenSuccess(const OAuth2TokenService::Request* request, | |
51 const std::string& access_token, | |
52 const base::Time& expiration_time) OVERRIDE; | |
53 virtual void OnGetTokenFailure(const OAuth2TokenService::Request* request, | |
54 const GoogleServiceAuthError& error) OVERRIDE; | |
55 | |
56 private: | |
57 Profile* profile_; | |
58 UbertokenConsumer* consumer_; | |
59 scoped_ptr<GaiaAuthFetcher> gaia_auth_fetcher_; | |
60 scoped_ptr<OAuth2TokenService::Request> access_token_request_; | |
61 | |
62 DISALLOW_COPY_AND_ASSIGN(UbertokenFetcher); | |
63 }; | |
64 | |
65 #endif // CHROME_BROWSER_SIGNIN_UBERTOKEN_FETCHER_H_ | |
OLD | NEW |