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

Side by Side Diff: google_apis/gaia/gaia_auth_fetcher.h

Issue 424233002: When the user signs in, make sure to set cookies on all reachable google (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 6 years, 4 months 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) 2012 The Chromium Authors. All rights reserved. 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 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 GOOGLE_APIS_GAIA_GAIA_AUTH_FETCHER_H_ 5 #ifndef GOOGLE_APIS_GAIA_GAIA_AUTH_FETCHER_H_
6 #define GOOGLE_APIS_GAIA_GAIA_AUTH_FETCHER_H_ 6 #define GOOGLE_APIS_GAIA_GAIA_AUTH_FETCHER_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 // called on the consumer on the original thread. 141 // called on the consumer on the original thread.
142 void StartGetUserInfo(const std::string& lsid); 142 void StartGetUserInfo(const std::string& lsid);
143 143
144 // Start a MergeSession request to pre-login the user with the given 144 // Start a MergeSession request to pre-login the user with the given
145 // credentials. 145 // credentials.
146 // 146 //
147 // Start a MergeSession request to fill the browsing cookie jar with 147 // Start a MergeSession request to fill the browsing cookie jar with
148 // credentials represented by the account whose uber-auth token is 148 // credentials represented by the account whose uber-auth token is
149 // |uber_token|. This method will modify the cookies of the current profile. 149 // |uber_token|. This method will modify the cookies of the current profile.
150 // 150 //
151 // The |external_cc_result| string can specify the result of connetion checks
guohui 2014/08/05 19:14:07 nits: rename external_cc_result to external_connec
Roger Tawa OOO till Jul 10th 2014/08/08 19:29:53 I think I'll leave it as is, becauce "Cc" is the o
152 // for various google properties, and MergeSession will set cookies on those
153 // properties too if appropriate. See StartGetCheckConnectionInfo() for
154 // details. The string is a comma separated list of token/result pairs, where
155 // token and result are separated by a colon. This string may be empty, in
156 // which case no specific handling is performed.
157 //
151 // Either OnMergeSessionSuccess or OnMergeSessionFailure will be 158 // Either OnMergeSessionSuccess or OnMergeSessionFailure will be
152 // called on the consumer on the original thread. 159 // called on the consumer on the original thread.
153 void StartMergeSession(const std::string& uber_token); 160 void StartMergeSession(const std::string& uber_token,
161 const std::string& external_cc_result);
154 162
155 // Start a request to exchange an OAuthLogin-scoped oauth2 access token for an 163 // Start a request to exchange an OAuthLogin-scoped oauth2 access token for an
156 // uber-auth token. The returned token can be used with the method 164 // uber-auth token. The returned token can be used with the method
157 // StartMergeSession(). 165 // StartMergeSession().
158 // 166 //
159 // Either OnUberAuthTokenSuccess or OnUberAuthTokenFailure will be 167 // Either OnUberAuthTokenSuccess or OnUberAuthTokenFailure will be
160 // called on the consumer on the original thread. 168 // called on the consumer on the original thread.
161 void StartTokenFetchForUberAuthExchange(const std::string& access_token); 169 void StartTokenFetchForUberAuthExchange(const std::string& access_token);
162 170
163 // Start a request to exchange an OAuthLogin-scoped oauth2 access token for a 171 // Start a request to exchange an OAuthLogin-scoped oauth2 access token for a
164 // ClientLogin-style service tokens. The response to this request is the 172 // ClientLogin-style service tokens. The response to this request is the
165 // same as the response to a ClientLogin request, except that captcha 173 // same as the response to a ClientLogin request, except that captcha
166 // challenges are never issued. 174 // challenges are never issued.
167 // 175 //
168 // Either OnClientLoginSuccess or OnClientLoginFailure will be 176 // Either OnClientLoginSuccess or OnClientLoginFailure will be
169 // called on the consumer on the original thread. If |service| is empty, 177 // called on the consumer on the original thread. If |service| is empty,
170 // the call will attempt to fetch uber auth token. 178 // the call will attempt to fetch uber auth token.
171 void StartOAuthLogin(const std::string& access_token, 179 void StartOAuthLogin(const std::string& access_token,
172 const std::string& service); 180 const std::string& service);
173 181
174 // Starts a request to list the accounts in the GAIA cookie. 182 // Starts a request to list the accounts in the GAIA cookie.
175 void StartListAccounts(); 183 void StartListAccounts();
176 184
185 // Starts a request to get the list of URLs to check for connection info.
186 // Returns token/URL pairs to check, and the resulting status can be given to
187 // /MergeSession requests.
188 void StartGetCheckConnectionInfo();
189
177 // Implementation of net::URLFetcherDelegate 190 // Implementation of net::URLFetcherDelegate
178 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE; 191 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
179 192
180 // StartClientLogin been called && results not back yet? 193 // StartClientLogin been called && results not back yet?
181 bool HasPendingFetch(); 194 bool HasPendingFetch();
182 195
183 // Stop any URL fetches in progress. 196 // Stop any URL fetches in progress.
184 void CancelRequest(); 197 void CancelRequest();
185 198
186 // From a URLFetcher result, generate an appropriate error. 199 // From a URLFetcher result, generate an appropriate error.
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 int response_code); 299 int response_code);
287 300
288 void OnUberAuthTokenFetch(const std::string& data, 301 void OnUberAuthTokenFetch(const std::string& data,
289 const net::URLRequestStatus& status, 302 const net::URLRequestStatus& status,
290 int response_code); 303 int response_code);
291 304
292 void OnOAuthLoginFetched(const std::string& data, 305 void OnOAuthLoginFetched(const std::string& data,
293 const net::URLRequestStatus& status, 306 const net::URLRequestStatus& status,
294 int response_code); 307 int response_code);
295 308
309 void OnGetCheckConnectionInfoFetched(const std::string& data,
310 const net::URLRequestStatus& status,
311 int response_code);
312
296 // Tokenize the results of a ClientLogin fetch. 313 // Tokenize the results of a ClientLogin fetch.
297 static void ParseClientLoginResponse(const std::string& data, 314 static void ParseClientLoginResponse(const std::string& data,
298 std::string* sid, 315 std::string* sid,
299 std::string* lsid, 316 std::string* lsid,
300 std::string* token); 317 std::string* token);
301 318
302 static void ParseClientLoginFailure(const std::string& data, 319 static void ParseClientLoginFailure(const std::string& data,
303 std::string* error, 320 std::string* error,
304 std::string* error_url, 321 std::string* error_url,
305 std::string* captcha_url, 322 std::string* captcha_url,
(...skipping 29 matching lines...) Expand all
335 // Given auth code, create body to get OAuth2 token pair. 352 // Given auth code, create body to get OAuth2 token pair.
336 static std::string MakeGetTokenPairBody(const std::string& auth_code); 353 static std::string MakeGetTokenPairBody(const std::string& auth_code);
337 // Given an OAuth2 token, create body to revoke the token. 354 // Given an OAuth2 token, create body to revoke the token.
338 std::string MakeRevokeTokenBody(const std::string& auth_token); 355 std::string MakeRevokeTokenBody(const std::string& auth_token);
339 // Supply the lsid returned from ClientLogin in order to fetch 356 // Supply the lsid returned from ClientLogin in order to fetch
340 // user information. 357 // user information.
341 static std::string MakeGetUserInfoBody(const std::string& lsid); 358 static std::string MakeGetUserInfoBody(const std::string& lsid);
342 359
343 // Supply the authentication token returned from StartIssueAuthToken. 360 // Supply the authentication token returned from StartIssueAuthToken.
344 static std::string MakeMergeSessionBody(const std::string& auth_token, 361 static std::string MakeMergeSessionBody(const std::string& auth_token,
345 const std::string& continue_url, 362 const std::string& external_cc_result,
346 const std::string& source); 363 const std::string& continue_url,
364 const std::string& source);
347 365
348 static std::string MakeGetAuthCodeHeader(const std::string& auth_token); 366 static std::string MakeGetAuthCodeHeader(const std::string& auth_token);
349 367
350 static std::string MakeOAuthLoginBody(const std::string& service, 368 static std::string MakeOAuthLoginBody(const std::string& service,
351 const std::string& source); 369 const std::string& source);
352 370
353 // Create a fetcher usable for making any Gaia request. |body| is used 371 // Create a fetcher usable for making any Gaia request. |body| is used
354 // as the body of the POST request sent to GAIA. Any strings listed in 372 // as the body of the POST request sent to GAIA. Any strings listed in
355 // |headers| are added as extra HTTP headers in the request. 373 // |headers| are added as extra HTTP headers in the request.
356 // 374 //
(...skipping 20 matching lines...) Expand all
377 std::string source_; 395 std::string source_;
378 const GURL client_login_gurl_; 396 const GURL client_login_gurl_;
379 const GURL issue_auth_token_gurl_; 397 const GURL issue_auth_token_gurl_;
380 const GURL oauth2_token_gurl_; 398 const GURL oauth2_token_gurl_;
381 const GURL oauth2_revoke_gurl_; 399 const GURL oauth2_revoke_gurl_;
382 const GURL get_user_info_gurl_; 400 const GURL get_user_info_gurl_;
383 const GURL merge_session_gurl_; 401 const GURL merge_session_gurl_;
384 const GURL uberauth_token_gurl_; 402 const GURL uberauth_token_gurl_;
385 const GURL oauth_login_gurl_; 403 const GURL oauth_login_gurl_;
386 const GURL list_accounts_gurl_; 404 const GURL list_accounts_gurl_;
405 const GURL get_check_connection_info_url_;
387 406
388 // While a fetch is going on: 407 // While a fetch is going on:
389 scoped_ptr<net::URLFetcher> fetcher_; 408 scoped_ptr<net::URLFetcher> fetcher_;
390 GURL client_login_to_oauth2_gurl_; 409 GURL client_login_to_oauth2_gurl_;
391 std::string request_body_; 410 std::string request_body_;
392 std::string requested_service_; // Currently tracked for IssueAuthToken only. 411 std::string requested_service_; // Currently tracked for IssueAuthToken only.
393 bool fetch_pending_; 412 bool fetch_pending_;
394 413
395 friend class GaiaAuthFetcherTest; 414 friend class GaiaAuthFetcherTest;
396 FRIEND_TEST_ALL_PREFIXES(GaiaAuthFetcherTest, CaptchaParse); 415 FRIEND_TEST_ALL_PREFIXES(GaiaAuthFetcherTest, CaptchaParse);
(...skipping 10 matching lines...) Expand all
407 FRIEND_TEST_ALL_PREFIXES(GaiaAuthFetcherTest, ParseOAuth2TokenPairResponse); 426 FRIEND_TEST_ALL_PREFIXES(GaiaAuthFetcherTest, ParseOAuth2TokenPairResponse);
408 FRIEND_TEST_ALL_PREFIXES(GaiaAuthFetcherTest, ClientOAuthSuccess); 427 FRIEND_TEST_ALL_PREFIXES(GaiaAuthFetcherTest, ClientOAuthSuccess);
409 FRIEND_TEST_ALL_PREFIXES(GaiaAuthFetcherTest, ClientOAuthWithQuote); 428 FRIEND_TEST_ALL_PREFIXES(GaiaAuthFetcherTest, ClientOAuthWithQuote);
410 FRIEND_TEST_ALL_PREFIXES(GaiaAuthFetcherTest, ClientOAuthChallengeSuccess); 429 FRIEND_TEST_ALL_PREFIXES(GaiaAuthFetcherTest, ClientOAuthChallengeSuccess);
411 FRIEND_TEST_ALL_PREFIXES(GaiaAuthFetcherTest, ClientOAuthChallengeQuote); 430 FRIEND_TEST_ALL_PREFIXES(GaiaAuthFetcherTest, ClientOAuthChallengeQuote);
412 431
413 DISALLOW_COPY_AND_ASSIGN(GaiaAuthFetcher); 432 DISALLOW_COPY_AND_ASSIGN(GaiaAuthFetcher);
414 }; 433 };
415 434
416 #endif // GOOGLE_APIS_GAIA_GAIA_AUTH_FETCHER_H_ 435 #endif // GOOGLE_APIS_GAIA_GAIA_AUTH_FETCHER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698