summaryrefslogtreecommitdiffstats
path: root/net/url_request
diff options
context:
space:
mode:
authorsatish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-04 17:53:22 +0000
committersatish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-04 17:53:22 +0000
commit0c9bf87fe0b87849105fc7a2ea16280e48ee9089 (patch)
tree8858b7c1f6c1071b2a0f93a92c72f08dcb0ad96d /net/url_request
parent27030d8d5d54002e1baaf19fefd909ebfb82de40 (diff)
downloadchromium_src-0c9bf87fe0b87849105fc7a2ea16280e48ee9089.zip
chromium_src-0c9bf87fe0b87849105fc7a2ea16280e48ee9089.tar.gz
chromium_src-0c9bf87fe0b87849105fc7a2ea16280e48ee9089.tar.bz2
Add chunked uploads support to SPDY
As part of this, I had to move the chunked encoding part from UploadData::Element::SetChunk to HttpStreamParser::DoSendBody as SPDY doesn't have this encoded format and UploadData needs to serve both. BUG=none TEST=net_unittests (2 new tests added) Committed and rolled back: http://src.chromium.org/viewvc/chrome?view=rev&revision=76892 Review URL: http://codereview.chromium.org/6292013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76930 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/url_request')
-rw-r--r--net/url_request/url_request.cc12
-rw-r--r--net/url_request/url_request.h7
-rw-r--r--net/url_request/url_request_unittest.cc13
3 files changed, 13 insertions, 19 deletions
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
index e25bac6..5af99ea 100644
--- a/net/url_request/url_request.cc
+++ b/net/url_request/url_request.cc
@@ -184,17 +184,13 @@ void URLRequest::EnableChunkedUpload() {
}
}
-void URLRequest::AppendChunkToUpload(const char* bytes, int bytes_len) {
+void URLRequest::AppendChunkToUpload(const char* bytes,
+ int bytes_len,
+ bool is_last_chunk) {
DCHECK(upload_);
DCHECK(upload_->is_chunked());
DCHECK_GT(bytes_len, 0);
- upload_->AppendChunk(bytes, bytes_len);
-}
-
-void URLRequest::MarkEndOfChunks() {
- DCHECK(upload_);
- DCHECK(upload_->is_chunked());
- upload_->AppendChunk(NULL, 0);
+ upload_->AppendChunk(bytes, bytes_len, is_last_chunk);
}
void URLRequest::set_upload(net::UploadData* upload) {
diff --git a/net/url_request/url_request.h b/net/url_request/url_request.h
index a2ad24b..849a03b 100644
--- a/net/url_request/url_request.h
+++ b/net/url_request/url_request.h
@@ -330,10 +330,9 @@ class URLRequest : public base::NonThreadSafe {
// call MarkEndOfChunks() to indicate the end of upload data.
//
// This method may be called only after calling EnableChunkedUpload().
- void AppendChunkToUpload(const char* bytes, int bytes_len);
-
- // Indicates the end of a chunked transfer encoded request body.
- void MarkEndOfChunks();
+ void AppendChunkToUpload(const char* bytes,
+ int bytes_len,
+ bool is_last_chunk);
// Set the upload data directly.
void set_upload(net::UploadData* upload);
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
index 5e03f9b..d0b8f58 100644
--- a/net/url_request/url_request_unittest.cc
+++ b/net/url_request/url_request_unittest.cc
@@ -178,13 +178,12 @@ class URLRequestTestHTTP : public URLRequestTest {
}
void AddChunksToUpload(TestURLRequest* r) {
- r->AppendChunkToUpload("a", 1);
- r->AppendChunkToUpload("bcd", 3);
- r->AppendChunkToUpload("this is a longer chunk than before.", 35);
- r->AppendChunkToUpload("\r\n\r\n", 4);
- r->AppendChunkToUpload("0", 1);
- r->AppendChunkToUpload("2323", 4);
- r->MarkEndOfChunks();
+ r->AppendChunkToUpload("a", 1, false);
+ r->AppendChunkToUpload("bcd", 3, false);
+ r->AppendChunkToUpload("this is a longer chunk than before.", 35, false);
+ r->AppendChunkToUpload("\r\n\r\n", 4, false);
+ r->AppendChunkToUpload("0", 1, false);
+ r->AppendChunkToUpload("2323", 4, true);
}
void VerifyReceivedDataMatchesChunks(TestURLRequest* r, TestDelegate* d) {