diff options
author | nhiroki@chromium.org <nhiroki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-13 17:33:21 +0000 |
---|---|---|
committer | nhiroki@chromium.org <nhiroki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-13 17:33:21 +0000 |
commit | e83ae9b5d2bfd9985a7631520631b2d97665c9fa (patch) | |
tree | 07b755c519fec0be212811ed0242e15c2f3bd073 /webkit | |
parent | cb563fc32f3cc084d4454f95b6e6ab9281af5ad2 (diff) | |
download | chromium_src-e83ae9b5d2bfd9985a7631520631b2d97665c9fa.zip chromium_src-e83ae9b5d2bfd9985a7631520631b2d97665c9fa.tar.gz chromium_src-e83ae9b5d2bfd9985a7631520631b2d97665c9fa.tar.bz2 |
FileAPI: Modify PluginPrivateFileSystemBackend
This modifies PluginPrivateFileSystemBackend to adapt to Pepper side change [*].
- Does not call RegisterFileSystem in the backend side. That will be called from
PepperIsolatedFileSystemMessageFilter instead.
- Changing callback signature for the OpenPluginPrivateFileSystem since the
caller does not need origin_url and filesystem_id.
[*] https://codereview.chromium.org/26803004/
BUG=286240
TEST=content_unittests --gtest_filter=PluginPrivateFileSystemBackendTest.*
TBR=kinuko@chromium.org
Review URL: https://codereview.chromium.org/68513011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@234841 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
4 files changed, 19 insertions, 37 deletions
diff --git a/webkit/browser/fileapi/file_system_context.cc b/webkit/browser/fileapi/file_system_context.cc index fd6ae4d..5bf8977 100644 --- a/webkit/browser/fileapi/file_system_context.cc +++ b/webkit/browser/fileapi/file_system_context.cc @@ -348,7 +348,7 @@ void FileSystemContext::ResolveURL( void FileSystemContext::DeleteFileSystem( const GURL& origin_url, FileSystemType type, - const DeleteFileSystemCallback& callback) { + const StatusCallback& callback) { DCHECK(io_task_runner_->RunsTasksOnCurrentThread()); DCHECK(origin_url == origin_url.GetOrigin()); DCHECK(!callback.is_null()); @@ -439,12 +439,13 @@ bool FileSystemContext::CanServeURLRequest(const FileSystemURL& url) const { void FileSystemContext::OpenPluginPrivateFileSystem( const GURL& origin_url, FileSystemType type, + const std::string& filesystem_id, const std::string& plugin_id, OpenFileSystemMode mode, - const OpenPluginPrivateFileSystemCallback& callback) { + const StatusCallback& callback) { DCHECK(plugin_private_backend_); plugin_private_backend_->OpenPrivateFileSystem( - origin_url, type, plugin_id, mode, callback); + origin_url, type, filesystem_id, plugin_id, mode, callback); } FileSystemContext::~FileSystemContext() { diff --git a/webkit/browser/fileapi/file_system_context.h b/webkit/browser/fileapi/file_system_context.h index 745bdae..b7a4a94 100644 --- a/webkit/browser/fileapi/file_system_context.h +++ b/webkit/browser/fileapi/file_system_context.h @@ -174,15 +174,8 @@ class WEBKIT_STORAGE_BROWSER_EXPORT FileSystemContext const base::FilePath& file_path, bool is_directory)> ResolveURLCallback; - // Used for DeleteFileSystem. - typedef base::Callback<void(base::PlatformFileError result)> - DeleteFileSystemCallback; - - // Used for OpenPluginPrivateFileSystem. - typedef base::Callback<void(const GURL& root, - const std::string& filesystem_id, - base::PlatformFileError result)> - OpenPluginPrivateFileSystemCallback; + // Used for DeleteFileSystem and OpenPluginPrivateFileSystem. + typedef base::Callback<void(base::PlatformFileError result)> StatusCallback; // Opens the filesystem for the given |origin_url| and |type|, and dispatches // |callback| on completion. @@ -207,7 +200,7 @@ class WEBKIT_STORAGE_BROWSER_EXPORT FileSystemContext void DeleteFileSystem( const GURL& origin_url, FileSystemType type, - const DeleteFileSystemCallback& callback); + const StatusCallback& callback); // Creates new FileStreamReader instance to read a file pointed by the given // filesystem URL |url| starting from |offset|. |expected_modification_time| @@ -269,9 +262,10 @@ class WEBKIT_STORAGE_BROWSER_EXPORT FileSystemContext void OpenPluginPrivateFileSystem( const GURL& origin_url, FileSystemType type, + const std::string& filesystem_id, const std::string& plugin_id, OpenFileSystemMode mode, - const OpenPluginPrivateFileSystemCallback& callback); + const StatusCallback& callback); private: typedef std::map<FileSystemType, FileSystemBackend*> diff --git a/webkit/browser/fileapi/plugin_private_file_system_backend.cc b/webkit/browser/fileapi/plugin_private_file_system_backend.cc index e701ce9..0426bd2 100644 --- a/webkit/browser/fileapi/plugin_private_file_system_backend.cc +++ b/webkit/browser/fileapi/plugin_private_file_system_backend.cc @@ -43,8 +43,8 @@ class PluginPrivateFileSystemBackend::FileSystemIDToPluginMap { void RegisterFileSystem(const std::string& filesystem_id, const std::string& plugin_id) { DCHECK(task_runner_->RunsTasksOnCurrentThread()); - DCHECK(!filesystem_id.empty() && - !ContainsKey(map_, filesystem_id)) << filesystem_id; + DCHECK(!filesystem_id.empty()); + DCHECK(!ContainsKey(map_, filesystem_id)) << filesystem_id; map_[filesystem_id] = plugin_id; } @@ -77,9 +77,7 @@ base::PlatformFileError OpenFileSystemOnFileThread( const bool create = (mode == OPEN_FILE_SYSTEM_CREATE_IF_NONEXISTENT); file_util->GetDirectoryForOriginAndType( origin_url, plugin_id, create, &error); - if (error != base::PLATFORM_FILE_OK) - IsolatedContext::GetInstance()->RevokeFileSystem(filesystem_id); - else + if (error == base::PLATFORM_FILE_OK) plugin_map->RegisterFileSystem(filesystem_id, plugin_id); return error; } @@ -119,32 +117,23 @@ PluginPrivateFileSystemBackend::~PluginPrivateFileSystemBackend() { void PluginPrivateFileSystemBackend::OpenPrivateFileSystem( const GURL& origin_url, FileSystemType type, + const std::string& filesystem_id, const std::string& plugin_id, OpenFileSystemMode mode, - const OpenPrivateFileSystemCallback& callback) { + const StatusCallback& callback) { if (!CanHandleType(type) || file_system_options_.is_incognito()) { base::MessageLoopProxy::current()->PostTask( - FROM_HERE, base::Bind(callback, GURL(), std::string(), - base::PLATFORM_FILE_ERROR_SECURITY)); + FROM_HERE, base::Bind(callback, base::PLATFORM_FILE_ERROR_SECURITY)); return; } - // TODO(nhiroki,kinuko): This constant should be somehow shared. - const std::string name("PluginPrivate"); - std::string filesystem_id = - IsolatedContext::GetInstance()->RegisterFileSystemForVirtualPath( - type, name, base::FilePath()); - PostTaskAndReplyWithResult( file_task_runner_.get(), FROM_HERE, base::Bind(&OpenFileSystemOnFileThread, obfuscated_file_util(), plugin_map_, origin_url, filesystem_id, plugin_id, mode), - base::Bind(callback, - GURL(GetIsolatedFileSystemRootURIString( - origin_url, filesystem_id, name)), - filesystem_id)); + callback); } bool PluginPrivateFileSystemBackend::CanHandleType(FileSystemType type) const { diff --git a/webkit/browser/fileapi/plugin_private_file_system_backend.h b/webkit/browser/fileapi/plugin_private_file_system_backend.h index 69d61c2..d41f4b7 100644 --- a/webkit/browser/fileapi/plugin_private_file_system_backend.h +++ b/webkit/browser/fileapi/plugin_private_file_system_backend.h @@ -31,10 +31,7 @@ class WEBKIT_STORAGE_BROWSER_EXPORT PluginPrivateFileSystemBackend public FileSystemQuotaUtil { public: class FileSystemIDToPluginMap; - typedef base::Callback<void(const GURL& root, - const std::string& filesystem_id, - base::PlatformFileError result)> - OpenPrivateFileSystemCallback; + typedef base::Callback<void(base::PlatformFileError result)> StatusCallback; PluginPrivateFileSystemBackend( base::SequencedTaskRunner* file_task_runner, @@ -52,9 +49,10 @@ class WEBKIT_STORAGE_BROWSER_EXPORT PluginPrivateFileSystemBackend void OpenPrivateFileSystem( const GURL& origin_url, FileSystemType type, + const std::string& filesystem_id, const std::string& plugin_id, OpenFileSystemMode mode, - const OpenPrivateFileSystemCallback& callback); + const StatusCallback& callback); // FileSystemBackend overrides. virtual bool CanHandleType(FileSystemType type) const OVERRIDE; |