diff options
author | kerz@chromium.org <kerz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-20 22:19:17 +0000 |
---|---|---|
committer | kerz@chromium.org <kerz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-20 22:19:17 +0000 |
commit | eeed85c4662942e0c9e557d36fa0d26a938058e5 (patch) | |
tree | 3e6e267779cd0de15b1dfb8543e399023a4b1342 /webkit/fileapi/file_system_file_util_proxy.cc | |
parent | fe2534f1d0294dadd3bc915982ef378906a2be57 (diff) | |
download | chromium_src-eeed85c4662942e0c9e557d36fa0d26a938058e5.zip chromium_src-eeed85c4662942e0c9e557d36fa0d26a938058e5.tar.gz chromium_src-eeed85c4662942e0c9e557d36fa0d26a938058e5.tar.bz2 |
Merge 82266 - Fixed file/directory url resolution for external mount point provider.Per Eric's request, refactored FileSystemDirURLRequestJob and FileSystemURLRequestJob classes to resolve local file system through a new operation.BUG=chromium-os:14225TEST=added new test cases to FileSystemPathManagerTest.*, added FileSystemOperationTest.TestGetLocalFilePathSuccessReview URL: http://codereview.chromium.org/6864040
TBR=zelidrag@chromium.org
Review URL: http://codereview.chromium.org/6882102
git-svn-id: svn://svn.chromium.org/chrome/branches/742/src@82372 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/fileapi/file_system_file_util_proxy.cc')
-rw-r--r-- | webkit/fileapi/file_system_file_util_proxy.cc | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/webkit/fileapi/file_system_file_util_proxy.cc b/webkit/fileapi/file_system_file_util_proxy.cc index 06a61c4..e5f8628 100644 --- a/webkit/fileapi/file_system_file_util_proxy.cc +++ b/webkit/fileapi/file_system_file_util_proxy.cc @@ -192,6 +192,37 @@ class RelayEnsureFileExists : public MessageLoopRelay { bool created_; }; + +class RelayGetLocalPath : public MessageLoopRelay { + public: + RelayGetLocalPath( + const fileapi::FileSystemOperationContext& context, + const FilePath& virtual_path, + fileapi::FileSystemFileUtilProxy::GetLocalPathCallback* callback) + : MessageLoopRelay(context), + callback_(callback), + virtual_path_(virtual_path) { + DCHECK(callback); + } + + protected: + virtual void RunWork() { + set_error_code( + file_system_file_util()->GetLocalFilePath( + context(), virtual_path_, &local_path_)); + } + + virtual void RunCallback() { + callback_->Run(error_code(), local_path_); + delete callback_; + } + + private: + fileapi::FileSystemFileUtilProxy::GetLocalPathCallback* callback_; + FilePath virtual_path_; + FilePath local_path_; +}; + class RelayGetFileInfo : public MessageLoopRelay { public: RelayGetFileInfo( @@ -437,8 +468,17 @@ bool FileSystemFileUtilProxy::EnsureFileExists( context, message_loop_proxy, file_path, callback)); } -// Retrieves the information about a file. It is invalid to pass NULL for the -// callback. +// static +bool FileSystemFileUtilProxy::GetLocalPath( + const FileSystemOperationContext& context, + scoped_refptr<MessageLoopProxy> message_loop_proxy, + const FilePath& virtual_path, + GetLocalPathCallback* callback) { + return Start(FROM_HERE, message_loop_proxy, + new RelayGetLocalPath(context, virtual_path, callback)); +} + +// static bool FileSystemFileUtilProxy::GetFileInfo( const FileSystemOperationContext& context, scoped_refptr<MessageLoopProxy> message_loop_proxy, |