Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3002)

Unified Diff: content/browser/appcache/appcache_url_loader_job.cc

Issue 2934953003: Add support for HTTP range requests in the AppCacheURLLoaderImpl class. (Closed)
Patch Set: Fix SetupRangeResponse definition Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());
« no previous file with comments | « content/browser/appcache/appcache_url_loader_job.h ('k') | content/browser/appcache/appcache_url_request_job.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698