| Index: webkit/fileapi/local_file_stream_writer.cc
|
| ===================================================================
|
| --- webkit/fileapi/local_file_stream_writer.cc (revision 160294)
|
| +++ webkit/fileapi/local_file_stream_writer.cc (working copy)
|
| @@ -64,6 +64,21 @@
|
| return net::ERR_IO_PENDING;
|
| }
|
|
|
| +int LocalFileStreamWriter::Flush(const net::CompletionCallback& callback) {
|
| + DCHECK(!has_pending_operation_);
|
| + DCHECK(cancel_callback_.is_null());
|
| +
|
| + // Write() is not called yet, so there's nothing to flush.
|
| + if (!stream_impl_.get())
|
| + return net::OK;
|
| +
|
| + has_pending_operation_ = true;
|
| + int result = InitiateFlush(callback);
|
| + if (result != net::ERR_IO_PENDING)
|
| + has_pending_operation_ = false;
|
| + return result;
|
| +}
|
| +
|
| int LocalFileStreamWriter::InitiateOpen(
|
| const net::CompletionCallback& error_callback,
|
| const base::Closure& main_operation) {
|
| @@ -179,6 +194,26 @@
|
| callback.Run(result);
|
| }
|
|
|
| +int LocalFileStreamWriter::InitiateFlush(
|
| + const net::CompletionCallback& callback) {
|
| + DCHECK(has_pending_operation_);
|
| + DCHECK(stream_impl_.get());
|
| +
|
| + return stream_impl_->Flush(base::Bind(&LocalFileStreamWriter::DidFlush,
|
| + weak_factory_.GetWeakPtr(),
|
| + callback));
|
| +}
|
| +
|
| +void LocalFileStreamWriter::DidFlush(const net::CompletionCallback& callback,
|
| + int result) {
|
| + DCHECK(has_pending_operation_);
|
| +
|
| + if (CancelIfRequested())
|
| + return;
|
| + has_pending_operation_ = false;
|
| + callback.Run(result);
|
| +}
|
| +
|
| bool LocalFileStreamWriter::CancelIfRequested() {
|
| DCHECK(has_pending_operation_);
|
|
|
|
|