diff options
author | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-07 23:14:25 +0000 |
---|---|---|
committer | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-07 23:14:25 +0000 |
commit | 88e6b6f3251af7092432c33b7d372a17c7169904 (patch) | |
tree | 3fde374eed02ee05026449729952f0364609971b /net | |
parent | da244100d3ac663a1f827fc712dc508c7761d207 (diff) | |
download | chromium_src-88e6b6f3251af7092432c33b7d372a17c7169904.zip chromium_src-88e6b6f3251af7092432c33b7d372a17c7169904.tar.gz chromium_src-88e6b6f3251af7092432c33b7d372a17c7169904.tar.bz2 |
Pass HttpRequestHeaders to URLRequest::SetExtraRequestHeaders().
BUG=22588
Review URL: http://codereview.chromium.org/1998008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46752 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r-- | net/ocsp/nss_ocsp.cc | 17 | ||||
-rw-r--r-- | net/url_request/url_request.cc | 12 | ||||
-rw-r--r-- | net/url_request/url_request.h | 13 | ||||
-rw-r--r-- | net/url_request/url_request_unittest.cc | 51 |
4 files changed, 51 insertions, 42 deletions
diff --git a/net/ocsp/nss_ocsp.cc b/net/ocsp/nss_ocsp.cc index 3bb34c5..fa08801 100644 --- a/net/ocsp/nss_ocsp.cc +++ b/net/ocsp/nss_ocsp.cc @@ -23,6 +23,7 @@ #include "googleurl/src/gurl.h" #include "net/base/io_buffer.h" #include "net/base/load_flags.h" +#include "net/http/http_request_headers.h" #include "net/http/http_response_headers.h" #include "net/url_request/url_request.h" #include "net/url_request/url_request_context.h" @@ -187,10 +188,8 @@ class OCSPRequestSession } void AddHeader(const char* http_header_name, const char* http_header_value) { - if (!extra_request_headers_.empty()) - extra_request_headers_ += "\r\n"; - StringAppendF(&extra_request_headers_, - "%s: %s", http_header_name, http_header_value); + extra_request_headers_.SetHeader(http_header_name, + http_header_value); } void Start() { @@ -364,14 +363,12 @@ class OCSPRequestSession DCHECK(!upload_content_type_.empty()); request_->set_method("POST"); - if (!extra_request_headers_.empty()) - extra_request_headers_ += "\r\n"; - StringAppendF(&extra_request_headers_, - "Content-Type: %s", upload_content_type_.c_str()); + extra_request_headers_.SetHeader( + net::HttpRequestHeaders::kContentType, upload_content_type_); request_->AppendBytesToUpload(upload_content_.data(), static_cast<int>(upload_content_.size())); } - if (!extra_request_headers_.empty()) + if (!extra_request_headers_.IsEmpty()) request_->SetExtraRequestHeaders(extra_request_headers_); request_->Start(); @@ -409,7 +406,7 @@ class OCSPRequestSession base::TimeDelta timeout_; // The timeout for OCSP URLRequest* request_; // The actual request this wraps scoped_refptr<net::IOBuffer> buffer_; // Read buffer - std::string extra_request_headers_; // Extra headers for the request, if any + net::HttpRequestHeaders extra_request_headers_; std::string upload_content_; // HTTP POST payload std::string upload_content_type_; // MIME type of POST payload diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc index 57ad3a3..701466e9a 100644 --- a/net/url_request/url_request.cc +++ b/net/url_request/url_request.cc @@ -137,16 +137,10 @@ void URLRequest::SetExtraRequestHeaderByName(const string& name, NOTREACHED() << "implement me!"; } -void URLRequest::SetExtraRequestHeaders(const string& headers) { +void URLRequest::SetExtraRequestHeaders( + const net::HttpRequestHeaders& headers) { DCHECK(!is_pending_); - extra_request_headers_.Clear(); - if (!headers.empty()) { -#ifndef NDEBUG - size_t crlf = headers.rfind("\r\n", headers.size() - 1); - DCHECK(crlf != headers.size() - 2) << "headers must not end with CRLF"; -#endif - extra_request_headers_.AddHeadersFromString(headers); - } + extra_request_headers_ = headers; // NOTE: This method will likely become non-trivial once the other setters // for request headers are implemented. diff --git a/net/url_request/url_request.h b/net/url_request/url_request.h index a31c6a2..250e4a2 100644 --- a/net/url_request/url_request.h +++ b/net/url_request/url_request.h @@ -328,15 +328,10 @@ class URLRequest { void SetExtraRequestHeaderByName(const std::string& name, const std::string& value, bool overwrite); - // Sets all extra request headers, from a \r\n-delimited string. Any extra - // request headers set by other methods are overwritten by this method. This - // method may only be called before Start() is called. It is an error to - // call it later. - // - // Note: \r\n is only used to separate the headers in the string if there - // are multiple headers. The last header in the string must not be followed - // by \r\n. - void SetExtraRequestHeaders(const std::string& headers); + // Sets all extra request headers. Any extra request headers set by other + // methods are overwritten by this method. This method may only be called + // before Start() is called. It is an error to call it later. + void SetExtraRequestHeaders(const net::HttpRequestHeaders& headers); const net::HttpRequestHeaders& extra_request_headers() const { return extra_request_headers_; diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc index 2cddb64..c90df21 100644 --- a/net/url_request/url_request_unittest.cc +++ b/net/url_request/url_request_unittest.cc @@ -36,6 +36,7 @@ #include "net/ftp/ftp_network_layer.h" #include "net/http/http_cache.h" #include "net/http/http_network_layer.h" +#include "net/http/http_request_headers.h" #include "net/http/http_response_headers.h" #include "net/proxy/proxy_service.h" #include "net/socket/ssl_test_util.h" @@ -687,9 +688,11 @@ TEST_F(URLRequestTest, FileTestFullSpecifiedRange) { { TestURLRequest r(temp_url, &d); - r.SetExtraRequestHeaders( - StringPrintf("Range: bytes=%" PRIuS "-%" PRIuS "\n", - first_byte_position, last_byte_position)); + net::HttpRequestHeaders headers; + headers.SetHeader(net::HttpRequestHeaders::kRange, + StringPrintf("bytes=%" PRIuS "-%" PRIuS, + first_byte_position, last_byte_position)); + r.SetExtraRequestHeaders(headers); r.Start(); EXPECT_TRUE(r.is_pending()); @@ -728,8 +731,11 @@ TEST_F(URLRequestTest, FileTestHalfSpecifiedRange) { { TestURLRequest r(temp_url, &d); - r.SetExtraRequestHeaders(StringPrintf("Range: bytes=%" PRIuS "-\n", - first_byte_position)); + net::HttpRequestHeaders headers; + headers.SetHeader(net::HttpRequestHeaders::kRange, + StringPrintf("bytes=%" PRIuS "-", + first_byte_position)); + r.SetExtraRequestHeaders(headers); r.Start(); EXPECT_TRUE(r.is_pending()); @@ -762,7 +768,10 @@ TEST_F(URLRequestTest, FileTestMultipleRanges) { { TestURLRequest r(temp_url, &d); - r.SetExtraRequestHeaders(StringPrintf("Range: bytes=0-0,10-200,200-300\n")); + net::HttpRequestHeaders headers; + headers.SetHeader(net::HttpRequestHeaders::kRange, + "bytes=0-0,10-200,200-300"); + r.SetExtraRequestHeaders(headers); r.Start(); EXPECT_TRUE(r.is_pending()); @@ -1092,7 +1101,9 @@ TEST_F(URLRequestTestHTTP, VaryHeader) { TestDelegate d; URLRequest req(server_->TestServerPage("echoheader?foo"), &d); req.set_context(context); - req.SetExtraRequestHeaders("foo: 1"); + net::HttpRequestHeaders headers; + headers.SetHeader("foo", "1"); + req.SetExtraRequestHeaders(headers); req.Start(); MessageLoop::current()->Run(); } @@ -1102,7 +1113,9 @@ TEST_F(URLRequestTestHTTP, VaryHeader) { TestDelegate d; URLRequest req(server_->TestServerPage("echoheader?foo"), &d); req.set_context(context); - req.SetExtraRequestHeaders("foo: 1"); + net::HttpRequestHeaders headers; + headers.SetHeader("foo", "1"); + req.SetExtraRequestHeaders(headers); req.Start(); MessageLoop::current()->Run(); @@ -1114,7 +1127,9 @@ TEST_F(URLRequestTestHTTP, VaryHeader) { TestDelegate d; URLRequest req(server_->TestServerPage("echoheader?foo"), &d); req.set_context(context); - req.SetExtraRequestHeaders("foo: 2"); + net::HttpRequestHeaders headers; + headers.SetHeader("foo", "2"); + req.SetExtraRequestHeaders(headers); req.Start(); MessageLoop::current()->Run(); @@ -1683,7 +1698,8 @@ TEST_F(URLRequestTestHTTP, Post302RedirectGet) { req.set_upload(CreateSimpleUploadData(kData)); // Set headers (some of which are specific to the POST). - req.SetExtraRequestHeaders( + net::HttpRequestHeaders headers; + headers.AddHeadersFromString( "Content-Type: multipart/form-data; " "boundary=----WebKitFormBoundaryAADeAA+NAAWMAAwZ\r\n" "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9," @@ -1692,6 +1708,7 @@ TEST_F(URLRequestTestHTTP, Post302RedirectGet) { "Accept-Charset: ISO-8859-1,*,utf-8\r\n" "Content-Length: 11\r\n" "Origin: http://localhost:1337/"); + req.SetExtraRequestHeaders(headers); req.Start(); MessageLoop::current()->Run(); @@ -1720,8 +1737,10 @@ TEST_F(URLRequestTestHTTP, Post307RedirectPost) { &d); req.set_method("POST"); req.set_upload(CreateSimpleUploadData(kData).get()); - req.SetExtraRequestHeaders( - "Content-Length: " + UintToString(sizeof(kData) - 1)); + net::HttpRequestHeaders headers; + headers.SetHeader(net::HttpRequestHeaders::kContentLength, + UintToString(arraysize(kData) - 1)); + req.SetExtraRequestHeaders(headers); req.Start(); MessageLoop::current()->Run(); EXPECT_EQ("POST", req.method()); @@ -2492,7 +2511,9 @@ TEST_F(URLRequestTestHTTP, OverrideAcceptLanguage) { TestURLRequest req(server_->TestServerPage("echoheaderoverride?Accept-Language"), &d); req.set_context(new TestURLRequestContext()); - req.SetExtraRequestHeaders("Accept-Language: ru"); + net::HttpRequestHeaders headers; + headers.SetHeader(net::HttpRequestHeaders::kAcceptLanguage, "ru"); + req.SetExtraRequestHeaders(headers); req.Start(); MessageLoop::current()->Run(); EXPECT_EQ(std::string("ru"), d.data_received()); @@ -2517,7 +2538,9 @@ TEST_F(URLRequestTestHTTP, OverrideAcceptCharset) { TestURLRequest req(server_->TestServerPage("echoheaderoverride?Accept-Charset"), &d); req.set_context(new TestURLRequestContext()); - req.SetExtraRequestHeaders("Accept-Charset: koi-8r"); + net::HttpRequestHeaders headers; + headers.SetHeader(net::HttpRequestHeaders::kAcceptCharset, "koi-8r"); + req.SetExtraRequestHeaders(headers); req.Start(); MessageLoop::current()->Run(); EXPECT_EQ(std::string("koi-8r"), d.data_received()); |