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 |
deleted file mode 100644 |
index 1b196646635e6d7f67d04eb3383a7356117e0543..0000000000000000000000000000000000000000 |
--- a/content/common/fileapi/file_system_dispatcher.cc |
+++ /dev/null |
@@ -1,468 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#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<fileapi::DirectoryEntry>& 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<CallbackDispatcher, IDMapOwnPointer>::iterator |
- iter(&dispatchers_); !iter.IsAtEnd(); iter.Advance()) { |
- int request_id = iter.GetCurrentKey(); |
- CallbackDispatcher* dispatcher = iter.GetCurrentValue(); |
- DCHECK(dispatcher); |
- dispatcher->DidFail(base::PLATFORM_FILE_ERROR_ABORT); |
- dispatchers_.Remove(request_id); |
- } |
-} |
- |
-bool FileSystemDispatcher::OnMessageReceived(const IPC::Message& msg) { |
- bool handled = true; |
- IPC_BEGIN_MESSAGE_MAP(FileSystemDispatcher, msg) |
- IPC_MESSAGE_HANDLER(FileSystemMsg_DidOpenFileSystem, OnDidOpenFileSystem) |
- IPC_MESSAGE_HANDLER(FileSystemMsg_DidSucceed, OnDidSucceed) |
- IPC_MESSAGE_HANDLER(FileSystemMsg_DidReadDirectory, OnDidReadDirectory) |
- IPC_MESSAGE_HANDLER(FileSystemMsg_DidReadMetadata, OnDidReadMetadata) |
- IPC_MESSAGE_HANDLER(FileSystemMsg_DidCreateSnapshotFile, |
- OnDidCreateSnapshotFile) |
- IPC_MESSAGE_HANDLER(FileSystemMsg_DidFail, OnDidFail) |
- IPC_MESSAGE_HANDLER(FileSystemMsg_DidWrite, OnDidWrite) |
- IPC_MESSAGE_HANDLER(FileSystemMsg_DidOpenFile, OnDidOpenFile) |
- IPC_MESSAGE_UNHANDLED(handled = false) |
- IPC_END_MESSAGE_MAP() |
- return handled; |
-} |
- |
-bool FileSystemDispatcher::OpenFileSystem( |
- const GURL& origin_url, fileapi::FileSystemType type, |
- long long size, bool create, |
- 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| |
- return false; |
- } |
- |
- return true; |
-} |
- |
-bool FileSystemDispatcher::DeleteFileSystem( |
- const GURL& origin_url, |
- fileapi::FileSystemType type, |
- 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); |
- return false; |
- } |
- return true; |
-} |
- |
-bool FileSystemDispatcher::Move( |
- const GURL& src_path, |
- const GURL& dest_path, |
- 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| |
- return false; |
- } |
- |
- return true; |
-} |
- |
-bool FileSystemDispatcher::Copy( |
- const GURL& src_path, |
- const GURL& dest_path, |
- 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| |
- return false; |
- } |
- |
- return true; |
-} |
- |
-bool FileSystemDispatcher::Remove( |
- const GURL& path, |
- bool recursive, |
- 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| |
- return false; |
- } |
- |
- return true; |
-} |
- |
-bool FileSystemDispatcher::ReadMetadata( |
- const GURL& path, |
- 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| |
- return false; |
- } |
- |
- return true; |
-} |
- |
-bool FileSystemDispatcher::Create( |
- const GURL& path, |
- bool exclusive, |
- bool is_directory, |
- bool recursive, |
- 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| |
- return false; |
- } |
- |
- return true; |
-} |
- |
-bool FileSystemDispatcher::Exists( |
- const GURL& path, |
- bool is_directory, |
- 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| |
- return false; |
- } |
- |
- return true; |
-} |
- |
-bool FileSystemDispatcher::ReadDirectory( |
- const GURL& path, |
- 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| |
- return false; |
- } |
- |
- return true; |
-} |
- |
-bool FileSystemDispatcher::Truncate( |
- const GURL& path, |
- int64 offset, |
- int* request_id_out, |
- 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| |
- return false; |
- } |
- |
- if (request_id_out) |
- *request_id_out = request_id; |
- return true; |
-} |
- |
-bool FileSystemDispatcher::Write( |
- const GURL& path, |
- const GURL& blob_url, |
- int64 offset, |
- int* request_id_out, |
- 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| |
- return false; |
- } |
- |
- if (request_id_out) |
- *request_id_out = request_id; |
- return true; |
-} |
- |
-bool FileSystemDispatcher::Cancel( |
- int request_id_to_cancel, |
- 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| |
- return false; |
- } |
- |
- return true; |
-} |
- |
-bool FileSystemDispatcher::TouchFile( |
- const GURL& path, |
- const base::Time& last_access_time, |
- const base::Time& last_modified_time, |
- 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))) { |
- dispatchers_.Remove(request_id); // destroys |dispatcher| |
- return false; |
- } |
- |
- return true; |
-} |
- |
-bool FileSystemDispatcher::OpenFile( |
- const GURL& file_path, |
- int file_flags, |
- 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))) { |
- dispatchers_.Remove(request_id); // destroys |dispatcher| |
- return false; |
- } |
- |
- return true; |
-} |
- |
-bool FileSystemDispatcher::NotifyCloseFile(int file_open_id) { |
- return ChildThread::current()->Send( |
- new FileSystemHostMsg_NotifyCloseFile(file_open_id)); |
-} |
- |
-bool FileSystemDispatcher::CreateSnapshotFile( |
- const GURL& file_path, |
- 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))) { |
- dispatchers_.Remove(request_id); // destroys |dispatcher| |
- return false; |
- } |
- return true; |
-} |
- |
-void FileSystemDispatcher::OnDidOpenFileSystem(int request_id, |
- const std::string& name, |
- const GURL& root) { |
- DCHECK(root.is_valid()); |
- CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id); |
- DCHECK(dispatcher); |
- dispatcher->DidOpenFileSystem(name, root); |
- dispatchers_.Remove(request_id); |
-} |
- |
-void FileSystemDispatcher::OnDidSucceed(int request_id) { |
- CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id); |
- DCHECK(dispatcher); |
- dispatcher->DidSucceed(); |
- dispatchers_.Remove(request_id); |
-} |
- |
-void FileSystemDispatcher::OnDidReadMetadata( |
- int request_id, const base::PlatformFileInfo& file_info, |
- const base::FilePath& platform_path) { |
- CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id); |
- DCHECK(dispatcher); |
- dispatcher->DidReadMetadata(file_info, platform_path); |
- dispatchers_.Remove(request_id); |
-} |
- |
-void FileSystemDispatcher::OnDidCreateSnapshotFile( |
- int request_id, const base::PlatformFileInfo& file_info, |
- const base::FilePath& platform_path) { |
- CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id); |
- DCHECK(dispatcher); |
- dispatcher->DidCreateSnapshotFile(file_info, platform_path); |
- dispatchers_.Remove(request_id); |
- ChildThread::current()->Send( |
- new FileSystemHostMsg_DidReceiveSnapshotFile(request_id)); |
-} |
- |
-void FileSystemDispatcher::OnDidReadDirectory( |
- int request_id, |
- const std::vector<fileapi::DirectoryEntry>& entries, |
- bool has_more) { |
- CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id); |
- DCHECK(dispatcher); |
- dispatcher->DidReadDirectory(entries, has_more); |
- dispatchers_.Remove(request_id); |
-} |
- |
-void FileSystemDispatcher::OnDidFail( |
- int request_id, base::PlatformFileError error_code) { |
- CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id); |
- DCHECK(dispatcher); |
- dispatcher->DidFail(error_code); |
- dispatchers_.Remove(request_id); |
-} |
- |
-void FileSystemDispatcher::OnDidWrite( |
- int request_id, int64 bytes, bool complete) { |
- CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id); |
- DCHECK(dispatcher); |
- dispatcher->DidWrite(bytes, complete); |
- if (complete) |
- dispatchers_.Remove(request_id); |
-} |
- |
-void FileSystemDispatcher::OnDidOpenFile( |
- int request_id, |
- IPC::PlatformFileForTransit file, |
- int file_open_id, |
- quota::QuotaLimitType quota_policy) { |
- CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id); |
- DCHECK(dispatcher); |
- dispatcher->DidOpenFile(IPC::PlatformFileForTransitToPlatformFile(file), |
- file_open_id, |
- quota_policy); |
- dispatchers_.Remove(request_id); |
-} |
- |
-} // namespace content |