summaryrefslogtreecommitdiffstats
path: root/webkit/browser/fileapi/file_system_context.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/browser/fileapi/file_system_context.cc')
-rw-r--r--webkit/browser/fileapi/file_system_context.cc19
1 files changed, 19 insertions, 0 deletions
diff --git a/webkit/browser/fileapi/file_system_context.cc b/webkit/browser/fileapi/file_system_context.cc
index c42eadb..067b25b 100644
--- a/webkit/browser/fileapi/file_system_context.cc
+++ b/webkit/browser/fileapi/file_system_context.cc
@@ -8,6 +8,7 @@
#include "base/single_thread_task_runner.h"
#include "base/stl_util.h"
#include "base/task_runner_util.h"
+#include "net/url_request/url_request.h"
#include "url/gurl.h"
#include "webkit/browser/blob/file_stream_reader.h"
#include "webkit/browser/fileapi/copy_or_move_file_validator.h"
@@ -113,6 +114,7 @@ FileSystemContext::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)
: io_task_runner_(io_task_runner),
@@ -133,6 +135,7 @@ FileSystemContext::FileSystemContext(
special_storage_policy,
options)),
additional_backends_(additional_backends.Pass()),
+ auto_mount_handlers_(auto_mount_handlers),
external_mount_points_(external_mount_points),
partition_path_(partition_path),
is_incognito_(options.is_incognito()),
@@ -337,6 +340,22 @@ void FileSystemContext::ResolveURL(
callback));
}
+void FileSystemContext::AttemptAutoMountForURLRequest(
+ const net::URLRequest* url_request,
+ const std::string& storage_domain,
+ const StatusCallback& callback) {
+ FileSystemURL filesystem_url(url_request->url());
+ if (filesystem_url.type() == kFileSystemTypeExternal) {
+ for (size_t i = 0; i < auto_mount_handlers_.size(); i++) {
+ if (auto_mount_handlers_[i].Run(url_request, filesystem_url,
+ storage_domain, callback)) {
+ return;
+ }
+ }
+ }
+ callback.Run(base::File::FILE_ERROR_NOT_FOUND);
+}
+
void FileSystemContext::DeleteFileSystem(
const GURL& origin_url,
FileSystemType type,