| Index: content/browser/download/download_resource_handler.cc
|
| diff --git a/content/browser/download/download_resource_handler.cc b/content/browser/download/download_resource_handler.cc
|
| index d703e1472222e4bbf9506ff013164b8c0eef854f..b76cacc6d2ebe633c785cd145b27ef72b60a99e4 100644
|
| --- a/content/browser/download/download_resource_handler.cc
|
| +++ b/content/browser/download/download_resource_handler.cc
|
| @@ -53,7 +53,8 @@ DownloadResourceHandler::DownloadResourceHandler(
|
| save_info_(save_info),
|
| buffer_(new content::DownloadBuffer),
|
| rdh_(rdh),
|
| - is_paused_(false) {
|
| + is_paused_(false),
|
| + start_offset_(0) {
|
| DCHECK(dl_id.IsValid());
|
| download_stats::RecordDownloadCount(download_stats::UNTHROTTLED_COUNT);
|
| }
|
| @@ -100,7 +101,7 @@ bool DownloadResourceHandler::OnResponseStarted(int request_id,
|
| info->url_chain = request_->url_chain();
|
| info->referrer_url = GURL(request_->referrer());
|
| info->start_time = base::Time::Now();
|
| - info->received_bytes = 0;
|
| + info->received_bytes = start_offset_;
|
| info->total_bytes = content_length_;
|
| info->state = DownloadItem::IN_PROGRESS;
|
| info->download_id = download_id_;
|
| @@ -112,8 +113,16 @@ bool DownloadResourceHandler::OnResponseStarted(int request_id,
|
| DownloadRequestHandle request_handle(rdh_, global_id_.child_id,
|
| render_view_id_, global_id_.request_id);
|
|
|
| - // TODO(ahendrickson) -- Get the last modified time and etag, so we can
|
| - // resume downloading.
|
| + // Get the last modified time and etag.
|
| + const net::HttpResponseHeaders* headers = request_->response_headers();
|
| + if (headers) {
|
| + std::string last_modified_hdr;
|
| + std::string etag;
|
| + if (headers->EnumerateHeader(NULL, "Last-Modified", &last_modified_hdr))
|
| + info->last_modified = last_modified_hdr;
|
| + if (headers->EnumerateHeader(NULL, "ETag", &etag))
|
| + info->etag = etag;
|
| + }
|
|
|
| CallStartedCB(net::OK);
|
|
|
|
|