Index: webkit/fileapi/file_system_path_manager.cc |
diff --git a/webkit/fileapi/file_system_path_manager.cc b/webkit/fileapi/file_system_path_manager.cc |
index 92681064e4b3c288cd0c6677a9a01086f1d7d539..2804437ead691d43a71620ec02f5c89f3f6cfd9c 100644 |
--- a/webkit/fileapi/file_system_path_manager.cc |
+++ b/webkit/fileapi/file_system_path_manager.cc |
@@ -100,11 +100,14 @@ FilePath FileSystemPathManager::ValidateFileSystemRootAndGetPathOnFileThread( |
} |
bool FileSystemPathManager::IsAllowedScheme(const GURL& url) const { |
- // Basically we only accept http or https. We allow file:// URLs |
- // only if --allow-file-access-from-files flag is given. |
+ // Basically we only accept http, https, or extensions. We allow file:// URLs |
+ // only if --allow-file-access-from-files flag is given. And we allow |
+ // filesystem: urls if the URL's inner scheme is one we allow. |
return url.SchemeIs("http") || url.SchemeIs("https") || |
url.SchemeIs(kExtensionScheme) || url.SchemeIs(kChromeScheme) || |
- (url.SchemeIsFile() && allow_file_access_from_files_); |
+ (url.SchemeIsFile() && allow_file_access_from_files_) || |
+ (url.SchemeIsFileSystem() && url.inner_url() && |
+ IsAllowedScheme(*url.inner_url())); |
} |
// static |