Index: webkit/browser/fileapi/local_file_stream_writer.cc |
diff --git a/webkit/browser/fileapi/local_file_stream_writer.cc b/webkit/browser/fileapi/local_file_stream_writer.cc |
index 1796de5f4e894afd0dd8ad97cd63b339980b44d0..3a39153dc64bec2e9cfff13c37cd57abcb17501e 100644 |
--- a/webkit/browser/fileapi/local_file_stream_writer.cc |
+++ b/webkit/browser/fileapi/local_file_stream_writer.cc |
@@ -17,14 +17,19 @@ namespace { |
const int kOpenFlagsForWrite = base::PLATFORM_FILE_OPEN | |
base::PLATFORM_FILE_WRITE | |
base::PLATFORM_FILE_ASYNC; |
+const int kCreateFlagsForWrite = base::PLATFORM_FILE_CREATE | |
+ base::PLATFORM_FILE_WRITE | |
+ base::PLATFORM_FILE_ASYNC; |
} // namespace |
FileStreamWriter* FileStreamWriter::CreateForLocalFile( |
base::TaskRunner* task_runner, |
const base::FilePath& file_path, |
- int64 initial_offset) { |
- return new LocalFileStreamWriter(task_runner, file_path, initial_offset); |
+ int64 initial_offset, |
+ OpenOrCreate open_or_create) { |
+ return new LocalFileStreamWriter( |
+ task_runner, file_path, initial_offset, open_or_create); |
} |
LocalFileStreamWriter::~LocalFileStreamWriter() { |
@@ -81,8 +86,10 @@ int LocalFileStreamWriter::Flush(const net::CompletionCallback& callback) { |
LocalFileStreamWriter::LocalFileStreamWriter(base::TaskRunner* task_runner, |
const base::FilePath& file_path, |
- int64 initial_offset) |
+ int64 initial_offset, |
+ OpenOrCreate open_or_create) |
: file_path_(file_path), |
+ open_or_create_(open_or_create), |
initial_offset_(initial_offset), |
task_runner_(task_runner), |
has_pending_operation_(false), |
@@ -97,7 +104,9 @@ int LocalFileStreamWriter::InitiateOpen( |
stream_impl_.reset(new net::FileStream(NULL, task_runner_)); |
return stream_impl_->Open(file_path_, |
- kOpenFlagsForWrite, |
+ open_or_create_ == OPEN_EXISTING |
+ ? kOpenFlagsForWrite |
+ : kCreateFlagsForWrite, |
base::Bind(&LocalFileStreamWriter::DidOpen, |
weak_factory_.GetWeakPtr(), |
error_callback, |