Index: webkit/browser/fileapi/file_system_context.cc |
diff --git a/webkit/browser/fileapi/file_system_context.cc b/webkit/browser/fileapi/file_system_context.cc |
index c42eadb4e10af5d7825e6d8f2dc0776e0cf696c7..067b25b43941a75aad66e55e56e4812e54b8ae7b 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, |