diff options
author | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-29 07:10:05 +0000 |
---|---|---|
committer | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-29 07:10:05 +0000 |
commit | 25b6979911b3fbcc4e6ee95a47db88c4d5a5930f (patch) | |
tree | b60353dc6c32a5571ee865025e10713fb1c1c2f9 /webkit/chromeos | |
parent | 3de8e61f52c73ab6435bb96abbacd862ad68c8ac (diff) | |
download | chromium_src-25b6979911b3fbcc4e6ee95a47db88c4d5a5930f.zip chromium_src-25b6979911b3fbcc4e6ee95a47db88c4d5a5930f.tar.gz chromium_src-25b6979911b3fbcc4e6ee95a47db88c4d5a5930f.tar.bz2 |
Introduce AsyncFileUtil and deprecate FileSystemFileUtilProxy
In LocalFileSystemOperation we used to use a synchronous implementation
(implemented as FileSystemFileUtil) to perform subtasks (e.g. file_util::Copy
type operation), but it's not always natural to have synchronous
implementation depending on filesystem types. For example async interface
works much better if we need to talk to a remote server or a device.
This patch introduces an async version of FileUtil, AsyncFileUtil,
and replaces FileSystemFileUtil+Proxy implementation with it.
After this patch, each filesystem can choose either:
- implement synchronous FileSystemFileUtil and use it with AsyncFileUtilAdapter, or
- directly implement asynchronous AsyncFileUtil
BUG=154835
TEST=existing tests
Review URL: https://codereview.chromium.org/12035049
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@179299 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/chromeos')
-rw-r--r-- | webkit/chromeos/fileapi/cros_mount_point_provider.cc | 11 | ||||
-rw-r--r-- | webkit/chromeos/fileapi/cros_mount_point_provider.h | 6 |
2 files changed, 14 insertions, 3 deletions
diff --git a/webkit/chromeos/fileapi/cros_mount_point_provider.cc b/webkit/chromeos/fileapi/cros_mount_point_provider.cc index 9a8aafb..49cf541 100644 --- a/webkit/chromeos/fileapi/cros_mount_point_provider.cc +++ b/webkit/chromeos/fileapi/cros_mount_point_provider.cc @@ -18,6 +18,7 @@ #include "webkit/chromeos/fileapi/file_access_permissions.h" #include "webkit/chromeos/fileapi/remote_file_stream_writer.h" #include "webkit/chromeos/fileapi/remote_file_system_operation.h" +#include "webkit/fileapi/async_file_util_adapter.h" #include "webkit/fileapi/external_mount_points.h" #include "webkit/fileapi/file_system_file_stream_reader.h" #include "webkit/fileapi/file_system_operation_context.h" @@ -52,7 +53,8 @@ CrosMountPointProvider::CrosMountPointProvider( fileapi::ExternalMountPoints* system_mount_points) : special_storage_policy_(special_storage_policy), file_access_permissions_(new FileAccessPermissions()), - local_file_util_(new fileapi::IsolatedFileUtil()), + local_file_util_(new fileapi::AsyncFileUtilAdapter( + new fileapi::IsolatedFileUtil())), mount_points_(mount_points), system_mount_points_(system_mount_points) { } @@ -236,6 +238,13 @@ fileapi::FileSystemFileUtil* CrosMountPointProvider::GetFileUtil( fileapi::FileSystemType type) { DCHECK(type == fileapi::kFileSystemTypeNativeLocal || type == fileapi::kFileSystemTypeRestrictedNativeLocal); + return local_file_util_->sync_file_util(); +} + +fileapi::AsyncFileUtil* CrosMountPointProvider::GetAsyncFileUtil( + fileapi::FileSystemType type) { + DCHECK(type == fileapi::kFileSystemTypeNativeLocal || + type == fileapi::kFileSystemTypeRestrictedNativeLocal); return local_file_util_.get(); } diff --git a/webkit/chromeos/fileapi/cros_mount_point_provider.h b/webkit/chromeos/fileapi/cros_mount_point_provider.h index d34c209..f013e6b 100644 --- a/webkit/chromeos/fileapi/cros_mount_point_provider.h +++ b/webkit/chromeos/fileapi/cros_mount_point_provider.h @@ -18,11 +18,11 @@ #include "webkit/storage/webkit_storage_export.h" namespace fileapi { +class AsyncFileUtilAdapter; class ExternalMountPoints; class FileSystemFileUtil; class FileSystemURL; class IsolatedContext; -class LocalFileUtil; } namespace chromeos { @@ -63,6 +63,8 @@ class WEBKIT_STORAGE_EXPORT CrosMountPointProvider virtual bool IsRestrictedFileName(const FilePath& filename) const OVERRIDE; virtual fileapi::FileSystemFileUtil* GetFileUtil( fileapi::FileSystemType type) OVERRIDE; + virtual fileapi::AsyncFileUtil* GetAsyncFileUtil( + fileapi::FileSystemType type) OVERRIDE; virtual fileapi::FilePermissionPolicy GetPermissionPolicy( const fileapi::FileSystemURL& url, int permissions) const OVERRIDE; @@ -114,7 +116,7 @@ class WEBKIT_STORAGE_EXPORT CrosMountPointProvider scoped_refptr<quota::SpecialStoragePolicy> special_storage_policy_; scoped_ptr<FileAccessPermissions> file_access_permissions_; - scoped_ptr<fileapi::LocalFileUtil> local_file_util_; + scoped_ptr<fileapi::AsyncFileUtilAdapter> local_file_util_; // Mount points specific to the owning context. // |