Index: content/browser/download/download_worker.cc |
diff --git a/content/browser/download/download_worker.cc b/content/browser/download/download_worker.cc |
index 6e330a28f4ef41528d37a64fb7edd8f43fe5f24f..5eff1cf3b38a134ff8f12c54e3f57b06a360abc6 100644 |
--- a/content/browser/download/download_worker.cc |
+++ b/content/browser/download/download_worker.cc |
@@ -13,6 +13,23 @@ namespace { |
const int kVerboseLevel = 1; |
+class CompletedByteStreamReader : public ByteStreamReader { |
+ public: |
+ CompletedByteStreamReader(int status) : status_(status) {}; |
+ ~CompletedByteStreamReader() override = default; |
+ |
+ // ByteStreamReader implementations: |
+ ByteStreamReader::StreamState Read(scoped_refptr<net::IOBuffer>* data, |
+ size_t* length) override { |
+ return ByteStreamReader::STREAM_COMPLETE; |
+ } |
+ int GetStatus() const override { return status_; } |
+ void RegisterCallback(const base::Closure& sink_callback) override {}; |
+ |
+ private: |
+ int status_; |
+}; |
+ |
std::unique_ptr<UrlDownloader, BrowserThread::DeleteOnIOThread> |
CreateUrlDownloader(std::unique_ptr<DownloadUrlParameters> params, |
base::WeakPtr<UrlDownloader::Delegate> delegate) { |
@@ -94,9 +111,7 @@ void DownloadWorker::OnUrlDownloaderStarted( |
DownloadInterruptReason::DOWNLOAD_INTERRUPT_REASON_NONE) { |
VLOG(kVerboseLevel) << "Parallel download sub-request failed. reason = " |
<< create_info->result; |
- |
- delegate_->OnServerResponseError(this, create_info->result); |
- return; |
+ stream_reader.reset(new CompletedByteStreamReader(create_info->result)); |
} |
request_handle_ = std::move(create_info->request_handle); |