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

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

Issue 264993002: [FileAPI] Remove Flush() on write completion on SandboxFileSystems (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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') | no next file » | 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 c1ec7ebe6f1bb4914206b184d6cf844b343cc40c..83112780cb9a02009c3d9a6421bc63a94e243383 100644
--- a/webkit/browser/fileapi/file_writer_delegate.cc
+++ b/webkit/browser/fileapi/file_writer_delegate.cc
@@ -21,9 +21,11 @@ namespace fileapi {
static const int kReadBufSize = 32768;
FileWriterDelegate::FileWriterDelegate(
- scoped_ptr<FileStreamWriter> file_stream_writer)
+ scoped_ptr<FileStreamWriter> file_stream_writer,
+ FlushPolicy flush_policy)
: file_stream_writer_(file_stream_writer.Pass()),
writing_started_(false),
+ flush_policy_(flush_policy),
bytes_written_backlog_(0),
bytes_written_(0),
bytes_read_(0),
@@ -175,7 +177,7 @@ void FileWriterDelegate::OnError(base::File::Error error) {
}
if (writing_started_)
- FlushForCompletion(error, 0, ERROR_WRITE_STARTED);
+ MaybeFlushForCompletion(error, 0, ERROR_WRITE_STARTED);
else
write_callback_.Run(error, 0, ERROR_WRITE_NOT_STARTED);
}
@@ -192,8 +194,8 @@ void FileWriterDelegate::OnProgress(int bytes_written, bool done) {
bytes_written_backlog_ = 0;
if (done) {
- FlushForCompletion(base::File::FILE_OK, bytes_written,
- SUCCESS_COMPLETED);
+ MaybeFlushForCompletion(base::File::FILE_OK, bytes_written,
+ SUCCESS_COMPLETED);
} else {
write_callback_.Run(base::File::FILE_OK, bytes_written,
SUCCESS_IO_PENDING);
@@ -208,10 +210,16 @@ void FileWriterDelegate::OnWriteCancelled(int status) {
GetCompletionStatusOnError());
}
-void FileWriterDelegate::FlushForCompletion(
+void FileWriterDelegate::MaybeFlushForCompletion(
base::File::Error error,
int bytes_written,
WriteProgressStatus progress_status) {
+ if (flush_policy_ == NO_FLUSH_ON_COMPLETION) {
+ write_callback_.Run(error, bytes_written, progress_status);
+ return;
+ }
+ DCHECK_EQ(FLUSH_ON_COMPLETION, flush_policy_);
+
int flush_error = file_stream_writer_->Flush(
base::Bind(&FileWriterDelegate::OnFlushed, weak_factory_.GetWeakPtr(),
error, bytes_written, progress_status));
« no previous file with comments | « webkit/browser/fileapi/file_writer_delegate.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698