| Index: content/browser/appcache/appcache_url_loader_job.cc
|
| diff --git a/content/browser/appcache/appcache_url_loader_job.cc b/content/browser/appcache/appcache_url_loader_job.cc
|
| index 86d90fe24cec7749b2483bae97ab7a42bfdee739..55c5f2e40952b2aaca16562141761fb75cc7b799 100644
|
| --- a/content/browser/appcache/appcache_url_loader_job.cc
|
| +++ b/content/browser/appcache/appcache_url_loader_job.cc
|
| @@ -42,6 +42,11 @@ void AppCacheURLLoaderJob::DeliverAppCachedResponse(const GURL& manifest_url,
|
| entry_ = entry;
|
| is_fallback_ = is_fallback;
|
|
|
| + // Handle range requests.
|
| + net::HttpRequestHeaders headers;
|
| + headers.AddHeadersFromString(request_.headers);
|
| + InitializeRangeRequestInfo(headers);
|
| +
|
| // TODO(ananta)
|
| // Implement the AppCacheServiceImpl::Observer interface or add weak pointer
|
| // support to it.
|
| @@ -143,13 +148,13 @@ void AppCacheURLLoaderJob::OnResponseInfoLoaded(
|
| reader_.reset(
|
| storage_->CreateResponseReader(manifest_url_, entry_.response_id()));
|
|
|
| + if (is_range_request())
|
| + SetupRangeResponse();
|
| +
|
| DCHECK(!loader_callback_.is_null());
|
| std::move(loader_callback_)
|
| .Run(base::Bind(&AppCacheURLLoaderJob::Start, StaticAsWeakPtr(this)));
|
|
|
| - // TODO(ananta)
|
| - // Handle range requests.
|
| -
|
| response_body_stream_ = std::move(data_pipe_.producer_handle);
|
|
|
| // TODO(ananta)
|
| @@ -216,7 +221,9 @@ void AppCacheURLLoaderJob::SendResponseInfo() {
|
| if (!data_pipe_.consumer_handle.is_valid())
|
| return;
|
|
|
| - const net::HttpResponseInfo* http_info = info_->http_response_info();
|
| + const net::HttpResponseInfo* http_info = is_range_request()
|
| + ? range_response_info_.get()
|
| + : info_->http_response_info();
|
|
|
| ResourceResponseHead response_head;
|
| response_head.headers = http_info->headers;
|
| @@ -228,7 +235,9 @@ void AppCacheURLLoaderJob::SendResponseInfo() {
|
|
|
| response_head.request_time = http_info->request_time;
|
| response_head.response_time = http_info->response_time;
|
| - response_head.content_length = info_->response_data_size();
|
| + response_head.content_length =
|
| + is_range_request() ? range_response_info_->headers->GetContentLength()
|
| + : info_->response_data_size();
|
|
|
| client_info_->OnReceiveResponse(response_head, http_info->ssl_info,
|
| mojom::DownloadedTempFilePtr());
|
|
|