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

Unified Diff: content/browser/streams/stream_url_request_job.cc

Issue 2368913002: Fix stream errors that occur after a stream starts not propagating. (Closed)
Patch Set: review comments Created 4 years, 3 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
Index: content/browser/streams/stream_url_request_job.cc
diff --git a/content/browser/streams/stream_url_request_job.cc b/content/browser/streams/stream_url_request_job.cc
index 04a24ebfbbb5880ce58e9c5104378befe100242e..1659eb05f7665bf873663040495cf6e3f469157c 100644
--- a/content/browser/streams/stream_url_request_job.cc
+++ b/content/browser/streams/stream_url_request_job.cc
@@ -30,6 +30,7 @@ StreamURLRequestJob::StreamURLRequestJob(
total_bytes_read_(0),
max_range_(0),
request_failed_(false),
+ error_code_(net::OK),
weak_factory_(this) {
DCHECK(stream_.get());
stream_->SetReadObserver(this);
@@ -92,12 +93,8 @@ void StreamURLRequestJob::Kill() {
}
int StreamURLRequestJob::ReadRawData(net::IOBuffer* buf, int buf_size) {
- // TODO(ellyjones): This is not right. The old code returned true here, but
- // ReadRawData's old contract was to return true only for synchronous
- // successes, which had the effect of treating all errors as synchronous EOFs.
- // See https://crbug.com/508957
if (request_failed_)
- return 0;
+ return error_code_;
DCHECK(buf);
int to_read = buf_size;
@@ -112,9 +109,10 @@ int StreamURLRequestJob::ReadRawData(net::IOBuffer* buf, int buf_size) {
int bytes_read = 0;
switch (stream_->ReadRawData(buf, to_read, &bytes_read)) {
case Stream::STREAM_HAS_DATA:
- case Stream::STREAM_COMPLETE:
total_bytes_read_ += bytes_read;
return bytes_read;
+ case Stream::STREAM_COMPLETE:
+ return stream_->GetStatus();
case Stream::STREAM_EMPTY:
pending_buffer_ = buf;
pending_buffer_size_ = to_read;
@@ -169,6 +167,7 @@ void StreamURLRequestJob::DidStart() {
void StreamURLRequestJob::NotifyFailure(int error_code) {
request_failed_ = true;
+ error_code_ = error_code;
// This method can only be called before headers are set.
DCHECK(!headers_set_);
« no previous file with comments | « content/browser/streams/stream_url_request_job.h ('k') | content/browser/streams/stream_url_request_job_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698