Commit 78376afd authored by kuan@chromium.org's avatar kuan@chromium.org

content::URLFetcher: Add HTTP PUT request type and method to append header string.

PUT request is needed for uploading files to gdata.

BUG=chromium-os:25357
TEST=nothing yet.

Review URL: http://codereview.chromium.org/9342007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@120731 0039d316-1c4b-4281-b951-d872f2087c98
parent 6d4154b7
...@@ -798,10 +798,11 @@ void URLFetcherImpl::Core::StartURLRequest() { ...@@ -798,10 +798,11 @@ void URLFetcherImpl::Core::StartURLRequest() {
break; break;
case POST: case POST:
case PUT:
DCHECK(!upload_content_.empty() || is_chunked_upload_); DCHECK(!upload_content_.empty() || is_chunked_upload_);
DCHECK(!upload_content_type_.empty()); DCHECK(!upload_content_type_.empty());
request_->set_method("POST"); request_->set_method(request_type_ == POST ? "POST" : "PUT");
extra_request_headers_.SetHeader(net::HttpRequestHeaders::kContentType, extra_request_headers_.SetHeader(net::HttpRequestHeaders::kContentType,
upload_content_type_); upload_content_type_);
if (!upload_content_.empty()) { if (!upload_content_.empty()) {
...@@ -975,6 +976,10 @@ void URLFetcherImpl::SetExtraRequestHeaders( ...@@ -975,6 +976,10 @@ void URLFetcherImpl::SetExtraRequestHeaders(
core_->extra_request_headers_.AddHeadersFromString(extra_request_headers); core_->extra_request_headers_.AddHeadersFromString(extra_request_headers);
} }
void URLFetcherImpl::AddExtraRequestHeader(const std::string& header_line) {
core_->extra_request_headers_.AddHeaderFromString(header_line);
}
void URLFetcherImpl::GetExtraRequestHeaders(net::HttpRequestHeaders* headers) { void URLFetcherImpl::GetExtraRequestHeaders(net::HttpRequestHeaders* headers) {
headers->CopyFrom(core_->extra_request_headers_); headers->CopyFrom(core_->extra_request_headers_);
} }
......
// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
...@@ -46,6 +46,7 @@ class CONTENT_EXPORT URLFetcherImpl : public content::URLFetcher{ ...@@ -46,6 +46,7 @@ class CONTENT_EXPORT URLFetcherImpl : public content::URLFetcher{
virtual void SetReferrer(const std::string& referrer) OVERRIDE; virtual void SetReferrer(const std::string& referrer) OVERRIDE;
virtual void SetExtraRequestHeaders( virtual void SetExtraRequestHeaders(
const std::string& extra_request_headers) OVERRIDE; const std::string& extra_request_headers) OVERRIDE;
virtual void AddExtraRequestHeader(const std::string& header_line) OVERRIDE;
virtual void GetExtraRequestHeaders( virtual void GetExtraRequestHeaders(
net::HttpRequestHeaders* headers) OVERRIDE; net::HttpRequestHeaders* headers) OVERRIDE;
virtual void SetRequestContext( virtual void SetRequestContext(
......
// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
...@@ -76,6 +76,7 @@ class CONTENT_EXPORT URLFetcher { ...@@ -76,6 +76,7 @@ class CONTENT_EXPORT URLFetcher {
HEAD, HEAD,
DELETE_REQUEST, // DELETE is already taken on Windows. DELETE_REQUEST, // DELETE is already taken on Windows.
// <winnt.h> defines a DELETE macro. // <winnt.h> defines a DELETE macro.
PUT,
}; };
// |url| is the URL to send the request to. // |url| is the URL to send the request to.
...@@ -139,9 +140,15 @@ class CONTENT_EXPORT URLFetcher { ...@@ -139,9 +140,15 @@ class CONTENT_EXPORT URLFetcher {
// Set extra headers on the request. Must be called before the request // Set extra headers on the request. Must be called before the request
// is started. // is started.
// This replaces the entire extra request headers.
virtual void SetExtraRequestHeaders( virtual void SetExtraRequestHeaders(
const std::string& extra_request_headers) = 0; const std::string& extra_request_headers) = 0;
// Add header (with format field-name ":" [ field-value ]) to the request
// headers. Must be called before the request is started.
// This appends the header to the current extra request headers.
virtual void AddExtraRequestHeader(const std::string& header_line) = 0;
virtual void GetExtraRequestHeaders(net::HttpRequestHeaders* headers) = 0; virtual void GetExtraRequestHeaders(net::HttpRequestHeaders* headers) = 0;
// Set the net::URLRequestContext on the request. Must be called before the // Set the net::URLRequestContext on the request. Must be called before the
......
...@@ -76,6 +76,10 @@ void TestURLFetcher::SetExtraRequestHeaders( ...@@ -76,6 +76,10 @@ void TestURLFetcher::SetExtraRequestHeaders(
fake_extra_request_headers_.AddHeadersFromString(extra_request_headers); fake_extra_request_headers_.AddHeadersFromString(extra_request_headers);
} }
void TestURLFetcher::AddExtraRequestHeader(const std::string& header_line) {
fake_extra_request_headers_.AddHeaderFromString(header_line);
}
void TestURLFetcher::GetExtraRequestHeaders(net::HttpRequestHeaders* headers) { void TestURLFetcher::GetExtraRequestHeaders(net::HttpRequestHeaders* headers) {
*headers = fake_extra_request_headers_; *headers = fake_extra_request_headers_;
} }
......
// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
...@@ -74,6 +74,7 @@ class TestURLFetcher : public content::URLFetcher { ...@@ -74,6 +74,7 @@ class TestURLFetcher : public content::URLFetcher {
virtual void SetReferrer(const std::string& referrer) OVERRIDE; virtual void SetReferrer(const std::string& referrer) OVERRIDE;
virtual void SetExtraRequestHeaders( virtual void SetExtraRequestHeaders(
const std::string& extra_request_headers) OVERRIDE; const std::string& extra_request_headers) OVERRIDE;
virtual void AddExtraRequestHeader(const std::string& header_line) OVERRIDE;
virtual void GetExtraRequestHeaders( virtual void GetExtraRequestHeaders(
net::HttpRequestHeaders* headers) OVERRIDE; net::HttpRequestHeaders* headers) OVERRIDE;
virtual void SetRequestContext( virtual void SetRequestContext(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment