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

Unified Diff: webkit/fileapi/file_system_context.cc

Issue 12717014: Launch packaged app with files on Drive on Chrome OS. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 7 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/fileapi/external_mount_points.cc ('k') | webkit/fileapi/file_system_types.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/fileapi/file_system_context.cc
diff --git a/webkit/fileapi/file_system_context.cc b/webkit/fileapi/file_system_context.cc
index 017cf29f417ed78b3a73a84a6a864fdbf0f909b5..33825f6c0fd42dabec68fce7c47154f879c38237 100644
--- a/webkit/fileapi/file_system_context.cc
+++ b/webkit/fileapi/file_system_context.cc
@@ -150,6 +150,7 @@ FileSystemMountPointProvider* FileSystemContext::GetMountPointProvider(
case kFileSystemTypeDeviceMedia:
return isolated_provider_.get();
case kFileSystemTypeNativeLocal:
+ case kFileSystemTypeNativeForPlatformApp:
#if defined(OS_CHROMEOS)
return external_provider_.get();
#else
@@ -349,20 +350,24 @@ FileSystemURL FileSystemContext::CrackFileSystemURL(
// The returned value in case there is no crackers which can crack the url.
// This is valid situation for non isolated/external file systems.
- FileSystemURL result = url;
-
- for (size_t i = 0; i < url_crackers_.size(); ++i) {
- if (!url_crackers_[i]->HandlesFileSystemMountType(url.type()))
- continue;
-
- result = url_crackers_[i]->CreateCrackedFileSystemURL(url.origin(),
- url.type(),
- url.path());
- if (result.is_valid())
- return result;
+ FileSystemURL current = url;
+
+ // File system may be mounted multiple times (e.g., an isolated filesystem on
+ // top of an external filesystem). Hence cracking needs to be iterated.
+ for (;;) {
+ FileSystemURL cracked = current;
+ for (size_t i = 0; i < url_crackers_.size(); ++i) {
+ if (!url_crackers_[i]->HandlesFileSystemMountType(current.type()))
+ continue;
+ cracked = url_crackers_[i]->CrackFileSystemURL(current);
+ if (cracked.is_valid())
+ break;
+ }
+ if (cracked == current)
+ break;
+ current = cracked;
}
-
- return result;
+ return current;
}
FileSystemFileUtil* FileSystemContext::GetFileUtil(
« no previous file with comments | « webkit/fileapi/external_mount_points.cc ('k') | webkit/fileapi/file_system_types.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698