OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_SIGNIN_OAUTH2_TOKEN_SERVICE_H_ | 5 #ifndef CHROME_BROWSER_SIGNIN_OAUTH2_TOKEN_SERVICE_H_ |
6 #define CHROME_BROWSER_SIGNIN_OAUTH2_TOKEN_SERVICE_H_ | 6 #define CHROME_BROWSER_SIGNIN_OAUTH2_TOKEN_SERVICE_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 | 74 |
75 // A set of scopes in OAuth2 authentication. | 75 // A set of scopes in OAuth2 authentication. |
76 typedef std::set<std::string> ScopeSet; | 76 typedef std::set<std::string> ScopeSet; |
77 | 77 |
78 explicit OAuth2TokenService(net::URLRequestContextGetter* getter); | 78 explicit OAuth2TokenService(net::URLRequestContextGetter* getter); |
79 virtual ~OAuth2TokenService(); | 79 virtual ~OAuth2TokenService(); |
80 | 80 |
81 // Checks in the cache for a valid access token, and if not found starts | 81 // Checks in the cache for a valid access token, and if not found starts |
82 // a request for an OAuth2 access token using the OAuth2 refresh token | 82 // a request for an OAuth2 access token using the OAuth2 refresh token |
83 // maintained by this instance. The caller owns the returned Request. | 83 // maintained by this instance. The caller owns the returned Request. |
84 // |scopes| is the set of scopes to get an access token for, |consumer| is | 84 // |scopes| is the set of scopes to get an access token for. If the set is |
85 // the object that will be called back with results if the returned request | 85 // empty, the returned access token will have the same scope as the refresh |
86 // is not deleted. | 86 // token. |
| 87 // |consumer| is the object that will be called back with results if the |
| 88 // returned request is not deleted. |
87 virtual scoped_ptr<Request> StartRequest(const ScopeSet& scopes, | 89 virtual scoped_ptr<Request> StartRequest(const ScopeSet& scopes, |
88 Consumer* consumer); | 90 Consumer* consumer); |
89 | 91 |
90 // Returns true if a refresh token exists. If false, calls to | 92 // Returns true if a refresh token exists. If false, calls to |
91 // |StartRequest| will result in a Consumer::OnGetTokenFailure callback. | 93 // |StartRequest| will result in a Consumer::OnGetTokenFailure callback. |
92 bool RefreshTokenIsAvailable(); | 94 bool RefreshTokenIsAvailable(); |
93 | 95 |
94 // Mark an OAuth2 access token as invalid. This should be done if the token | 96 // Mark an OAuth2 access token as invalid. This should be done if the token |
95 // was received from this class, but was not accepted by the server (e.g., | 97 // was received from this class, but was not accepted by the server (e.g., |
96 // the server returned 401 Unauthorized). The token will be removed from the | 98 // the server returned 401 Unauthorized). The token will be removed from the |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 // Informs |consumer_| that this request is completed. | 143 // Informs |consumer_| that this request is completed. |
142 void InformConsumer(const GoogleServiceAuthError& error, | 144 void InformConsumer(const GoogleServiceAuthError& error, |
143 const std::string& access_token, | 145 const std::string& access_token, |
144 const base::Time& expiration_date); | 146 const base::Time& expiration_date); |
145 | 147 |
146 private: | 148 private: |
147 // |consumer_| to call back when this request completes. | 149 // |consumer_| to call back when this request completes. |
148 Consumer* const consumer_; | 150 Consumer* const consumer_; |
149 }; | 151 }; |
150 | 152 |
151 // Informs the consumer of |request| fetch results. | |
152 static void InformConsumer(base::WeakPtr<RequestImpl> request, | |
153 const GoogleServiceAuthError& error, | |
154 const std::string& access_token, | |
155 const base::Time& expiration_date); | |
156 | |
157 private: | 153 private: |
158 // Class that fetches an OAuth2 access token for a given set of scopes and | 154 // Class that fetches an OAuth2 access token for a given set of scopes and |
159 // OAuth2 refresh token. | 155 // OAuth2 refresh token. |
160 class Fetcher; | 156 class Fetcher; |
161 friend class Fetcher; | 157 friend class Fetcher; |
162 | 158 |
163 // Struct that contains the information of an OAuth2 access token. | 159 // Struct that contains the information of an OAuth2 access token. |
164 struct CacheEntry { | 160 struct CacheEntry { |
165 std::string access_token; | 161 std::string access_token; |
166 base::Time expiration_date; | 162 base::Time expiration_date; |
(...skipping 26 matching lines...) Expand all Loading... |
193 // token. | 189 // token. |
194 typedef std::pair<std::string, ScopeSet> FetchParameters; | 190 typedef std::pair<std::string, ScopeSet> FetchParameters; |
195 // A map from fetch parameters to a fetcher that is fetching an OAuth2 access | 191 // A map from fetch parameters to a fetcher that is fetching an OAuth2 access |
196 // token using these parameters. | 192 // token using these parameters. |
197 std::map<FetchParameters, Fetcher*> pending_fetchers_; | 193 std::map<FetchParameters, Fetcher*> pending_fetchers_; |
198 | 194 |
199 DISALLOW_COPY_AND_ASSIGN(OAuth2TokenService); | 195 DISALLOW_COPY_AND_ASSIGN(OAuth2TokenService); |
200 }; | 196 }; |
201 | 197 |
202 #endif // CHROME_BROWSER_SIGNIN_OAUTH2_TOKEN_SERVICE_H_ | 198 #endif // CHROME_BROWSER_SIGNIN_OAUTH2_TOKEN_SERVICE_H_ |
OLD | NEW |