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

Unified Diff: chrome/browser/net/gaia/gaia_oauth_fetcher.cc

Issue 9271025: Update Gaia URL. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix nit Created 8 years, 11 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
Index: chrome/browser/net/gaia/gaia_oauth_fetcher.cc
diff --git a/chrome/browser/net/gaia/gaia_oauth_fetcher.cc b/chrome/browser/net/gaia/gaia_oauth_fetcher.cc
index 4ede11e4527865e6ac390263b491ee015398498e..2f9e1f602dd8e1942f8accd8c2e30c2e9df9c93a 100644
--- a/chrome/browser/net/gaia/gaia_oauth_fetcher.cc
+++ b/chrome/browser/net/gaia/gaia_oauth_fetcher.cc
@@ -11,6 +11,7 @@
#include "base/json/json_reader.h"
#include "base/string_split.h"
#include "base/string_util.h"
+#include "chrome/browser/net/browser_url_util.h"
#include "chrome/browser/net/gaia/gaia_oauth_consumer.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/tabs/tab_strip_model.h"
@@ -671,6 +672,9 @@ void GaiaOAuthFetcher::OnURLFetchComplete(const content::URLFetcher* source) {
source->GetResponseAsString(&data);
net::URLRequestStatus status = source->GetStatus();
int response_code = source->GetResponseCode();
+ VLOG(1) << "GaiaOAuthFetcher::OnURLFetchComplete"
+ << ", url=" << url.spec()
+ << ", status=" << response_code;
if (StartsWithASCII(url.spec(), gaia_urls->get_oauth_token_url(), true)) {
OnGetOAuthTokenUrlFetched(source->GetCookies(), status, response_code);
} else if (url.spec() == gaia_urls->oauth1_login_url()) {
@@ -686,7 +690,45 @@ void GaiaOAuthFetcher::OnURLFetchComplete(const content::URLFetcher* source) {
true)) {
OnOAuthRevokeTokenFetched(data, status, response_code);
} else {
- NOTREACHED();
+ // Invalid cookies cause Gaia to redirect to ServiceLogin. Check if
+ // this is the case and report failure properly.
+ std::string url_no_query = url.GetOrigin().spec() + url.path().substr(1);
+ std::string continue_url;
+ if (url_no_query == gaia_urls->service_login_url() &&
+ chrome_browser_net::GetValueForKeyInQuery(url, "continue",
+ &continue_url)) {
+ LOG(ERROR) << "GaiaOAuthFetcher redirected to service login"
+ << " , url=" << url.spec();
+
+ if (StartsWithASCII(continue_url,
+ gaia_urls->get_oauth_token_url(),
+ true)) {
+ consumer_->OnGetOAuthTokenFailure(GoogleServiceAuthError(
+ GoogleServiceAuthError::SERVICE_UNAVAILABLE));
+ } else if (continue_url == gaia_urls->oauth1_login_url()) {
+ consumer_->OnOAuthLoginFailure(GoogleServiceAuthError(
+ GoogleServiceAuthError::SERVICE_UNAVAILABLE));
+ } else if (continue_url == gaia_urls->oauth_get_access_token_url()) {
+ consumer_->OnOAuthGetAccessTokenFailure(GoogleServiceAuthError(
+ GoogleServiceAuthError::SERVICE_UNAVAILABLE));
+ } else if (continue_url == gaia_urls->oauth_wrap_bridge_url()) {
+ consumer_->OnOAuthWrapBridgeFailure(service_scope_,
+ GoogleServiceAuthError(
+ GoogleServiceAuthError::SERVICE_UNAVAILABLE));
+ } else if (continue_url == gaia_urls->oauth_user_info_url()) {
+ consumer_->OnUserInfoFailure(GoogleServiceAuthError(
+ GoogleServiceAuthError::SERVICE_UNAVAILABLE));
+ } else if (StartsWithASCII(continue_url,
+ gaia_urls->oauth_revoke_token_url(),
+ true)) {
+ consumer_->OnOAuthRevokeTokenFailure(GoogleServiceAuthError(
+ GoogleServiceAuthError::SERVICE_UNAVAILABLE));
+ } else {
+ NOTREACHED();
+ }
+ } else {
+ NOTREACHED() << "GaiaOAuthFetcher unknown url=" << url.spec();
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698