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

Unified Diff: content/common/fileapi/file_system_dispatcher.cc

Issue 14796018: Cleanup: Deprecate FileSystemCallbackDispatcher (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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
Index: content/common/fileapi/file_system_dispatcher.cc
diff --git a/content/common/fileapi/file_system_dispatcher.cc b/content/common/fileapi/file_system_dispatcher.cc
index c9726dc1d7b159c37a7c70920ddd3701ffb13027..9f725a6af7849f4e0185fe10e65a91ecce13bc09 100644
--- a/content/common/fileapi/file_system_dispatcher.cc
+++ b/content/common/fileapi/file_system_dispatcher.cc
@@ -4,21 +4,133 @@
#include "content/common/fileapi/file_system_dispatcher.h"
+#include "base/callback.h"
+#include "base/file_util.h"
#include "base/process.h"
#include "content/common/child_thread.h"
#include "content/common/fileapi/file_system_messages.h"
namespace content {
+class FileSystemDispatcher::CallbackDispatcher {
+ public:
+ typedef CallbackDispatcher self;
+ typedef FileSystemDispatcher::StatusCallback StatusCallback;
+ typedef FileSystemDispatcher::MetadataCallback MetadataCallback;
+ typedef FileSystemDispatcher::ReadDirectoryCallback ReadDirectoryCallback;
+ typedef FileSystemDispatcher::OpenFileSystemCallback OpenFileSystemCallback;
+ typedef FileSystemDispatcher::WriteCallback WriteCallback;
+ typedef FileSystemDispatcher::OpenFileCallback OpenFileCallback;
+
+ static CallbackDispatcher* Create(const StatusCallback& callback) {
+ CallbackDispatcher* dispatcher = new CallbackDispatcher;
+ dispatcher->status_callback_ = callback;
+ dispatcher->error_callback_ = callback;
+ return dispatcher;
+ }
+ static CallbackDispatcher* Create(const MetadataCallback& callback,
+ const StatusCallback& error_callback) {
+ CallbackDispatcher* dispatcher = new CallbackDispatcher;
+ dispatcher->metadata_callback_ = callback;
+ dispatcher->error_callback_ = error_callback;
+ return dispatcher;
+ }
+ static CallbackDispatcher* Create(const ReadDirectoryCallback& callback,
+ const StatusCallback& error_callback) {
+ CallbackDispatcher* dispatcher = new CallbackDispatcher;
+ dispatcher->directory_callback_ = callback;
+ dispatcher->error_callback_ = error_callback;
+ return dispatcher;
+ }
+ static CallbackDispatcher* Create(const OpenFileSystemCallback& callback,
+ const StatusCallback& error_callback) {
+ CallbackDispatcher* dispatcher = new CallbackDispatcher;
+ dispatcher->filesystem_callback_ = callback;
+ dispatcher->error_callback_ = error_callback;
+ return dispatcher;
+ }
+ static CallbackDispatcher* Create(const WriteCallback& callback,
+ const StatusCallback& error_callback) {
+ CallbackDispatcher* dispatcher = new CallbackDispatcher;
+ dispatcher->write_callback_ = callback;
+ dispatcher->error_callback_ = error_callback;
+ return dispatcher;
+ }
+ static CallbackDispatcher* Create(const OpenFileCallback& callback,
+ const StatusCallback& error_callback) {
+ CallbackDispatcher* dispatcher = new CallbackDispatcher;
+ dispatcher->open_callback_ = callback;
+ dispatcher->error_callback_ = error_callback;
+ return dispatcher;
+ }
+
+ ~CallbackDispatcher() {}
+
+ void DidSucceed() {
+ status_callback_.Run(base::PLATFORM_FILE_OK);
+ }
+
+ void DidFail(base::PlatformFileError error_code) {
+ error_callback_.Run(error_code);
+ }
+
+ void DidReadMetadata(
+ const base::PlatformFileInfo& file_info,
+ const base::FilePath& platform_path) {
+ metadata_callback_.Run(file_info, platform_path);
+ }
+
+ void DidCreateSnapshotFile(
+ const base::PlatformFileInfo& file_info,
+ const base::FilePath& platform_path) {
+ metadata_callback_.Run(file_info, platform_path);
+ }
+
+ void DidReadDirectory(
+ const std::vector<base::FileUtilProxy::Entry>& entries,
+ bool has_more) {
+ directory_callback_.Run(entries, has_more);
+ }
+
+ void DidOpenFileSystem(const std::string& name,
+ const GURL& root) {
+ filesystem_callback_.Run(name, root);
+ }
+
+ void DidWrite(int64 bytes, bool complete) {
+ write_callback_.Run(bytes, complete);
+ }
+
+ void DidOpenFile(base::PlatformFile file,
+ int file_open_id,
+ quota::QuotaLimitType quota_policy) {
+ open_callback_.Run(file, file_open_id, quota_policy);
+ }
+
+ private:
+ CallbackDispatcher() {}
+
+ StatusCallback status_callback_;
+ MetadataCallback metadata_callback_;
+ ReadDirectoryCallback directory_callback_;
+ OpenFileSystemCallback filesystem_callback_;
+ WriteCallback write_callback_;
+ OpenFileCallback open_callback_;
+
+ StatusCallback error_callback_;
+
+ DISALLOW_COPY_AND_ASSIGN(CallbackDispatcher);
+};
+
FileSystemDispatcher::FileSystemDispatcher() {
}
FileSystemDispatcher::~FileSystemDispatcher() {
// Make sure we fire all the remaining callbacks.
- for (IDMap<fileapi::FileSystemCallbackDispatcher, IDMapOwnPointer>::iterator
+ for (IDMap<CallbackDispatcher, IDMapOwnPointer>::iterator
iter(&dispatchers_); !iter.IsAtEnd(); iter.Advance()) {
int request_id = iter.GetCurrentKey();
- fileapi::FileSystemCallbackDispatcher* dispatcher = iter.GetCurrentValue();
+ CallbackDispatcher* dispatcher = iter.GetCurrentValue();
DCHECK(dispatcher);
dispatcher->DidFail(base::PLATFORM_FILE_ERROR_ABORT);
dispatchers_.Remove(request_id);
@@ -45,8 +157,10 @@ bool FileSystemDispatcher::OnMessageReceived(const IPC::Message& msg) {
bool FileSystemDispatcher::OpenFileSystem(
const GURL& origin_url, fileapi::FileSystemType type,
long long size, bool create,
- fileapi::FileSystemCallbackDispatcher* dispatcher) {
- int request_id = dispatchers_.Add(dispatcher);
+ const OpenFileSystemCallback& success_callback,
+ const StatusCallback& error_callback) {
+ int request_id = dispatchers_.Add(
+ CallbackDispatcher::Create(success_callback, error_callback));
if (!ChildThread::current()->Send(new FileSystemHostMsg_Open(
request_id, origin_url, type, size, create))) {
dispatchers_.Remove(request_id); // destroys |dispatcher|
@@ -59,8 +173,8 @@ bool FileSystemDispatcher::OpenFileSystem(
bool FileSystemDispatcher::DeleteFileSystem(
const GURL& origin_url,
fileapi::FileSystemType type,
- fileapi::FileSystemCallbackDispatcher* dispatcher) {
- int request_id = dispatchers_.Add(dispatcher);
+ const StatusCallback& callback) {
+ int request_id = dispatchers_.Add(CallbackDispatcher::Create(callback));
if (!ChildThread::current()->Send(new FileSystemHostMsg_DeleteFileSystem(
request_id, origin_url, type))) {
dispatchers_.Remove(request_id);
@@ -72,8 +186,8 @@ bool FileSystemDispatcher::DeleteFileSystem(
bool FileSystemDispatcher::Move(
const GURL& src_path,
const GURL& dest_path,
- fileapi::FileSystemCallbackDispatcher* dispatcher) {
- int request_id = dispatchers_.Add(dispatcher);
+ const StatusCallback& callback) {
+ int request_id = dispatchers_.Add(CallbackDispatcher::Create(callback));
if (!ChildThread::current()->Send(new FileSystemHostMsg_Move(
request_id, src_path, dest_path))) {
dispatchers_.Remove(request_id); // destroys |dispatcher|
@@ -86,8 +200,8 @@ bool FileSystemDispatcher::Move(
bool FileSystemDispatcher::Copy(
const GURL& src_path,
const GURL& dest_path,
- fileapi::FileSystemCallbackDispatcher* dispatcher) {
- int request_id = dispatchers_.Add(dispatcher);
+ const StatusCallback& callback) {
+ int request_id = dispatchers_.Add(CallbackDispatcher::Create(callback));
if (!ChildThread::current()->Send(new FileSystemHostMsg_Copy(
request_id, src_path, dest_path))) {
dispatchers_.Remove(request_id); // destroys |dispatcher|
@@ -100,8 +214,8 @@ bool FileSystemDispatcher::Copy(
bool FileSystemDispatcher::Remove(
const GURL& path,
bool recursive,
- fileapi::FileSystemCallbackDispatcher* dispatcher) {
- int request_id = dispatchers_.Add(dispatcher);
+ const StatusCallback& callback) {
+ int request_id = dispatchers_.Add(CallbackDispatcher::Create(callback));
if (!ChildThread::current()->Send(
new FileSystemMsg_Remove(request_id, path, recursive))) {
dispatchers_.Remove(request_id); // destroys |dispatcher|
@@ -113,8 +227,10 @@ bool FileSystemDispatcher::Remove(
bool FileSystemDispatcher::ReadMetadata(
const GURL& path,
- fileapi::FileSystemCallbackDispatcher* dispatcher) {
- int request_id = dispatchers_.Add(dispatcher);
+ const MetadataCallback& success_callback,
+ const StatusCallback& error_callback) {
+ int request_id = dispatchers_.Add(
+ CallbackDispatcher::Create(success_callback, error_callback));
if (!ChildThread::current()->Send(
new FileSystemHostMsg_ReadMetadata(request_id, path))) {
dispatchers_.Remove(request_id); // destroys |dispatcher|
@@ -129,8 +245,8 @@ bool FileSystemDispatcher::Create(
bool exclusive,
bool is_directory,
bool recursive,
- fileapi::FileSystemCallbackDispatcher* dispatcher) {
- int request_id = dispatchers_.Add(dispatcher);
+ const StatusCallback& callback) {
+ int request_id = dispatchers_.Add(CallbackDispatcher::Create(callback));
if (!ChildThread::current()->Send(new FileSystemHostMsg_Create(
request_id, path, exclusive, is_directory, recursive))) {
dispatchers_.Remove(request_id); // destroys |dispatcher|
@@ -143,8 +259,8 @@ bool FileSystemDispatcher::Create(
bool FileSystemDispatcher::Exists(
const GURL& path,
bool is_directory,
- fileapi::FileSystemCallbackDispatcher* dispatcher) {
- int request_id = dispatchers_.Add(dispatcher);
+ const StatusCallback& callback) {
+ int request_id = dispatchers_.Add(CallbackDispatcher::Create(callback));
if (!ChildThread::current()->Send(
new FileSystemHostMsg_Exists(request_id, path, is_directory))) {
dispatchers_.Remove(request_id); // destroys |dispatcher|
@@ -156,8 +272,10 @@ bool FileSystemDispatcher::Exists(
bool FileSystemDispatcher::ReadDirectory(
const GURL& path,
- fileapi::FileSystemCallbackDispatcher* dispatcher) {
- int request_id = dispatchers_.Add(dispatcher);
+ const ReadDirectoryCallback& success_callback,
+ const StatusCallback& error_callback) {
+ int request_id = dispatchers_.Add(
+ CallbackDispatcher::Create(success_callback, error_callback));
if (!ChildThread::current()->Send(
new FileSystemHostMsg_ReadDirectory(request_id, path))) {
dispatchers_.Remove(request_id); // destroys |dispatcher|
@@ -171,8 +289,8 @@ bool FileSystemDispatcher::Truncate(
const GURL& path,
int64 offset,
int* request_id_out,
- fileapi::FileSystemCallbackDispatcher* dispatcher) {
- int request_id = dispatchers_.Add(dispatcher);
+ const StatusCallback& callback) {
+ int request_id = dispatchers_.Add(CallbackDispatcher::Create(callback));
if (!ChildThread::current()->Send(
new FileSystemHostMsg_Truncate(request_id, path, offset))) {
dispatchers_.Remove(request_id); // destroys |dispatcher|
@@ -189,8 +307,10 @@ bool FileSystemDispatcher::Write(
const GURL& blob_url,
int64 offset,
int* request_id_out,
- fileapi::FileSystemCallbackDispatcher* dispatcher) {
- int request_id = dispatchers_.Add(dispatcher);
+ const WriteCallback& success_callback,
+ const StatusCallback& error_callback) {
+ int request_id = dispatchers_.Add(
+ CallbackDispatcher::Create(success_callback, error_callback));
if (!ChildThread::current()->Send(
new FileSystemHostMsg_Write(request_id, path, blob_url, offset))) {
dispatchers_.Remove(request_id); // destroys |dispatcher|
@@ -204,8 +324,8 @@ bool FileSystemDispatcher::Write(
bool FileSystemDispatcher::Cancel(
int request_id_to_cancel,
- fileapi::FileSystemCallbackDispatcher* dispatcher) {
- int request_id = dispatchers_.Add(dispatcher);
+ const StatusCallback& callback) {
+ int request_id = dispatchers_.Add(CallbackDispatcher::Create(callback));
if (!ChildThread::current()->Send(new FileSystemHostMsg_CancelWrite(
request_id, request_id_to_cancel))) {
dispatchers_.Remove(request_id); // destroys |dispatcher|
@@ -219,8 +339,8 @@ bool FileSystemDispatcher::TouchFile(
const GURL& path,
const base::Time& last_access_time,
const base::Time& last_modified_time,
- fileapi::FileSystemCallbackDispatcher* dispatcher) {
- int request_id = dispatchers_.Add(dispatcher);
+ const StatusCallback& callback) {
+ int request_id = dispatchers_.Add(CallbackDispatcher::Create(callback));
if (!ChildThread::current()->Send(
new FileSystemHostMsg_TouchFile(
request_id, path, last_access_time, last_modified_time))) {
@@ -234,8 +354,10 @@ bool FileSystemDispatcher::TouchFile(
bool FileSystemDispatcher::OpenFile(
const GURL& file_path,
int file_flags,
- fileapi::FileSystemCallbackDispatcher* dispatcher) {
- int request_id = dispatchers_.Add(dispatcher);
+ const OpenFileCallback& success_callback,
+ const StatusCallback& error_callback) {
+ int request_id = dispatchers_.Add(
+ CallbackDispatcher::Create(success_callback, error_callback));
if (!ChildThread::current()->Send(
new FileSystemHostMsg_OpenFile(
request_id, file_path, file_flags))) {
@@ -253,8 +375,10 @@ bool FileSystemDispatcher::NotifyCloseFile(int file_open_id) {
bool FileSystemDispatcher::CreateSnapshotFile(
const GURL& file_path,
- fileapi::FileSystemCallbackDispatcher* dispatcher) {
- int request_id = dispatchers_.Add(dispatcher);
+ const CreateSnapshotFileCallback& success_callback,
+ const StatusCallback& error_callback) {
+ int request_id = dispatchers_.Add(
+ CallbackDispatcher::Create(success_callback, error_callback));
if (!ChildThread::current()->Send(
new FileSystemHostMsg_CreateSnapshotFile(
request_id, file_path))) {
@@ -268,16 +392,14 @@ void FileSystemDispatcher::OnDidOpenFileSystem(int request_id,
const std::string& name,
const GURL& root) {
DCHECK(root.is_valid());
- fileapi::FileSystemCallbackDispatcher* dispatcher =
- dispatchers_.Lookup(request_id);
+ CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id);
DCHECK(dispatcher);
dispatcher->DidOpenFileSystem(name, root);
dispatchers_.Remove(request_id);
}
void FileSystemDispatcher::OnDidSucceed(int request_id) {
- fileapi::FileSystemCallbackDispatcher* dispatcher =
- dispatchers_.Lookup(request_id);
+ CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id);
DCHECK(dispatcher);
dispatcher->DidSucceed();
dispatchers_.Remove(request_id);
@@ -286,8 +408,7 @@ void FileSystemDispatcher::OnDidSucceed(int request_id) {
void FileSystemDispatcher::OnDidReadMetadata(
int request_id, const base::PlatformFileInfo& file_info,
const base::FilePath& platform_path) {
- fileapi::FileSystemCallbackDispatcher* dispatcher =
- dispatchers_.Lookup(request_id);
+ CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id);
DCHECK(dispatcher);
dispatcher->DidReadMetadata(file_info, platform_path);
dispatchers_.Remove(request_id);
@@ -296,8 +417,7 @@ void FileSystemDispatcher::OnDidReadMetadata(
void FileSystemDispatcher::OnDidCreateSnapshotFile(
int request_id, const base::PlatformFileInfo& file_info,
const base::FilePath& platform_path) {
- fileapi::FileSystemCallbackDispatcher* dispatcher =
- dispatchers_.Lookup(request_id);
+ CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id);
DCHECK(dispatcher);
dispatcher->DidCreateSnapshotFile(file_info, platform_path);
dispatchers_.Remove(request_id);
@@ -309,8 +429,7 @@ void FileSystemDispatcher::OnDidReadDirectory(
int request_id,
const std::vector<base::FileUtilProxy::Entry>& entries,
bool has_more) {
- fileapi::FileSystemCallbackDispatcher* dispatcher =
- dispatchers_.Lookup(request_id);
+ CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id);
DCHECK(dispatcher);
dispatcher->DidReadDirectory(entries, has_more);
dispatchers_.Remove(request_id);
@@ -318,8 +437,7 @@ void FileSystemDispatcher::OnDidReadDirectory(
void FileSystemDispatcher::OnDidFail(
int request_id, base::PlatformFileError error_code) {
- fileapi::FileSystemCallbackDispatcher* dispatcher =
- dispatchers_.Lookup(request_id);
+ CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id);
DCHECK(dispatcher);
dispatcher->DidFail(error_code);
dispatchers_.Remove(request_id);
@@ -327,8 +445,7 @@ void FileSystemDispatcher::OnDidFail(
void FileSystemDispatcher::OnDidWrite(
int request_id, int64 bytes, bool complete) {
- fileapi::FileSystemCallbackDispatcher* dispatcher =
- dispatchers_.Lookup(request_id);
+ CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id);
DCHECK(dispatcher);
dispatcher->DidWrite(bytes, complete);
if (complete)
@@ -340,8 +457,7 @@ void FileSystemDispatcher::OnDidOpenFile(
IPC::PlatformFileForTransit file,
int file_open_id,
quota::QuotaLimitType quota_policy) {
- fileapi::FileSystemCallbackDispatcher* dispatcher =
- dispatchers_.Lookup(request_id);
+ CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id);
DCHECK(dispatcher);
dispatcher->DidOpenFile(IPC::PlatformFileForTransitToPlatformFile(file),
file_open_id,
« no previous file with comments | « content/common/fileapi/file_system_dispatcher.h ('k') | content/common/fileapi/webfilesystem_callback_adapters.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698