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

Unified Diff: content/browser/download/download_worker.cc

Issue 2872943003: Reduce unnecessary download interruptions due to parallel requests (Closed)
Patch Set: more restrictions on DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE Created 3 years, 7 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
« no previous file with comments | « content/browser/download/download_worker.h ('k') | content/browser/download/parallel_download_job.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « content/browser/download/download_worker.h ('k') | content/browser/download/parallel_download_job.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698