Chromium Code Reviews| 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..584b33ef0a9956d0b443fc7fa15282fd2154daf3 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, |
| + std::vector<URLRequestAutoMountHandler> auto_mount_handlers, |
|
kinuko
2014/03/13 04:19:19
const ref?
vandebo (ex-Chrome)
2014/03/13 20:19:32
Oops. Fixed.
|
| 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( |
|
kinuko
2014/03/12 05:50:40
Will you need this only for URL request? Do we als
vandebo (ex-Chrome)
2014/03/12 18:35:54
I initially tried making this part of ResolveURL o
kinuko
2014/03/13 04:19:19
(Assuming you're going to support toURL for media
vandebo (ex-Chrome)
2014/03/13 20:19:32
Hmm... That's specifically for "Local" filesystem
|
| + const net::URLRequest* url_request, |
| + const std::string& storage_domain, |
| + const StatusCallback& callback) { |
| + FileSystemURL filesystem_url = FileSystemURL(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, |