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

Unified Diff: content/browser/renderer_host/resource_dispatcher_host_impl.cc

Issue 10831302: Download resumption - Preliminary (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fixed signed/unsigned compare issue. Created 8 years, 1 month 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/renderer_host/resource_dispatcher_host_impl.cc
diff --git a/content/browser/renderer_host/resource_dispatcher_host_impl.cc b/content/browser/renderer_host/resource_dispatcher_host_impl.cc
index 111edc5a9fdabf7eed215daf838f2d97c91f399b..c2d4552ca0567270123d30922a38542dac47d998 100644
--- a/content/browser/renderer_host/resource_dispatcher_host_impl.cc
+++ b/content/browser/renderer_host/resource_dispatcher_host_impl.cc
@@ -49,6 +49,7 @@
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/browser/download_manager.h"
+#include "content/public/browser/download_save_info.h"
#include "content/public/browser/global_request_id.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/resource_dispatcher_host_delegate.h"
@@ -498,6 +499,9 @@ net::Error ResourceDispatcherHostImpl::BeginDownload(
int route_id,
bool prefer_cache,
scoped_ptr<DownloadSaveInfo> save_info,
+ const std::string& last_modified,
+ const std::string& etag,
+ content::DownloadId download_id,
const DownloadStartedCallback& started_callback) {
if (is_shutdown_)
return CallbackAndReturn(started_callback, net::ERR_INSUFFICIENT_RESOURCES);
@@ -536,6 +540,27 @@ net::Error ResourceDispatcherHostImpl::BeginDownload(
request_id_--;
const net::URLRequestContext* request_context = context->GetRequestContext();
+
+ // If we're not at the beginning of the file, retrieve only the remaining
+ // portion.
+ if (save_info->offset > 0) {
+ request->SetExtraRequestHeaderByName(
+ "Range",
+ StringPrintf("bytes=%" PRId64 "-", save_info->offset),
+ true);
+ }
+
+ // If it's the second (or later) request for this file, make sure it
+ // hasn't been modified.
+ if (!last_modified.empty()) {
+ request->SetExtraRequestHeaderByName("If-Unmodified-Since",
+ last_modified,
+ true);
+ }
+ if (!etag.empty()) {
+ // Set requested ETAG.
+ request->SetExtraRequestHeaderByName("If-Match", etag, true);
+ }
if (!request_context->job_factory()->IsHandledURL(url)) {
VLOG(1) << "Download request for unsupported protocol: "
<< url.possibly_invalid_spec();
« no previous file with comments | « content/browser/renderer_host/resource_dispatcher_host_impl.h ('k') | content/browser/renderer_host/resource_loader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698