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

Unified Diff: webkit/browser/fileapi/file_writer_delegate.cc

Issue 16413007: Make FileSystemOperation NOT self-destruct (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix browser_tests Created 7 years, 6 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 | « webkit/browser/fileapi/file_writer_delegate.h ('k') | webkit/browser/fileapi/local_file_system_operation.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/browser/fileapi/file_writer_delegate.cc
diff --git a/webkit/browser/fileapi/file_writer_delegate.cc b/webkit/browser/fileapi/file_writer_delegate.cc
index 3c7b7816cffbaa222e4630fab7cb1361798f44b6..1d307e0ec4829d9f3a1f9ecb863db9095e7be464 100644
--- a/webkit/browser/fileapi/file_writer_delegate.cc
+++ b/webkit/browser/fileapi/file_writer_delegate.cc
@@ -48,8 +48,7 @@ FileWriterDelegate::FileWriterDelegate(
bytes_written_backlog_(0),
bytes_written_(0),
bytes_read_(0),
- io_buffer_(new net::IOBufferWithSize(kReadBufSize)),
- weak_factory_(this) {
+ io_buffer_(new net::IOBufferWithSize(kReadBufSize)) {
}
FileWriterDelegate::~FileWriterDelegate() {
@@ -60,7 +59,7 @@ void FileWriterDelegate::Start(scoped_ptr<net::URLRequest> request) {
request_->Start();
}
-bool FileWriterDelegate::Cancel() {
+void FileWriterDelegate::Cancel() {
if (request_) {
// This halts any callbacks on this delegate.
request_->set_delegate(NULL);
@@ -68,11 +67,13 @@ bool FileWriterDelegate::Cancel() {
}
const int status = file_stream_writer_->Cancel(
- base::Bind(&FileWriterDelegate::OnWriteCancelled,
- weak_factory_.GetWeakPtr()));
+ base::Bind(&FileWriterDelegate::OnWriteCancelled, AsWeakPtr()));
// Return true to finish immediately if we have no pending writes.
// Otherwise we'll do the final cleanup in the Cancel callback.
- return (status != net::ERR_IO_PENDING);
+ if (status != net::ERR_IO_PENDING) {
+ write_callback_.Run(base::PLATFORM_FILE_ERROR_ABORT, 0,
+ GetCompletionStatusOnError());
+ }
}
void FileWriterDelegate::OnReceivedRedirect(net::URLRequest* request,
@@ -128,8 +129,7 @@ void FileWriterDelegate::Read() {
base::MessageLoop::current()->PostTask(
FROM_HERE,
base::Bind(&FileWriterDelegate::OnDataReceived,
- weak_factory_.GetWeakPtr(),
- bytes_read_));
+ AsWeakPtr(), bytes_read_));
} else if (!request_->status().is_io_pending()) {
OnError(base::PLATFORM_FILE_ERROR_FAILED);
}
@@ -155,15 +155,15 @@ void FileWriterDelegate::Write() {
file_stream_writer_->Write(cursor_.get(),
static_cast<int>(bytes_to_write),
base::Bind(&FileWriterDelegate::OnDataWritten,
- weak_factory_.GetWeakPtr()));
- if (write_response > 0)
+ AsWeakPtr()));
+ if (write_response > 0) {
base::MessageLoop::current()->PostTask(
FROM_HERE,
base::Bind(&FileWriterDelegate::OnDataWritten,
- weak_factory_.GetWeakPtr(),
- write_response));
- else if (net::ERR_IO_PENDING != write_response)
+ AsWeakPtr(), write_response));
+ } else if (net::ERR_IO_PENDING != write_response) {
OnError(NetErrorToPlatformFileError(write_response));
+ }
}
void FileWriterDelegate::OnDataWritten(int write_response) {
@@ -230,8 +230,7 @@ void FileWriterDelegate::FlushForCompletion(
int bytes_written,
WriteProgressStatus progress_status) {
int flush_error = file_stream_writer_->Flush(
- base::Bind(&FileWriterDelegate::OnFlushed,
- weak_factory_.GetWeakPtr(),
+ base::Bind(&FileWriterDelegate::OnFlushed, AsWeakPtr(),
error, bytes_written, progress_status));
if (flush_error != net::ERR_IO_PENDING)
OnFlushed(error, bytes_written, progress_status, flush_error);
« no previous file with comments | « webkit/browser/fileapi/file_writer_delegate.h ('k') | webkit/browser/fileapi/local_file_system_operation.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698