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

Unified Diff: google_apis/gaia/gaia_auth_fetcher.cc

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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « google_apis/gaia/gaia_auth_fetcher.h ('k') | google_apis/gaia/gaia_auth_fetcher_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: google_apis/gaia/gaia_auth_fetcher.cc
diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_fetcher.cc
index 5464da89873c79c1907c7bc48abb3cad71c2086e..b0046d5eb30094023cb3354db2e3553919226a52 100644
--- a/google_apis/gaia/gaia_auth_fetcher.cc
+++ b/google_apis/gaia/gaia_auth_fetcher.cc
@@ -186,6 +186,8 @@ GaiaAuthFetcher::GaiaAuthFetcher(GaiaAuthConsumer* consumer,
base::StringPrintf(kUberAuthTokenURLFormat, source.c_str()))),
oauth_login_gurl_(GaiaUrls::GetInstance()->oauth1_login_url()),
list_accounts_gurl_(GaiaUrls::GetInstance()->list_accounts_url()),
+ get_check_connection_info_url_(
+ GaiaUrls::GetInstance()->get_check_connection_info_url()),
client_login_to_oauth2_gurl_(
GaiaUrls::GetInstance()->client_login_to_oauth2_url()),
fetch_pending_(false) {}
@@ -349,16 +351,24 @@ std::string GaiaAuthFetcher::MakeGetUserInfoBody(const std::string& lsid) {
// static
std::string GaiaAuthFetcher::MakeMergeSessionBody(
const std::string& auth_token,
+ const std::string& external_cc_result,
const std::string& continue_url,
const std::string& source) {
std::string encoded_auth_token = net::EscapeUrlEncodedData(auth_token, true);
std::string encoded_continue_url = net::EscapeUrlEncodedData(continue_url,
true);
std::string encoded_source = net::EscapeUrlEncodedData(source, true);
- return base::StringPrintf(kMergeSessionFormat,
- encoded_auth_token.c_str(),
- encoded_continue_url.c_str(),
- encoded_source.c_str());
+ std::string result = base::StringPrintf(kMergeSessionFormat,
+ encoded_auth_token.c_str(),
+ encoded_continue_url.c_str(),
+ encoded_source.c_str());
+ if (!external_cc_result.empty()) {
+ base::StringAppendF(&result, "&externalCcResult=%s",
+ net::EscapeUrlEncodedData(
+ external_cc_result, true).c_str());
+ }
+
+ return result;
}
// static
@@ -622,7 +632,8 @@ void GaiaAuthFetcher::StartGetUserInfo(const std::string& lsid) {
fetcher_->Start();
}
-void GaiaAuthFetcher::StartMergeSession(const std::string& uber_token) {
+void GaiaAuthFetcher::StartMergeSession(const std::string& uber_token,
+ const std::string& external_cc_result) {
DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
DVLOG(1) << "Starting MergeSession with uber_token=" << uber_token;
@@ -636,7 +647,8 @@ void GaiaAuthFetcher::StartMergeSession(const std::string& uber_token) {
// created such that it sends the cookies with the request, which is
// different from all other requests the fetcher can make.
std::string continue_url("http://www.google.com");
- request_body_ = MakeMergeSessionBody(uber_token, continue_url, source_);
+ request_body_ = MakeMergeSessionBody(uber_token, external_cc_result,
+ continue_url, source_);
fetcher_.reset(CreateGaiaFetcher(getter_,
request_body_,
std::string(),
@@ -695,6 +707,19 @@ void GaiaAuthFetcher::StartListAccounts() {
fetcher_->Start();
}
+void GaiaAuthFetcher::StartGetCheckConnectionInfo() {
+ DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
+
+ fetcher_.reset(CreateGaiaFetcher(getter_,
+ std::string(),
+ std::string(),
+ get_check_connection_info_url_,
+ kLoadFlagsIgnoreCookies,
+ this));
+ fetch_pending_ = true;
+ fetcher_->Start();
+}
+
// static
GoogleServiceAuthError GaiaAuthFetcher::GenerateAuthError(
const std::string& data,
@@ -891,6 +916,17 @@ void GaiaAuthFetcher::OnOAuthLoginFetched(const std::string& data,
}
}
+void GaiaAuthFetcher::OnGetCheckConnectionInfoFetched(
+ const std::string& data,
+ const net::URLRequestStatus& status,
+ int response_code) {
+ if (status.is_success() && response_code == net::HTTP_OK) {
+ consumer_->OnGetCheckConnectionInfoSuccess(data);
+ } else {
+ consumer_->OnGetCheckConnectionInfoError(GenerateAuthError(data, status));
+ }
+}
+
void GaiaAuthFetcher::OnURLFetchComplete(const net::URLFetcher* source) {
fetch_pending_ = false;
// Some of the GAIA requests perform redirects, which results in the final
@@ -932,6 +968,8 @@ void GaiaAuthFetcher::OnURLFetchComplete(const net::URLFetcher* source) {
OnOAuth2RevokeTokenFetched(data, status, response_code);
} else if (url == list_accounts_gurl_) {
OnListAccountsFetched(data, status, response_code);
+ } else if (url == get_check_connection_info_url_) {
+ OnGetCheckConnectionInfoFetched(data, status, response_code);
} else {
NOTREACHED();
}
« no previous file with comments | « google_apis/gaia/gaia_auth_fetcher.h ('k') | google_apis/gaia/gaia_auth_fetcher_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698