| Index: content/child/fileapi/file_system_dispatcher.cc
|
| diff --git a/content/child/fileapi/file_system_dispatcher.cc b/content/child/fileapi/file_system_dispatcher.cc
|
| index b7a13671cfeecb823528696e605368be8b352c83..8ae9b66a5a81c83e37b5aa497cea29099d7a50da 100644
|
| --- a/content/child/fileapi/file_system_dispatcher.cc
|
| +++ b/content/child/fileapi/file_system_dispatcher.cc
|
| @@ -20,6 +20,7 @@ class FileSystemDispatcher::CallbackDispatcher {
|
| typedef FileSystemDispatcher::MetadataCallback MetadataCallback;
|
| typedef FileSystemDispatcher::ReadDirectoryCallback ReadDirectoryCallback;
|
| typedef FileSystemDispatcher::OpenFileSystemCallback OpenFileSystemCallback;
|
| + typedef FileSystemDispatcher::ResolveURLCallback ResolveURLCallback;
|
| typedef FileSystemDispatcher::WriteCallback WriteCallback;
|
| typedef FileSystemDispatcher::OpenFileCallback OpenFileCallback;
|
|
|
| @@ -57,6 +58,13 @@ class FileSystemDispatcher::CallbackDispatcher {
|
| dispatcher->error_callback_ = error_callback;
|
| return dispatcher;
|
| }
|
| + static CallbackDispatcher* Create(const ResolveURLCallback& callback,
|
| + const StatusCallback& error_callback) {
|
| + CallbackDispatcher* dispatcher = new CallbackDispatcher;
|
| + dispatcher->resolve_callback_ = callback;
|
| + dispatcher->error_callback_ = error_callback;
|
| + return dispatcher;
|
| + }
|
| static CallbackDispatcher* Create(const WriteCallback& callback,
|
| const StatusCallback& error_callback) {
|
| CallbackDispatcher* dispatcher = new CallbackDispatcher;
|
| @@ -105,6 +113,13 @@ class FileSystemDispatcher::CallbackDispatcher {
|
| filesystem_callback_.Run(name, root);
|
| }
|
|
|
| + void DidResolveURL(const std::string& name,
|
| + const GURL& root,
|
| + const base::FilePath& file_path,
|
| + bool is_directory) {
|
| + resolve_callback_.Run(name, root, file_path, is_directory);
|
| + }
|
| +
|
| void DidWrite(int64 bytes, bool complete) {
|
| write_callback_.Run(bytes, complete);
|
| }
|
| @@ -123,6 +138,7 @@ class FileSystemDispatcher::CallbackDispatcher {
|
| CreateSnapshotFileCallback snapshot_callback_;
|
| ReadDirectoryCallback directory_callback_;
|
| OpenFileSystemCallback filesystem_callback_;
|
| + ResolveURLCallback resolve_callback_;
|
| WriteCallback write_callback_;
|
| OpenFileCallback open_callback_;
|
|
|
| @@ -150,6 +166,7 @@ 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_DidResolveURL, OnDidResolveURL)
|
| IPC_MESSAGE_HANDLER(FileSystemMsg_DidSucceed, OnDidSucceed)
|
| IPC_MESSAGE_HANDLER(FileSystemMsg_DidReadDirectory, OnDidReadDirectory)
|
| IPC_MESSAGE_HANDLER(FileSystemMsg_DidReadMetadata, OnDidReadMetadata)
|
| @@ -174,6 +191,16 @@ void FileSystemDispatcher::OpenFileSystem(
|
| request_id, origin_url, type, size, create));
|
| }
|
|
|
| +void FileSystemDispatcher::ResolveURL(
|
| + const GURL& filesystem_url,
|
| + const ResolveURLCallback& success_callback,
|
| + const StatusCallback& error_callback) {
|
| + int request_id = dispatchers_.Add(
|
| + CallbackDispatcher::Create(success_callback, error_callback));
|
| + ChildThread::current()->Send(new FileSystemHostMsg_ResolveURL(
|
| + request_id, filesystem_url));
|
| +}
|
| +
|
| void FileSystemDispatcher::DeleteFileSystem(
|
| const GURL& origin_url,
|
| fileapi::FileSystemType type,
|
| @@ -345,6 +372,18 @@ void FileSystemDispatcher::OnDidOpenFileSystem(int request_id,
|
| dispatchers_.Remove(request_id);
|
| }
|
|
|
| +void FileSystemDispatcher::OnDidResolveURL(int request_id,
|
| + const std::string& name,
|
| + const GURL& root,
|
| + const base::FilePath& file_path,
|
| + bool is_directory) {
|
| + DCHECK(root.is_valid());
|
| + CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id);
|
| + DCHECK(dispatcher);
|
| + dispatcher->DidResolveURL(name, root, file_path, is_directory);
|
| + dispatchers_.Remove(request_id);
|
| +}
|
| +
|
| void FileSystemDispatcher::OnDidSucceed(int request_id) {
|
| CallbackDispatcher* dispatcher = dispatchers_.Lookup(request_id);
|
| DCHECK(dispatcher);
|
|
|