diff options
Diffstat (limited to 'src/core/net/url_request_custom_job.cpp')
-rw-r--r-- | src/core/net/url_request_custom_job.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/core/net/url_request_custom_job.cpp b/src/core/net/url_request_custom_job.cpp index 607e8d232..0d4ac620f 100644 --- a/src/core/net/url_request_custom_job.cpp +++ b/src/core/net/url_request_custom_job.cpp @@ -62,6 +62,7 @@ URLRequestCustomJob::URLRequestCustomJob(URLRequest *request, : URLRequestJob(request, networkDelegate) , m_proxy(new URLRequestCustomJobProxy(this, scheme, profileAdapter)) , m_device(nullptr) + , m_firstBytePosition(0) , m_error(0) , m_pendingReadSize(0) , m_pendingReadPos(0) @@ -184,6 +185,19 @@ bool URLRequestCustomJob::IsRedirectResponse(GURL *location, int *http_status_co return false; } +void URLRequestCustomJob::SetExtraRequestHeaders(const HttpRequestHeaders &headers) +{ + std::string rangeHeader; + if (headers.GetHeader(HttpRequestHeaders::kRange, &rangeHeader)) { + std::vector<HttpByteRange> ranges; + if (HttpUtil::ParseRangeHeader(rangeHeader, &ranges)) { + // Chromium doesn't support multiple range requests in one single URL request. + if (ranges.size() == 1) + m_firstBytePosition = ranges[0].first_byte_position(); + } + } +} + int URLRequestCustomJob::ReadRawData(IOBuffer *buf, int bufSize) { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |