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

Side by Side Diff: webkit/browser/fileapi/external_mount_points.cc

Issue 341043008: Add FileSystemID parameter to IsolatedContext::RegisterFileSystemForPath. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "webkit/browser/fileapi/external_mount_points.h" 5 #include "webkit/browser/fileapi/external_mount_points.h"
6 6
7 #include "base/files/file_path.h" 7 #include "base/files/file_path.h"
8 #include "base/lazy_instance.h" 8 #include "base/lazy_instance.h"
9 #include "base/path_service.h" 9 #include "base/path_service.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 if (found == instance_map_.end()) 142 if (found == instance_map_.end())
143 return false; 143 return false;
144 *path = found->second->path(); 144 *path = found->second->path();
145 return true; 145 return true;
146 } 146 }
147 147
148 bool ExternalMountPoints::CrackVirtualPath( 148 bool ExternalMountPoints::CrackVirtualPath(
149 const base::FilePath& virtual_path, 149 const base::FilePath& virtual_path,
150 std::string* mount_name, 150 std::string* mount_name,
151 FileSystemType* type, 151 FileSystemType* type,
152 std::string* cracked_id,
152 base::FilePath* path, 153 base::FilePath* path,
153 FileSystemMountOption* mount_option) const { 154 FileSystemMountOption* mount_option) const {
154 DCHECK(mount_name); 155 DCHECK(mount_name);
155 DCHECK(path); 156 DCHECK(path);
156 157
157 // The path should not contain any '..' references. 158 // The path should not contain any '..' references.
158 if (virtual_path.ReferencesParent()) 159 if (virtual_path.ReferencesParent())
159 return false; 160 return false;
160 161
161 // The virtual_path should comprise of <mount_name> and <relative_path> parts. 162 // The virtual_path should comprise of <mount_name> and <relative_path> parts.
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 // On other OS, it is simply a native local path. 288 // On other OS, it is simply a native local path.
288 return FileSystemURL( 289 return FileSystemURL(
289 url.origin(), url.mount_type(), url.virtual_path(), 290 url.origin(), url.mount_type(), url.virtual_path(),
290 url.mount_filesystem_id(), kFileSystemTypeNativeLocal, 291 url.mount_filesystem_id(), kFileSystemTypeNativeLocal,
291 url.path(), url.filesystem_id(), url.mount_option()); 292 url.path(), url.filesystem_id(), url.mount_option());
292 #endif 293 #endif
293 } 294 }
294 295
295 std::string mount_name; 296 std::string mount_name;
296 FileSystemType cracked_type; 297 FileSystemType cracked_type;
298 std::string cracked_id;
297 base::FilePath cracked_path; 299 base::FilePath cracked_path;
298 FileSystemMountOption cracked_mount_option; 300 FileSystemMountOption cracked_mount_option;
299 301
300 if (!CrackVirtualPath(virtual_path, &mount_name, &cracked_type, 302 if (!CrackVirtualPath(virtual_path, &mount_name, &cracked_type,
301 &cracked_path, &cracked_mount_option)) { 303 &cracked_id, &cracked_path, &cracked_mount_option)) {
302 return FileSystemURL(); 304 return FileSystemURL();
303 } 305 }
304 306
305 return FileSystemURL( 307 return FileSystemURL(
306 url.origin(), url.mount_type(), url.virtual_path(), 308 url.origin(), url.mount_type(), url.virtual_path(),
307 !url.filesystem_id().empty() ? url.filesystem_id() : mount_name, 309 !url.filesystem_id().empty() ? url.filesystem_id() : mount_name,
308 cracked_type, cracked_path, mount_name, cracked_mount_option); 310 cracked_type, cracked_path,
311 cracked_id.empty() ? mount_name : cracked_id, cracked_mount_option);
309 } 312 }
310 313
311 bool ExternalMountPoints::ValidateNewMountPoint(const std::string& mount_name, 314 bool ExternalMountPoints::ValidateNewMountPoint(const std::string& mount_name,
312 FileSystemType type, 315 FileSystemType type,
313 const base::FilePath& path) { 316 const base::FilePath& path) {
314 lock_.AssertAcquired(); 317 lock_.AssertAcquired();
315 318
316 // Mount name must not be empty. 319 // Mount name must not be empty.
317 if (mount_name.empty()) 320 if (mount_name.empty())
318 return false; 321 return false;
(...skipping 29 matching lines...) Expand all
348 path.IsParent(potential_child->first)) { 351 path.IsParent(potential_child->first)) {
349 return false; 352 return false;
350 } 353 }
351 } 354 }
352 } 355 }
353 356
354 return true; 357 return true;
355 } 358 }
356 359
357 } // namespace fileapi 360 } // namespace fileapi
OLDNEW
« no previous file with comments | « webkit/browser/fileapi/external_mount_points.h ('k') | webkit/browser/fileapi/isolated_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698