diff options
author | nhiroki@chromium.org <nhiroki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-12 03:50:02 +0000 |
---|---|---|
committer | nhiroki@chromium.org <nhiroki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-12 03:50:02 +0000 |
commit | a836883d541303acd15229ddf27ab8ca2d40cb71 (patch) | |
tree | 1a070af09fcc0d5408a14b9995dddcbac31ccccb /webkit/browser | |
parent | 8aff3116ecad4871d621ef61e5cbdf73c0d9beec (diff) | |
download | chromium_src-a836883d541303acd15229ddf27ab8ca2d40cb71.zip chromium_src-a836883d541303acd15229ddf27ab8ca2d40cb71.tar.gz chromium_src-a836883d541303acd15229ddf27ab8ca2d40cb71.tar.bz2 |
FileAPI: Factor out getting root URI and FS name parts into each FS backend
We plan to introduce SyncFileSystemBackend to remove SyncFS related code from
webkit/browser/fileapi. To do that, this change moves getting root URI and
filesystem name parts from FileSystemContext to each FileSystemBackend.
BUG=242422
TEST=content_unittests
R=kinuko@chromium.org, satorux@chromium.org, tzik@chromium.org
Review URL: https://codereview.chromium.org/18300006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@211318 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/browser')
8 files changed, 35 insertions, 21 deletions
diff --git a/webkit/browser/fileapi/copy_or_move_file_validator_unittest.cc b/webkit/browser/fileapi/copy_or_move_file_validator_unittest.cc index 51dbe77..b271b77 100644 --- a/webkit/browser/fileapi/copy_or_move_file_validator_unittest.cc +++ b/webkit/browser/fileapi/copy_or_move_file_validator_unittest.cc @@ -27,7 +27,9 @@ namespace { const FileSystemType kNoValidatorType = kFileSystemTypeTemporary; const FileSystemType kWithValidatorType = kFileSystemTypeTest; -void ExpectOk(base::PlatformFileError error) { +void ExpectOk(const GURL& origin_url, + const std::string& name, + base::PlatformFileError error) { ASSERT_EQ(base::PLATFORM_FILE_OK, error); } diff --git a/webkit/browser/fileapi/copy_or_move_operation_delegate_unittest.cc b/webkit/browser/fileapi/copy_or_move_operation_delegate_unittest.cc index bda8ce0..3eab093 100644 --- a/webkit/browser/fileapi/copy_or_move_operation_delegate_unittest.cc +++ b/webkit/browser/fileapi/copy_or_move_operation_delegate_unittest.cc @@ -29,7 +29,9 @@ typedef FileSystemOperation::FileEntryList FileEntryList; namespace { -void ExpectOk(base::PlatformFileError error) { +void ExpectOk(const GURL& origin_url, + const std::string& name, + base::PlatformFileError error) { ASSERT_EQ(base::PLATFORM_FILE_OK, error); } diff --git a/webkit/browser/fileapi/file_system_backend.h b/webkit/browser/fileapi/file_system_backend.h index 03f2766..dc9c0c5 100644 --- a/webkit/browser/fileapi/file_system_backend.h +++ b/webkit/browser/fileapi/file_system_backend.h @@ -43,7 +43,9 @@ class RemoteFileSystemProxyInterface; class WEBKIT_STORAGE_BROWSER_EXPORT FileSystemBackend { public: // Callback for OpenFileSystem. - typedef base::Callback<void(base::PlatformFileError error)> + typedef base::Callback<void(const GURL& root_url, + const std::string& name, + base::PlatformFileError error)> OpenFileSystemCallback; virtual ~FileSystemBackend() {} diff --git a/webkit/browser/fileapi/file_system_context.cc b/webkit/browser/fileapi/file_system_context.cc index a61b8b0..471341c 100644 --- a/webkit/browser/fileapi/file_system_context.cc +++ b/webkit/browser/fileapi/file_system_context.cc @@ -27,7 +27,6 @@ #include "webkit/browser/fileapi/sandbox_file_system_backend.h" #include "webkit/browser/fileapi/syncable/local_file_change_tracker.h" #include "webkit/browser/fileapi/syncable/local_file_sync_context.h" -#include "webkit/browser/fileapi/syncable/syncable_file_system_util.h" #include "webkit/browser/fileapi/test_file_system_backend.h" #include "webkit/browser/quota/quota_manager.h" #include "webkit/browser/quota/special_storage_policy.h" @@ -270,16 +269,8 @@ void FileSystemContext::OpenFileSystem( return; } - GURL root_url; - if (type == kFileSystemTypeSyncable) - root_url = sync_file_system::GetSyncableFileSystemRootURI(origin_url); - else - root_url = GetFileSystemRootURI(origin_url, type); - std::string name = GetFileSystemName(origin_url, type); - - backend->OpenFileSystem( - origin_url, type, mode, - base::Bind(&DidOpenFileSystem, callback, root_url, name)); + backend->OpenFileSystem(origin_url, type, mode, + base::Bind(&DidOpenFileSystem, callback)); } void FileSystemContext::DeleteFileSystem( diff --git a/webkit/browser/fileapi/isolated_file_system_backend.cc b/webkit/browser/fileapi/isolated_file_system_backend.cc index d40fe36..37de6eb 100644 --- a/webkit/browser/fileapi/isolated_file_system_backend.cc +++ b/webkit/browser/fileapi/isolated_file_system_backend.cc @@ -64,7 +64,10 @@ void IsolatedFileSystemBackend::OpenFileSystem( // We never allow opening a new isolated FileSystem via usual OpenFileSystem. base::MessageLoopProxy::current()->PostTask( FROM_HERE, - base::Bind(callback, base::PLATFORM_FILE_ERROR_SECURITY)); + base::Bind(callback, + GetFileSystemRootURI(origin_url, type), + GetFileSystemName(origin_url, type), + base::PLATFORM_FILE_ERROR_SECURITY)); } FileSystemFileUtil* IsolatedFileSystemBackend::GetFileUtil( diff --git a/webkit/browser/fileapi/sandbox_file_system_backend.cc b/webkit/browser/fileapi/sandbox_file_system_backend.cc index 0c4d628..a3afde7 100644 --- a/webkit/browser/fileapi/sandbox_file_system_backend.cc +++ b/webkit/browser/fileapi/sandbox_file_system_backend.cc @@ -28,6 +28,7 @@ #include "webkit/browser/fileapi/sandbox_file_stream_writer.h" #include "webkit/browser/fileapi/sandbox_quota_observer.h" #include "webkit/browser/fileapi/syncable/syncable_file_system_operation.h" +#include "webkit/browser/fileapi/syncable/syncable_file_system_util.h" #include "webkit/browser/quota/quota_manager.h" #include "webkit/common/fileapi/file_system_types.h" #include "webkit/common/fileapi/file_system_util.h" @@ -98,7 +99,7 @@ class ObfuscatedOriginEnumerator void DidOpenFileSystem( base::WeakPtr<SandboxFileSystemBackend> mount_point_provider, - const FileSystemBackend::OpenFileSystemCallback& callback, + const base::Callback<void(base::PlatformFileError error)>& callback, base::PlatformFileError* error) { if (mount_point_provider.get()) mount_point_provider.get()->CollectOpenFileSystemMetrics(*error); @@ -176,14 +177,15 @@ bool SandboxFileSystemBackend::CanHandleType(FileSystemType type) const { } void SandboxFileSystemBackend::OpenFileSystem( - const GURL& origin_url, fileapi::FileSystemType type, + const GURL& origin_url, + fileapi::FileSystemType type, OpenFileSystemMode mode, const OpenFileSystemCallback& callback) { if (file_system_options_.is_incognito() && !(type == kFileSystemTypeTemporary && enable_temporary_file_system_in_incognito_)) { // TODO(kinuko): return an isolated temporary directory. - callback.Run(base::PLATFORM_FILE_ERROR_SECURITY); + callback.Run(GURL(), std::string(), base::PLATFORM_FILE_ERROR_SECURITY); UMA_HISTOGRAM_ENUMERATION(kOpenFileSystemLabel, kIncognito, kFileSystemErrorMax); @@ -191,13 +193,20 @@ void SandboxFileSystemBackend::OpenFileSystem( } if (!IsAllowedScheme(origin_url)) { - callback.Run(base::PLATFORM_FILE_ERROR_SECURITY); + callback.Run(GURL(), std::string(), base::PLATFORM_FILE_ERROR_SECURITY); UMA_HISTOGRAM_ENUMERATION(kOpenFileSystemLabel, kInvalidSchemeError, kFileSystemErrorMax); return; } + // TODO(nhiroki): Factor out SyncFS related code to SyncFileSystemBackend we + // plan to introduce. (http://crbug.com/242422/) + GURL root_url = (type == kFileSystemTypeSyncable) + ? sync_file_system::GetSyncableFileSystemRootURI(origin_url) + : GetFileSystemRootURI(origin_url, type); + std::string name = GetFileSystemName(origin_url, type); + base::PlatformFileError* error_ptr = new base::PlatformFileError; sandbox_context_->file_task_runner()->PostTaskAndReply( FROM_HERE, @@ -207,7 +216,8 @@ void SandboxFileSystemBackend::OpenFileSystem( base::Unretained(error_ptr)), base::Bind(&DidOpenFileSystem, weak_factory_.GetWeakPtr(), - callback, base::Owned(error_ptr))); + base::Bind(callback, root_url, name), + base::Owned(error_ptr))); if (enable_usage_tracking_) return; diff --git a/webkit/browser/fileapi/sandbox_file_system_backend_unittest.cc b/webkit/browser/fileapi/sandbox_file_system_backend_unittest.cc index 237a583..2794df3 100644 --- a/webkit/browser/fileapi/sandbox_file_system_backend_unittest.cc +++ b/webkit/browser/fileapi/sandbox_file_system_backend_unittest.cc @@ -73,6 +73,8 @@ FileSystemURL CreateFileSystemURL(const char* path) { } void DidOpenFileSystem(base::PlatformFileError* error_out, + const GURL& origin_url, + const std::string& name, base::PlatformFileError error) { *error_out = error; } diff --git a/webkit/browser/fileapi/test_file_system_backend.cc b/webkit/browser/fileapi/test_file_system_backend.cc index ff7ebff..17e7085 100644 --- a/webkit/browser/fileapi/test_file_system_backend.cc +++ b/webkit/browser/fileapi/test_file_system_backend.cc @@ -104,7 +104,9 @@ void TestFileSystemBackend::OpenFileSystem( FileSystemType type, OpenFileSystemMode mode, const OpenFileSystemCallback& callback) { - callback.Run(base::PLATFORM_FILE_OK); + callback.Run(GetFileSystemRootURI(origin_url, type), + GetFileSystemName(origin_url, type), + base::PLATFORM_FILE_OK); } FileSystemFileUtil* TestFileSystemBackend::GetFileUtil(FileSystemType type) { |