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() {
break;
case POST:
case PUT:
DCHECK(!upload_content_.empty() || is_chunked_upload_);
DCHECK(!upload_content_type_.empty());
request_->set_method("POST");
request_->set_method(request_type_ == POST ? "POST" : "PUT");
extra_request_headers_.SetHeader(net::HttpRequestHeaders::kContentType,
upload_content_type_);
if (!upload_content_.empty()) {
......@@ -975,6 +976,10 @@ void URLFetcherImpl::SetExtraRequestHeaders(
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) {
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
// found in the LICENSE file.
......@@ -46,6 +46,7 @@ class CONTENT_EXPORT URLFetcherImpl : public content::URLFetcher{
virtual void SetReferrer(const std::string& referrer) OVERRIDE;
virtual void SetExtraRequestHeaders(
const std::string& extra_request_headers) OVERRIDE;
virtual void AddExtraRequestHeader(const std::string& header_line) OVERRIDE;
virtual void GetExtraRequestHeaders(
net::HttpRequestHeaders* headers) OVERRIDE;
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
// found in the LICENSE file.
......@@ -76,6 +76,7 @@ class CONTENT_EXPORT URLFetcher {
HEAD,
DELETE_REQUEST, // DELETE is already taken on Windows.
// <winnt.h> defines a DELETE macro.
PUT,
};
// |url| is the URL to send the request to.
......@@ -139,9 +140,15 @@ class CONTENT_EXPORT URLFetcher {
// Set extra headers on the request. Must be called before the request
// is started.
// This replaces the entire extra request headers.
virtual void SetExtraRequestHeaders(
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;
// Set the net::URLRequestContext on the request. Must be called before the
......
......@@ -76,6 +76,10 @@ void TestURLFetcher::SetExtraRequestHeaders(
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) {
*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
// found in the LICENSE file.
......@@ -74,6 +74,7 @@ class TestURLFetcher : public content::URLFetcher {
virtual void SetReferrer(const std::string& referrer) OVERRIDE;
virtual void SetExtraRequestHeaders(
const std::string& extra_request_headers) OVERRIDE;
virtual void AddExtraRequestHeader(const std::string& header_line) OVERRIDE;
virtual void GetExtraRequestHeaders(
net::HttpRequestHeaders* headers) OVERRIDE;
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