summaryrefslogtreecommitdiffstats
path: root/net/http/partial_data.cc
diff options
context:
space:
mode:
authorwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-20 22:15:43 +0000
committerwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-20 22:15:43 +0000
commit8c76ae2ff868d7968c850f06822e2f8353bd87e1 (patch)
tree0051ecbee24c9b48fc46ae914aedd8b7a1ab0c25 /net/http/partial_data.cc
parent1e507001a1f4b7e9f96ad4faffd0448a586ac304 (diff)
downloadchromium_src-8c76ae2ff868d7968c850f06822e2f8353bd87e1.zip
chromium_src-8c76ae2ff868d7968c850f06822e2f8353bd87e1.tar.gz
chromium_src-8c76ae2ff868d7968c850f06822e2f8353bd87e1.tar.bz2
Use HttpRequestHeaders for extra_headers.
BUG=22588 Review URL: http://codereview.chromium.org/1604011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45096 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http/partial_data.cc')
-rw-r--r--net/http/partial_data.cc50
1 files changed, 27 insertions, 23 deletions
diff --git a/net/http/partial_data.cc b/net/http/partial_data.cc
index f727699..83bdb3b 100644
--- a/net/http/partial_data.cc
+++ b/net/http/partial_data.cc
@@ -12,6 +12,8 @@
#include "net/http/http_response_headers.h"
#include "net/http/http_util.h"
+namespace net {
+
namespace {
// The headers that we have to process.
@@ -19,13 +21,28 @@ const char kLengthHeader[] = "Content-Length";
const char kRangeHeader[] = "Content-Range";
const int kDataStream = 1;
+void AddRangeHeader(int64 start, int64 end, HttpRequestHeaders* headers) {
+ DCHECK(start >= 0 || end >= 0);
+ std::string my_start, my_end;
+ if (start >= 0)
+ my_start = Int64ToString(start);
+ if (end >= 0)
+ my_end = Int64ToString(end);
+
+ headers->SetHeader(
+ HttpRequestHeaders::kRange,
+ StringPrintf("bytes=%s-%s", my_start.c_str(), my_end.c_str()));
}
-namespace net {
+} // namespace
+
+bool PartialData::Init(const HttpRequestHeaders& headers) {
+ std::string range_header;
+ if (!headers.GetHeader(HttpRequestHeaders::kRange, &range_header))
+ return false;
-bool PartialData::Init(const std::string& headers) {
std::vector<HttpByteRange> ranges;
- if (!HttpUtil::ParseRanges(headers, &ranges) || ranges.size() != 1)
+ if (!HttpUtil::ParseRangeHeader(range_header, &ranges) || ranges.size() != 1)
return false;
// We can handle this range request.
@@ -38,23 +55,23 @@ bool PartialData::Init(const std::string& headers) {
return true;
}
-void PartialData::SetHeaders(const std::string& headers) {
- DCHECK(extra_headers_.empty());
- extra_headers_ = headers;
+void PartialData::SetHeaders(const HttpRequestHeaders& headers) {
+ DCHECK(extra_headers_.IsEmpty());
+ extra_headers_.CopyFrom(headers);
}
-void PartialData::RestoreHeaders(std::string* headers) const {
+void PartialData::RestoreHeaders(HttpRequestHeaders* headers) const {
DCHECK(current_range_start_ >= 0 || byte_range_.IsSuffixByteRange());
int64 end = byte_range_.IsSuffixByteRange() ?
byte_range_.suffix_length() : byte_range_.last_byte_position();
- headers->assign(extra_headers_);
+ headers->CopyFrom(extra_headers_);
if (byte_range_.IsValid())
AddRangeHeader(current_range_start_, end, headers);
}
int PartialData::PrepareCacheValidation(disk_cache::Entry* entry,
- std::string* headers) {
+ HttpRequestHeaders* headers) {
DCHECK(current_range_start_ >= 0);
// Scan the disk cache for the first cached portion within this range.
@@ -86,7 +103,7 @@ int PartialData::PrepareCacheValidation(disk_cache::Entry* entry,
return cached_min_len_;
}
- headers->assign(extra_headers_);
+ headers->CopyFrom(extra_headers_);
if (!cached_min_len_) {
// We don't have anything else stored.
@@ -322,17 +339,4 @@ void PartialData::OnNetworkReadCompleted(int result) {
current_range_start_ += result;
}
-// Static.
-void PartialData::AddRangeHeader(int64 start, int64 end, std::string* headers) {
- DCHECK(start >= 0 || end >= 0);
- std::string my_start, my_end;
- if (start >= 0)
- my_start = Int64ToString(start);
- if (end >= 0)
- my_end = Int64ToString(end);
-
- headers->append(StringPrintf("Range: bytes=%s-%s\r\n", my_start.c_str(),
- my_end.c_str()));
-}
-
} // namespace net