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

Unified Diff: chrome/common/net/gaia/gaia_auth_fetcher.cc

Issue 9301003: Change X-Auto-Login implementation to use OAuth token. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Copyright. Created 8 years, 10 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 | « chrome/common/net/gaia/gaia_auth_fetcher.h ('k') | chrome/common/net/gaia/gaia_auth_fetcher_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/common/net/gaia/gaia_auth_fetcher.cc
diff --git a/chrome/common/net/gaia/gaia_auth_fetcher.cc b/chrome/common/net/gaia/gaia_auth_fetcher.cc
index 94b73fa83de273513cc29f1919f36989695440b8..ba2f6b73a25c4f9ab58b6c7e06e152979f7ac9c6 100644
--- a/chrome/common/net/gaia/gaia_auth_fetcher.cc
+++ b/chrome/common/net/gaia/gaia_auth_fetcher.cc
@@ -80,6 +80,10 @@ const char GaiaAuthFetcher::kMergeSessionFormat[] =
"uberauth=%s&"
"continue=%s&"
"source=%s";
+// static
+const char GaiaAuthFetcher::kUberAuthTokenURLFormat[] =
+ "%s?source=%s&"
+ "issueuberauth=1";
// static
const char GaiaAuthFetcher::kAccountDeletedError[] = "AccountDeleted";
@@ -124,6 +128,8 @@ const char GaiaAuthFetcher::kSecondFactor[] = "Info=InvalidSecondFactor";
const char GaiaAuthFetcher::kAuthHeaderFormat[] =
"Authorization: GoogleLogin auth=%s";
// static
+const char GaiaAuthFetcher::kOAuthHeaderFormat[] = "Authorization: OAuth %s";
+// static
const char GaiaAuthFetcher::kClientLoginToOAuth2CookiePartSecure[] = "Secure";
// static
const char GaiaAuthFetcher::kClientLoginToOAuth2CookiePartHttpOnly[] =
@@ -155,6 +161,8 @@ GaiaAuthFetcher::GaiaAuthFetcher(GaiaAuthConsumer* consumer,
get_user_info_gurl_(GaiaUrls::GetInstance()->get_user_info_url()),
token_auth_gurl_(GaiaUrls::GetInstance()->token_auth_url()),
merge_session_gurl_(GaiaUrls::GetInstance()->merge_session_url()),
+ uberauth_token_gurl_(base::StringPrintf(kUberAuthTokenURLFormat,
+ GaiaUrls::GetInstance()->oauth1_login_url().c_str(), source.c_str())),
fetch_pending_(false) {}
GaiaAuthFetcher::~GaiaAuthFetcher() {}
@@ -177,7 +185,9 @@ content::URLFetcher* GaiaAuthFetcher::CreateGaiaFetcher(
bool use_cookies,
content::URLFetcherDelegate* delegate) {
content::URLFetcher* to_return = content::URLFetcher::Create(
- 0, gaia_gurl, content::URLFetcher::POST, delegate);
+ 0, gaia_gurl,
+ body == "" ? content::URLFetcher::GET : content::URLFetcher::POST,
+ delegate);
to_return->SetRequestContext(getter);
to_return->SetUploadData("application/x-www-form-urlencoded", body);
@@ -571,6 +581,24 @@ void GaiaAuthFetcher::StartMergeSession(const std::string& auth_token) {
}
// static
+void GaiaAuthFetcher::StartUberAuthTokenFetch(const std::string& access_token) {
+ DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
+
+ DVLOG(1) << "Starting StartUberAuthTokenFetch with access_token="
+ << access_token;
+ std::string authentication_header =
+ base::StringPrintf(kOAuthHeaderFormat, access_token.c_str());
+ fetcher_.reset(CreateGaiaFetcher(getter_,
+ "",
+ authentication_header,
+ uberauth_token_gurl_,
+ false,
+ this));
+ fetch_pending_ = true;
+ fetcher_->Start();
+}
+
+// static
GoogleServiceAuthError GaiaAuthFetcher::GenerateAuthError(
const std::string& data,
const net::URLRequestStatus& status) {
@@ -797,6 +825,16 @@ void GaiaAuthFetcher::OnMergeSessionFetched(const std::string& data,
}
}
+void GaiaAuthFetcher::OnUberAuthTokenFetch(const std::string& data,
+ const net::URLRequestStatus& status,
+ int response_code) {
+ if (status.is_success() && response_code == RC_REQUEST_OK) {
+ consumer_->OnUberAuthTokenSuccess(data);
+ } else {
+ consumer_->OnUberAuthTokenFailure(GenerateAuthError(data, status));
+ }
+}
+
void GaiaAuthFetcher::OnURLFetchComplete(const content::URLFetcher* source) {
fetch_pending_ = false;
const GURL& url = source->GetURL();
@@ -821,6 +859,8 @@ void GaiaAuthFetcher::OnURLFetchComplete(const content::URLFetcher* source) {
(source && source->GetOriginalURL() == merge_session_gurl_)) {
// MergeSession may redirect, so check the original URL of the fetcher.
OnMergeSessionFetched(data, status, response_code);
+ } else if (url == uberauth_token_gurl_) {
+ OnUberAuthTokenFetch(data, status, response_code);
} else {
NOTREACHED();
}
« no previous file with comments | « chrome/common/net/gaia/gaia_auth_fetcher.h ('k') | chrome/common/net/gaia/gaia_auth_fetcher_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698