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

Unified Diff: chrome/service/cloud_print/cloud_print_url_fetcher.cc

Issue 8387011: Chrome proxy refactoring. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 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/service/cloud_print/cloud_print_url_fetcher.cc
===================================================================
--- chrome/service/cloud_print/cloud_print_url_fetcher.cc (revision 104911)
+++ chrome/service/cloud_print/cloud_print_url_fetcher.cc (working copy)
@@ -15,11 +15,17 @@
#include "googleurl/src/gurl.h"
#include "net/url_request/url_request_status.h"
+const int kHTTPUnsupportedMediaType = 415;
+
CloudPrintURLFetcher::CloudPrintURLFetcher()
: delegate_(NULL),
num_retries_(0) {
}
+bool CloudPrintURLFetcher::IsSameRequest(const URLFetcher* source) {
+ return (request_.get() == source);
+}
+
void CloudPrintURLFetcher::StartGetRequest(
const GURL& url,
Delegate* delegate,
@@ -68,15 +74,13 @@
response_code,
cookies,
data);
+
+ // If we get auth error, notify delegate and check if it wants to procceed.
+ if (action == CONTINUE_PROCESSING && RC_FORBIDDEN == response_code) {
+ action = delegate_->OnRequestAuthError();
+ }
+
if (action == CONTINUE_PROCESSING) {
- // If we are not using an OAuth token, and we got an auth error, we are
- // done. Else, the token may have been refreshed. Let us try again.
- if ((RC_FORBIDDEN == response_code) &&
- (!CloudPrintTokenStore::current() ||
- !CloudPrintTokenStore::current()->token_is_oauth())) {
- delegate_->OnRequestAuthError();
- return;
- }
// We need to retry on all network errors.
if (!status.is_success() || (response_code != 200))
action = RETRY_REQUEST;
@@ -108,6 +112,12 @@
// be ignored.
request_->ReceivedContentWasMalformed();
+ // If we receive error code from the server "Media Type Not Supported",
+ // there is no reasons to retry, request will never succeed.
+ // In that case we should call OnRequestGiveUp() right away.
+ if (response_code == kHTTPUnsupportedMediaType)
+ num_retries_ = source->max_retries();
+
++num_retries_;
if ((-1 != source->max_retries()) &&
(num_retries_ > source->max_retries())) {
@@ -139,8 +149,8 @@
// Since we implement our own retry logic, disable the retry in URLFetcher.
request_->set_automatically_retry_on_5xx(false);
request_->set_max_retries(max_retries);
+ delegate_ = delegate;
SetupRequestHeaders();
- delegate_ = delegate;
if (request_type == URLFetcher::POST) {
request_->set_upload_data(post_data_mime_type, post_data);
}
@@ -149,14 +159,9 @@
}
void CloudPrintURLFetcher::SetupRequestHeaders() {
- std::string headers;
- CloudPrintTokenStore* token_store = CloudPrintTokenStore::current();
- if (token_store) {
- headers = token_store->token_is_oauth() ?
- "Authorization: OAuth " : "Authorization: GoogleLogin auth=";
- headers += token_store->token();
+ std::string headers = delegate_->GetAuthHeader();
+ if (!headers.empty())
headers += "\r\n";
- }
headers += kChromeCloudPrintProxyHeader;
if (!additional_headers_.empty()) {
headers += "\r\n";

Powered by Google App Engine
This is Rietveld 408576698