Index: storage/browser/fileapi/file_writer_delegate.cc |
diff --git a/storage/browser/fileapi/file_writer_delegate.cc b/storage/browser/fileapi/file_writer_delegate.cc |
index 97327938b824b5f9b0ca628b04c80f35d1a0da58..f84ae46879c051680886b5b1d4e66ee45a1b08aa 100644 |
--- a/storage/browser/fileapi/file_writer_delegate.cc |
+++ b/storage/browser/fileapi/file_writer_delegate.cc |
@@ -92,9 +92,12 @@ void FileWriterDelegate::OnSSLCertificateError(net::URLRequest* request, |
OnError(base::File::FILE_ERROR_SECURITY); |
} |
-void FileWriterDelegate::OnResponseStarted(net::URLRequest* request) { |
+void FileWriterDelegate::OnResponseStarted(net::URLRequest* request, |
+ int net_error) { |
+ DCHECK_NE(net::ERR_IO_PENDING, net_error); |
DCHECK_EQ(request_.get(), request); |
- if (!request->status().is_success() || request->GetResponseCode() != 200) { |
+ |
+ if (net_error != net::OK || request->GetResponseCode() != 200) { |
OnError(base::File::FILE_ERROR_FAILED); |
return; |
} |
@@ -103,8 +106,10 @@ void FileWriterDelegate::OnResponseStarted(net::URLRequest* request) { |
void FileWriterDelegate::OnReadCompleted(net::URLRequest* request, |
int bytes_read) { |
+ DCHECK_NE(net::ERR_IO_PENDING, bytes_read); |
DCHECK_EQ(request_.get(), request); |
- if (!request->status().is_success()) { |
+ |
+ if (bytes_read < 0) { |
OnError(base::File::FILE_ERROR_FAILED); |
return; |
} |
@@ -113,19 +118,22 @@ void FileWriterDelegate::OnReadCompleted(net::URLRequest* request, |
void FileWriterDelegate::Read() { |
bytes_written_ = 0; |
- bytes_read_ = 0; |
- if (request_->Read(io_buffer_.get(), io_buffer_->size(), &bytes_read_)) { |
+ bytes_read_ = request_->Read(io_buffer_.get(), io_buffer_->size()); |
+ if (bytes_read_ == net::ERR_IO_PENDING) |
+ return; |
+ |
+ if (bytes_read_ >= 0) { |
base::ThreadTaskRunnerHandle::Get()->PostTask( |
FROM_HERE, base::Bind(&FileWriterDelegate::OnDataReceived, |
weak_factory_.GetWeakPtr(), bytes_read_)); |
- } else if (!request_->status().is_io_pending()) { |
+ } else { |
OnError(base::File::FILE_ERROR_FAILED); |
} |
} |
void FileWriterDelegate::OnDataReceived(int bytes_read) { |
bytes_read_ = bytes_read; |
- if (!bytes_read_) { // We're done. |
+ if (bytes_read == 0) { // We're done. |
OnProgress(0, true); |
} else { |
// This could easily be optimized to rotate between a pool of buffers, so |