| Index: content/browser/download/download_item_impl.cc
|
| diff --git a/content/browser/download/download_item_impl.cc b/content/browser/download/download_item_impl.cc
|
| index 5c2286bb11e6e38aafc0ea569ea1ea3040947b3a..0710b9388fc5f15a660e6437cb817b932a6217b7 100644
|
| --- a/content/browser/download/download_item_impl.cc
|
| +++ b/content/browser/download/download_item_impl.cc
|
| @@ -1025,14 +1025,18 @@ void DownloadItemImpl::UpdateValidatorsOnResumption(
|
| // HTTP_PRECONDITION_FAILED), then the download will automatically retried as
|
| // a full request rather than a partial. Full restarts clobber validators.
|
| int origin_state = 0;
|
| + bool is_partial = received_bytes_ > 0;
|
| if (chain_iter != new_create_info.url_chain.end())
|
| origin_state |= ORIGIN_STATE_ON_RESUMPTION_ADDITIONAL_REDIRECTS;
|
| if (etag_ != new_create_info.etag ||
|
| - last_modified_time_ != new_create_info.last_modified)
|
| + last_modified_time_ != new_create_info.last_modified) {
|
| + received_slices_.clear();
|
| + received_bytes_ = 0;
|
| origin_state |= ORIGIN_STATE_ON_RESUMPTION_VALIDATORS_CHANGED;
|
| + }
|
| if (content_disposition_ != new_create_info.content_disposition)
|
| origin_state |= ORIGIN_STATE_ON_RESUMPTION_CONTENT_DISPOSITION_CHANGED;
|
| - RecordOriginStateOnResumption(received_bytes_ != 0, origin_state);
|
| + RecordOriginStateOnResumption(is_partial, origin_state);
|
|
|
| url_chain_.insert(
|
| url_chain_.end(), chain_iter, new_create_info.url_chain.end());
|
| @@ -1289,7 +1293,8 @@ void DownloadItemImpl::StartDownload() {
|
| // Safe because we control download file lifetime.
|
| base::Unretained(download_file_.get()),
|
| base::Bind(&DownloadItemImpl::OnDownloadFileInitialized,
|
| - weak_ptr_factory_.GetWeakPtr())));
|
| + weak_ptr_factory_.GetWeakPtr()),
|
| + received_slices_));
|
| }
|
|
|
| void DownloadItemImpl::OnDownloadFileInitialized(
|
|
|