summaryrefslogtreecommitdiffstats
path: root/webkit/fileapi
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/fileapi')
-rw-r--r--webkit/fileapi/file_system_operation.cc33
-rw-r--r--webkit/fileapi/file_system_operation.h12
2 files changed, 19 insertions, 26 deletions
diff --git a/webkit/fileapi/file_system_operation.cc b/webkit/fileapi/file_system_operation.cc
index 6a88b6f..0e2e823 100644
--- a/webkit/fileapi/file_system_operation.cc
+++ b/webkit/fileapi/file_system_operation.cc
@@ -36,11 +36,10 @@ void FileSystemOperation::CreateFile(const FilePath& path,
pending_operation_ = kOperationCreateFile;
#endif
- base::FileUtilProxy::Create(
- proxy_, path, base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_READ,
- callback_factory_.NewCallback(
- exclusive ? &FileSystemOperation::DidCreateFileExclusive
- : &FileSystemOperation::DidCreateFileNonExclusive));
+ base::FileUtilProxy::EnsureFileExists(
+ proxy_, path, callback_factory_.NewCallback(
+ exclusive ? &FileSystemOperation::DidEnsureFileExistsExclusive
+ : &FileSystemOperation::DidEnsureFileExistsNonExclusive));
}
void FileSystemOperation::CreateDirectory(const FilePath& path,
@@ -219,23 +218,17 @@ void FileSystemOperation::Cancel(FileSystemOperation* cancel_operation) {
}
}
-void FileSystemOperation::DidCreateFileExclusive(
- base::PlatformFileError rv,
- base::PassPlatformFile file,
- bool created) {
- DidFinishFileOperation(rv);
+void FileSystemOperation::DidEnsureFileExistsExclusive(
+ base::PlatformFileError rv, bool created) {
+ if (rv == base::PLATFORM_FILE_OK && !created)
+ dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_EXISTS);
+ else
+ DidFinishFileOperation(rv);
}
-void FileSystemOperation::DidCreateFileNonExclusive(
- base::PlatformFileError rv,
- base::PassPlatformFile file,
- bool created) {
- // Suppress the already exists error and report success.
- if (rv == base::PLATFORM_FILE_OK ||
- rv == base::PLATFORM_FILE_ERROR_EXISTS)
- dispatcher_->DidSucceed();
- else
- dispatcher_->DidFail(rv);
+void FileSystemOperation::DidEnsureFileExistsNonExclusive(
+ base::PlatformFileError rv, bool /* created */) {
+ DidFinishFileOperation(rv);
}
void FileSystemOperation::DidFinishFileOperation(
diff --git a/webkit/fileapi/file_system_operation.h b/webkit/fileapi/file_system_operation.h
index bfa4141..6b4599a 100644
--- a/webkit/fileapi/file_system_operation.h
+++ b/webkit/fileapi/file_system_operation.h
@@ -82,13 +82,13 @@ class FileSystemOperation {
scoped_refptr<base::MessageLoopProxy> proxy_;
private:
- // Callbacks for above methods.
- void DidCreateFileExclusive(
- base::PlatformFileError rv, base::PassPlatformFile file, bool created);
+ // Callback for CreateFile for |exclusive|=true cases.
+ void DidEnsureFileExistsExclusive(base::PlatformFileError rv,
+ bool created);
- // Returns success even if the file already existed.
- void DidCreateFileNonExclusive(
- base::PlatformFileError rv, base::PassPlatformFile file, bool created);
+ // Callback for CreateFile for |exclusive|=false cases.
+ void DidEnsureFileExistsNonExclusive(base::PlatformFileError rv,
+ bool created);
// Generic callback that translates platform errors to WebKit error codes.
void DidFinishFileOperation(base::PlatformFileError rv);