Chromium Code Reviews| Index: content/browser/streams/stream_url_request_job.cc |
| diff --git a/content/browser/streams/stream_url_request_job.cc b/content/browser/streams/stream_url_request_job.cc |
| index e26fe35a41a66b90eaae5ee414d5b06a1d3761f6..69251bda5da1653ff4cece81315f02b86a3e4c73 100644 |
| --- a/content/browser/streams/stream_url_request_job.cc |
| +++ b/content/browser/streams/stream_url_request_job.cc |
| @@ -23,7 +23,7 @@ StreamURLRequestJob::StreamURLRequestJob( |
| net::URLRequest* request, |
| net::NetworkDelegate* network_delegate, |
| scoped_refptr<Stream> stream) |
| - : net::URLRequestJob(request, network_delegate), |
| + : net::URLRangeRequestJob(request, network_delegate), |
| stream_(stream), |
| headers_set_(false), |
| pending_buffer_size_(0), |
| @@ -147,31 +147,18 @@ int StreamURLRequestJob::GetResponseCode() const { |
| return response_info_->headers->response_code(); |
| } |
| -void StreamURLRequestJob::SetExtraRequestHeaders( |
| - const net::HttpRequestHeaders& headers) { |
| - std::string range_header; |
| - if (headers.GetHeader(net::HttpRequestHeaders::kRange, &range_header)) { |
| - std::vector<net::HttpByteRange> ranges; |
| - if (net::HttpUtil::ParseRangeHeader(range_header, &ranges)) { |
| - if (ranges.size() == 1) { |
| - // Streams don't support seeking, so a non-zero starting position |
| - // doesn't make sense. |
| - if (ranges[0].first_byte_position() == 0) { |
| - max_range_ = ranges[0].last_byte_position() + 1; |
| - } else { |
| - NotifyFailure(net::ERR_METHOD_NOT_SUPPORTED); |
| - return; |
| - } |
| - } else { |
| - NotifyFailure(net::ERR_METHOD_NOT_SUPPORTED); |
| - return; |
| - } |
| +void StreamURLRequestJob::DidStart() { |
| + if (range_parse_result() == net::OK && ranges().size() > 0) { |
| + // Only one range is supported, and it must start at the first byte. |
| + if (ranges().size() > 1 || ranges()[0].first_byte_position() != 0) { |
| + NotifyFailure(net::ERR_METHOD_NOT_SUPPORTED); |
|
mmenke
2016/01/20 16:47:31
Note that the old code called NotifyFailure in Set
|
| + return; |
| } |
| + |
| + max_range_ = ranges()[0].last_byte_position() + 1; |
| } |
| -} |
| -void StreamURLRequestJob::DidStart() { |
| - // We only support GET request. |
| + // This class only supports GET requests. |
| if (request()->method() != "GET") { |
| NotifyFailure(net::ERR_METHOD_NOT_SUPPORTED); |
| return; |