From e83ae9b5d2bfd9985a7631520631b2d97665c9fa Mon Sep 17 00:00:00 2001
From: "nhiroki@chromium.org"
 <nhiroki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Wed, 13 Nov 2013 17:33:21 +0000
Subject: 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
---
 webkit/browser/fileapi/file_system_context.cc      |  7 +++---
 webkit/browser/fileapi/file_system_context.h       | 16 +++++---------
 .../fileapi/plugin_private_file_system_backend.cc  | 25 ++++++----------------
 .../fileapi/plugin_private_file_system_backend.h   |  8 +++----
 4 files changed, 19 insertions(+), 37 deletions(-)

(limited to 'webkit/browser/fileapi')

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;
-- 
cgit v1.1