diff options
Diffstat (limited to 'webkit/fileapi')
-rw-r--r-- | webkit/fileapi/file_system_operation.cc | 33 | ||||
-rw-r--r-- | webkit/fileapi/file_system_operation.h | 12 |
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); |