Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(762)

Unified Diff: webkit/browser/fileapi/file_system_context.h

Issue 195923002: Add mechanism to auto mount file systems in response to a URL request. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix CrOS Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/browser/fileapi/external_mount_points.h ('k') | webkit/browser/fileapi/file_system_context.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/browser/fileapi/file_system_context.h
diff --git a/webkit/browser/fileapi/file_system_context.h b/webkit/browser/fileapi/file_system_context.h
index 62841d19dc82d93e3bbc92674227fe36d82729f6..ba91af7ef97b9510c00018581b385c2a5988d990 100644
--- a/webkit/browser/fileapi/file_system_context.h
+++ b/webkit/browser/fileapi/file_system_context.h
@@ -38,6 +38,10 @@ class QuotaManagerProxy;
class SpecialStoragePolicy;
}
+namespace net {
+class URLRequest;
+}
+
namespace webkit_blob {
class BlobURLRequestJobTest;
class FileStreamReader;
@@ -65,6 +69,18 @@ class SandboxFileSystemBackend;
struct DefaultContextDeleter;
struct FileSystemInfo;
+// An auto mount handler will attempt to mount the file system requested in
+// |url_request|. If the URL is for this auto mount handler, it returns true
+// and calls |callback| when the attempt is complete. If the auto mounter
+// does not recognize the URL, it returns false and does not call |callback|.
+// Called on the IO thread.
+typedef base::Callback<bool(
+ const net::URLRequest* url_request,
+ const FileSystemURL& filesystem_url,
+ const std::string& storage_domain,
+ const base::Callback<void(base::File::Error result)>& callback)>
+ URLRequestAutoMountHandler;
+
// This class keeps and provides a file system context for FileSystem API.
// An instance of this class is created and owned by profile.
class WEBKIT_STORAGE_BROWSER_EXPORT FileSystemContext
@@ -95,6 +111,10 @@ class WEBKIT_STORAGE_BROWSER_EXPORT FileSystemContext
// to serve filesystem requests for non-regular types.
// If none is given, this context only handles HTML5 Sandbox FileSystem
// and Drag-and-drop Isolated FileSystem requests.
+ //
+ // |auto_mount_handlers| are used to resolve calls to
+ // AttemptAutoMountForURLRequest. Only external filesystems are auto mounted
+ // when a filesystem: URL request is made.
FileSystemContext(
base::SingleThreadTaskRunner* io_task_runner,
base::SequencedTaskRunner* file_task_runner,
@@ -102,6 +122,7 @@ class WEBKIT_STORAGE_BROWSER_EXPORT FileSystemContext
quota::SpecialStoragePolicy* special_storage_policy,
quota::QuotaManagerProxy* quota_manager_proxy,
ScopedVector<FileSystemBackend> additional_backends,
+ const std::vector<URLRequestAutoMountHandler>& auto_mount_handlers,
const base::FilePath& partition_path,
const FileSystemOptions& options);
@@ -193,6 +214,13 @@ class WEBKIT_STORAGE_BROWSER_EXPORT FileSystemContext
const FileSystemURL& url,
const ResolveURLCallback& callback);
+ // Attempts to mount the filesystem needed to satisfy |url_request| made
+ // from |storage_domain|. If an appropriate file system is not found,
+ // callback will return an error.
+ void AttemptAutoMountForURLRequest(const net::URLRequest* url_request,
+ const std::string& storage_domain,
+ const StatusCallback& callback);
+
// Deletes the filesystem for the given |origin_url| and |type|. This should
// be called on the IO thread.
void DeleteFileSystem(
@@ -343,6 +371,8 @@ class WEBKIT_STORAGE_BROWSER_EXPORT FileSystemContext
scoped_ptr<PluginPrivateFileSystemBackend> plugin_private_backend_;
ScopedVector<FileSystemBackend> additional_backends_;
+ std::vector<URLRequestAutoMountHandler> auto_mount_handlers_;
+
// Registered file system backends.
// The map must be constructed in the constructor since it can be accessed
// on multiple threads.
« no previous file with comments | « webkit/browser/fileapi/external_mount_points.h ('k') | webkit/browser/fileapi/file_system_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698