| Index: webkit/fileapi/local_file_system_operation.cc
|
| diff --git a/webkit/fileapi/local_file_system_operation.cc b/webkit/fileapi/local_file_system_operation.cc
|
| index ff46be532199a57d370f4c7b080206d6aa826091..f8544d5f61611f0cded8d30ef85320076669d932 100644
|
| --- a/webkit/fileapi/local_file_system_operation.cc
|
| +++ b/webkit/fileapi/local_file_system_operation.cc
|
| @@ -314,7 +314,7 @@ void LocalFileSystemOperation::Write(
|
| DCHECK(blob_url.is_valid());
|
| file_writer_delegate_.reset(new FileWriterDelegate(
|
| base::Bind(&LocalFileSystemOperation::DidWrite,
|
| - weak_factory_.GetWeakPtr()),
|
| + weak_factory_.GetWeakPtr(), url),
|
| writer.Pass()));
|
|
|
| set_write_callback(callback);
|
| @@ -677,15 +677,24 @@ void LocalFileSystemOperation::DidReadDirectory(
|
| }
|
|
|
| void LocalFileSystemOperation::DidWrite(
|
| + const FileSystemURL& url,
|
| base::PlatformFileError rv,
|
| int64 bytes,
|
| - bool complete) {
|
| + FileWriterDelegate::WriteProgressStatus write_status) {
|
| if (write_callback_.is_null()) {
|
| // If cancelled, callback is already invoked and set to null in Cancel().
|
| // We must not call it twice. Just shut down this operation object.
|
| delete this;
|
| return;
|
| }
|
| +
|
| + const bool complete = (
|
| + write_status != FileWriterDelegate::SUCCESS_IO_PENDING);
|
| + if (complete && write_status != FileWriterDelegate::ERROR_WRITE_NOT_STARTED) {
|
| + operation_context_->change_observers()->Notify(
|
| + &FileChangeObserver::OnModifyFile, MakeTuple(url));
|
| + }
|
| +
|
| write_callback_.Run(rv, bytes, complete);
|
| if (complete || rv != base::PLATFORM_FILE_OK)
|
| delete this;
|
|
|