Index: webkit/fileapi/file_system_context.h |
diff --git a/webkit/fileapi/file_system_context.h b/webkit/fileapi/file_system_context.h |
index e71fe73f0c8deb3ec5c44836d9f74c9af58f0ca3..4dd496fda809ca6ffe6328ec0fe14d95cfc62850 100644 |
--- a/webkit/fileapi/file_system_context.h |
+++ b/webkit/fileapi/file_system_context.h |
@@ -7,6 +7,7 @@ |
#include <map> |
#include <string> |
+#include <vector> |
#include "base/callback.h" |
#include "base/memory/ref_counted.h" |
@@ -14,6 +15,7 @@ |
#include "base/platform_file.h" |
#include "base/sequenced_task_runner_helpers.h" |
#include "webkit/fileapi/file_system_types.h" |
+#include "webkit/fileapi/file_system_url.h" |
#include "webkit/fileapi/task_runner_bound_observer_list.h" |
#include "webkit/storage/webkit_storage_export.h" |
@@ -31,6 +33,7 @@ class FileStreamReader; |
namespace fileapi { |
class ExternalFileSystemMountPointProvider; |
+class ExternalMountPoints; |
class FileSystemFileUtil; |
class FileSystemMountPointProvider; |
class FileSystemOperation; |
@@ -40,8 +43,9 @@ class FileSystemTaskRunners; |
class FileSystemURL; |
class IsolatedMountPointProvider; |
class LocalFileChangeTracker; |
-class SandboxMountPointProvider; |
class LocalFileSyncContext; |
+class MountPoints; |
+class SandboxMountPointProvider; |
struct DefaultContextDeleter; |
@@ -138,9 +142,9 @@ class WEBKIT_STORAGE_EXPORT FileSystemContext |
FileSystemType type, |
const DeleteFileSystemCallback& callback); |
- // Creates a new FileSystemOperation instance by cracking |
- // the given filesystem URL |url| to get an appropriate MountPointProvider |
- // and calling the provider's corresponding CreateFileSystemOperation method. |
+ // Creates a new FileSystemOperation instance by getting an appropriate |
+ // MountPointProvider for |url| and calling the provider's corresponding |
+ // CreateFileSystemOperation method. |
// The resolved MountPointProvider could perform further specialization |
// depending on the filesystem type pointed by the |url|. |
FileSystemOperation* CreateFileSystemOperation( |
@@ -177,6 +181,14 @@ class WEBKIT_STORAGE_EXPORT FileSystemContext |
const FilePath& partition_path() const { return partition_path_; } |
+ // Same as |CrackFileSystemURL|, but cracks FileSystemURL created from |url|. |
+ FileSystemURL CrackURL(const GURL& url) const; |
+ // Same as |CrackFileSystemURL|, but cracks FileSystemURL created from method |
+ // arguments. |
+ FileSystemURL CreateCrackedFileSystemURL(const GURL& origin, |
+ FileSystemType type, |
+ const FilePath& path) const; |
+ |
private: |
friend struct DefaultContextDeleter; |
friend class base::DeleteHelper<FileSystemContext>; |
@@ -186,6 +198,15 @@ class WEBKIT_STORAGE_EXPORT FileSystemContext |
void DeleteOnCorrectThread() const; |
+ // For non-cracked isolated and external mount points, returns a FileSystemURL |
+ // created by cracking |url|. The url is cracked using MountPoints registered |
+ // as |url_crackers_|. If the url cannot be cracked, returns invalid |
+ // FileSystemURL. |
+ // |
+ // If the original url does not point to an isolated or external filesystem, |
+ // returns the original url, without attempting to crack it. |
+ FileSystemURL CrackFileSystemURL(const FileSystemURL& url) const; |
+ |
scoped_ptr<FileSystemTaskRunners> task_runners_; |
scoped_refptr<quota::QuotaManagerProxy> quota_manager_proxy_; |
@@ -198,6 +219,10 @@ class WEBKIT_STORAGE_EXPORT FileSystemContext |
// Registered mount point providers. |
std::map<FileSystemType, FileSystemMountPointProvider*> provider_map_; |
+ // MountPoints used to crack FileSystemURLs. The MountPoints are ordered |
+ // in order they should try to crack a FileSystemURL. |
+ std::vector<MountPoints*> url_crackers_; |
+ |
// The base path of the storage partition for this context. |
const FilePath partition_path_; |