Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(471)

Side by Side Diff: chrome/browser/chromeos/login/oauth2_login_manager.h

Issue 59883010: This is the fourth CL of several that will eventually replace TokenService with (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Change LOG(INFO) to VLOG(1) Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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_CHROMEOS_LOGIN_OAUTH2_LOGIN_MANAGER_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_OAUTH2_LOGIN_MANAGER_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_OAUTH2_LOGIN_MANAGER_H_ 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_OAUTH2_LOGIN_MANAGER_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/observer_list.h" 11 #include "base/observer_list.h"
12 #include "base/time/time.h" 12 #include "base/time/time.h"
13 #include "chrome/browser/chromeos/login/oauth2_login_verifier.h" 13 #include "chrome/browser/chromeos/login/oauth2_login_verifier.h"
14 #include "chrome/browser/chromeos/login/oauth2_token_fetcher.h" 14 #include "chrome/browser/chromeos/login/oauth2_token_fetcher.h"
15 #include "components/browser_context_keyed_service/browser_context_keyed_service .h" 15 #include "components/browser_context_keyed_service/browser_context_keyed_service .h"
16 #include "google_apis/gaia/gaia_oauth_client.h"
16 #include "google_apis/gaia/oauth2_token_service.h" 17 #include "google_apis/gaia/oauth2_token_service.h"
17 #include "net/url_request/url_request_context_getter.h" 18 #include "net/url_request/url_request_context_getter.h"
18 19
19 class GoogleServiceAuthError; 20 class GoogleServiceAuthError;
20 class Profile; 21 class Profile;
21 class TokenService; 22 class ProfileOAuth2TokenService;
22 23
23 namespace chromeos { 24 namespace chromeos {
24 25
25 // This class is responsible for restoring authenticated web sessions out of 26 // This class is responsible for restoring authenticated web sessions out of
26 // OAuth2 refresh tokens or pre-authenticated cookie jar. 27 // OAuth2 refresh tokens or pre-authenticated cookie jar.
27 class OAuth2LoginManager : public BrowserContextKeyedService, 28 class OAuth2LoginManager : public BrowserContextKeyedService,
29 public gaia::GaiaOAuthClient::Delegate,
28 public OAuth2LoginVerifier::Delegate, 30 public OAuth2LoginVerifier::Delegate,
29 public OAuth2TokenFetcher::Delegate, 31 public OAuth2TokenFetcher::Delegate,
30 public OAuth2TokenService::Observer { 32 public OAuth2TokenService::Observer {
31 public: 33 public:
32 // Session restore states. 34 // Session restore states.
33 enum SessionRestoreState { 35 enum SessionRestoreState {
34 // Session restore is not started. 36 // Session restore is not started.
35 SESSION_RESTORE_NOT_STARTED, 37 SESSION_RESTORE_NOT_STARTED,
36 // Session restore is being prepared. 38 // Session restore is being prepared.
37 SESSION_RESTORE_PREPARING, 39 SESSION_RESTORE_PREPARING,
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 SESSION_RESTORE_TOKEN_FETCH_FAILED = 2, 120 SESSION_RESTORE_TOKEN_FETCH_FAILED = 2,
119 SESSION_RESTORE_NO_REFRESH_TOKEN_FAILED = 3, 121 SESSION_RESTORE_NO_REFRESH_TOKEN_FAILED = 3,
120 SESSION_RESTORE_OAUTHLOGIN_FAILED = 4, 122 SESSION_RESTORE_OAUTHLOGIN_FAILED = 4,
121 SESSION_RESTORE_MERGE_SESSION_FAILED = 5, 123 SESSION_RESTORE_MERGE_SESSION_FAILED = 5,
122 SESSION_RESTORE_COUNT = SESSION_RESTORE_MERGE_SESSION_FAILED, 124 SESSION_RESTORE_COUNT = SESSION_RESTORE_MERGE_SESSION_FAILED,
123 }; 125 };
124 126
125 // BrowserContextKeyedService implementation. 127 // BrowserContextKeyedService implementation.
126 virtual void Shutdown() OVERRIDE; 128 virtual void Shutdown() OVERRIDE;
127 129
130 // gaia::GaiaOAuthClient::Delegate overrides.
131 virtual void OnRefreshTokenResponse(const std::string& access_token,
132 int expires_in_seconds) OVERRIDE;
133 virtual void OnGetUserEmailResponse(const std::string& user_email) OVERRIDE;
134 virtual void OnOAuthError() OVERRIDE;
135 virtual void OnNetworkError(int response_code) OVERRIDE;
136
128 // OAuth2LoginVerifier::Delegate overrides. 137 // OAuth2LoginVerifier::Delegate overrides.
129 virtual void OnOAuthLoginSuccess( 138 virtual void OnOAuthLoginSuccess(
130 const GaiaAuthConsumer::ClientLoginResult& gaia_credentials) OVERRIDE; 139 const GaiaAuthConsumer::ClientLoginResult& gaia_credentials) OVERRIDE;
131 virtual void OnOAuthLoginFailure(bool connection_error) OVERRIDE; 140 virtual void OnOAuthLoginFailure(bool connection_error) OVERRIDE;
132 virtual void OnSessionMergeSuccess() OVERRIDE; 141 virtual void OnSessionMergeSuccess() OVERRIDE;
133 virtual void OnSessionMergeFailure(bool connection_error) OVERRIDE; 142 virtual void OnSessionMergeFailure(bool connection_error) OVERRIDE;
134 143
135 // OAuth2TokenFetcher::Delegate overrides. 144 // OAuth2TokenFetcher::Delegate overrides.
136 virtual void OnOAuth2TokensAvailable( 145 virtual void OnOAuth2TokensAvailable(
137 const GaiaAuthConsumer::ClientOAuthResult& oauth2_tokens) OVERRIDE; 146 const GaiaAuthConsumer::ClientOAuthResult& oauth2_tokens) OVERRIDE;
138 virtual void OnOAuth2TokensFetchFailed() OVERRIDE; 147 virtual void OnOAuth2TokensFetchFailed() OVERRIDE;
139 148
140 // OAuth2TokenService::Observer implementation: 149 // OAuth2TokenService::Observer implementation:
141 virtual void OnRefreshTokenAvailable(const std::string& account_id) OVERRIDE; 150 virtual void OnRefreshTokenAvailable(const std::string& account_id) OVERRIDE;
142 151
143 // Signals delegate that authentication is completed, kicks off token fetching 152 // Signals delegate that authentication is completed, kicks off token fetching
144 // process in TokenService. 153 // process.
145 void CompleteAuthentication(); 154 void CompleteAuthentication();
146 155
147 // Retrieves TokenService for |user_profile_| and sets up notification 156 // Retrieves ProfileOAuth2TokenService for |user_profile_|.
148 // observer events. 157 ProfileOAuth2TokenService* GetTokenService();
149 TokenService* SetupTokenService();
150 158
151 // Records OAuth2 tokens fetched through cookies-to-token exchange into 159 // Get the account id corresponding to the specified refresh token.
152 // TokenService. 160 void GetAccountIdOfRefreshToken(const std::string& refresh_token);
153 void StoreOAuth2Tokens(
154 const GaiaAuthConsumer::ClientOAuthResult& oauth2_tokens);
155
156 // Loads previously stored OAuth2 tokens and kicks off its validation.
157 void LoadAndVerifyOAuth2Tokens();
158 161
159 // Attempts to fetch OAuth2 tokens by using pre-authenticated cookie jar from 162 // Attempts to fetch OAuth2 tokens by using pre-authenticated cookie jar from
160 // provided |auth_profile|. 163 // provided |auth_profile|.
161 void FetchOAuth2Tokens(); 164 void FetchOAuth2Tokens();
162 165
163 // Reports when all tokens are loaded. 166 // Reports when all tokens are loaded.
164 void ReportOAuth2TokensLoaded(); 167 void ReportOAuth2TokensLoaded();
165 168
166 // Issue GAIA cookie recovery (MergeSession) from |refresh_token_|. 169 // Issue GAIA cookie recovery (MergeSession) from |refresh_token_|.
167 void RestoreSessionCookies(); 170 void RestoreSessionCookies();
168 171
169 // Checks GAIA error and figures out whether the request should be 172 // Checks GAIA error and figures out whether the request should be
170 // re-attempted. 173 // re-attempted.
171 bool RetryOnError(const GoogleServiceAuthError& error); 174 bool RetryOnError(const GoogleServiceAuthError& error);
172 175
173 // On successfuly OAuthLogin, starts token service token fetching process.
174 void StartTokenService(
175 const GaiaAuthConsumer::ClientLoginResult& gaia_credentials);
176
177 // Changes |state_|, if needed fires observers (OnSessionRestoreStateChanged). 176 // Changes |state_|, if needed fires observers (OnSessionRestoreStateChanged).
178 void SetSessionRestoreState(SessionRestoreState state); 177 void SetSessionRestoreState(SessionRestoreState state);
179 178
180 // Testing helper. 179 // Testing helper.
181 void SetSessionRestoreStartForTesting(const base::Time& time); 180 void SetSessionRestoreStartForTesting(const base::Time& time);
182 181
183 // Keeps the track if we have already reported OAuth2 token being loaded 182 // Keeps the track if we have already reported OAuth2 token being loaded
184 // by TokenService. 183 // by OAuth2TokenService.
185 Profile* user_profile_; 184 Profile* user_profile_;
186 scoped_refptr<net::URLRequestContextGetter> auth_request_context_; 185 scoped_refptr<net::URLRequestContextGetter> auth_request_context_;
187 SessionRestoreStrategy restore_strategy_; 186 SessionRestoreStrategy restore_strategy_;
188 SessionRestoreState state_; 187 SessionRestoreState state_;
189 188
190 bool loading_reported_; 189 bool loading_reported_;
191 190
192 scoped_ptr<OAuth2TokenFetcher> oauth2_token_fetcher_; 191 scoped_ptr<OAuth2TokenFetcher> oauth2_token_fetcher_;
193 scoped_ptr<OAuth2LoginVerifier> login_verifier_; 192 scoped_ptr<OAuth2LoginVerifier> login_verifier_;
193 scoped_ptr<gaia::GaiaOAuthClient> account_id_fetcher_;
194 194
195 // OAuth2 refresh token. 195 // OAuth2 refresh token.
196 std::string refresh_token_; 196 std::string refresh_token_;
197 197
198 // Authorization code for fetching OAuth2 tokens. 198 // Authorization code for fetching OAuth2 tokens.
199 std::string auth_code_; 199 std::string auth_code_;
200 200
201 // Session restore start time. 201 // Session restore start time.
202 base::Time session_restore_start_; 202 base::Time session_restore_start_;
203 203
204 // List of observers to notify when token availability changes. 204 // List of observers to notify when token availability changes.
205 // Makes sure list is empty on destruction. 205 // Makes sure list is empty on destruction.
206 // TODO(zelidrag|gspencer): Figure out how to get rid of ProfileHelper so we 206 // TODO(zelidrag|gspencer): Figure out how to get rid of ProfileHelper so we
207 // can change the line below to ObserverList<Observer, true>. 207 // can change the line below to ObserverList<Observer, true>.
208 ObserverList<Observer, false> observer_list_; 208 ObserverList<Observer, false> observer_list_;
209 209
210 DISALLOW_COPY_AND_ASSIGN(OAuth2LoginManager); 210 DISALLOW_COPY_AND_ASSIGN(OAuth2LoginManager);
211 }; 211 };
212 212
213 } // namespace chromeos 213 } // namespace chromeos
214 214
215 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_OAUTH2_LOGIN_MANAGER_H_ 215 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_OAUTH2_LOGIN_MANAGER_H_
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/login_utils.cc ('k') | chrome/browser/chromeos/login/oauth2_login_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698