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

Side by Side Diff: webkit/fileapi/sandbox_mount_point_provider.cc

Issue 10701094: Don't keep file system directories around if they contain unrelated files. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: error message Created 8 years, 5 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
« no previous file with comments | « webkit/fileapi/obfuscated_file_util.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/fileapi/sandbox_mount_point_provider.h" 5 #include "webkit/fileapi/sandbox_mount_point_provider.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 FileSystemType type, 290 FileSystemType type,
291 const FilePath& old_base_path, 291 const FilePath& old_base_path,
292 bool create, 292 bool create,
293 base::PlatformFileError* error_ptr) { 293 base::PlatformFileError* error_ptr) {
294 DCHECK(error_ptr); 294 DCHECK(error_ptr);
295 MigrateIfNeeded(file_util, old_base_path); 295 MigrateIfNeeded(file_util, old_base_path);
296 296
297 FilePath root_path = 297 FilePath root_path =
298 file_util->GetDirectoryForOriginAndType( 298 file_util->GetDirectoryForOriginAndType(
299 origin_url, type, create, error_ptr); 299 origin_url, type, create, error_ptr);
300 if (root_path.empty()) { 300 if (*error_ptr != base::PLATFORM_FILE_OK) {
301 UMA_HISTOGRAM_ENUMERATION(kOpenFileSystemLabel, 301 UMA_HISTOGRAM_ENUMERATION(kOpenFileSystemLabel,
302 kCreateDirectoryError, 302 kCreateDirectoryError,
303 kFileSystemErrorMax); 303 kFileSystemErrorMax);
304 } else { 304 } else {
305 UMA_HISTOGRAM_ENUMERATION(kOpenFileSystemLabel, kOK, kFileSystemErrorMax); 305 UMA_HISTOGRAM_ENUMERATION(kOpenFileSystemLabel, kOK, kFileSystemErrorMax);
306 } 306 }
307 // The reference of file_util will be derefed on the FILE thread 307 // The reference of file_util will be derefed on the FILE thread
308 // when the storage of this callback gets deleted regardless of whether 308 // when the storage of this callback gets deleted regardless of whether
309 // this method is called or not. 309 // this method is called or not.
310 } 310 }
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 SandboxMountPointProvider::GetFileSystemRootPathOnFileThread( 379 SandboxMountPointProvider::GetFileSystemRootPathOnFileThread(
380 const GURL& origin_url, FileSystemType type, const FilePath& unused, 380 const GURL& origin_url, FileSystemType type, const FilePath& unused,
381 bool create) { 381 bool create) {
382 if (file_system_options_.is_incognito()) 382 if (file_system_options_.is_incognito())
383 // TODO(kinuko): return an isolated temporary directory. 383 // TODO(kinuko): return an isolated temporary directory.
384 return FilePath(); 384 return FilePath();
385 385
386 if (!IsAllowedScheme(origin_url)) 386 if (!IsAllowedScheme(origin_url))
387 return FilePath(); 387 return FilePath();
388 388
389 MigrateIfNeeded(sandbox_file_util_.get(), old_base_path()); 389 return GetBaseDirectoryForOriginAndType(origin_url, type, create);
390
391 return sandbox_file_util_->GetDirectoryForOriginAndType(
392 origin_url, type, create);
393 } 390 }
394 391
395 bool SandboxMountPointProvider::IsAccessAllowed(const GURL& origin_url, 392 bool SandboxMountPointProvider::IsAccessAllowed(const GURL& origin_url,
396 FileSystemType type, 393 FileSystemType type,
397 const FilePath& unused) { 394 const FilePath& unused) {
398 if (type != kFileSystemTypeTemporary && type != kFileSystemTypePersistent) 395 if (type != kFileSystemTypeTemporary && type != kFileSystemTypePersistent)
399 return false; 396 return false;
400 // We essentially depend on quota to do our access controls, so here 397 // We essentially depend on quota to do our access controls, so here
401 // we only check if the requested scheme is allowed or not. 398 // we only check if the requested scheme is allowed or not.
402 return IsAllowedScheme(origin_url); 399 return IsAllowedScheme(origin_url);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 SandboxMountPointProvider::CreateOriginEnumerator() const { 472 SandboxMountPointProvider::CreateOriginEnumerator() const {
476 MigrateIfNeeded(sandbox_file_util_.get(), old_base_path()); 473 MigrateIfNeeded(sandbox_file_util_.get(), old_base_path());
477 return new ObfuscatedOriginEnumerator(sandbox_file_util_.get()); 474 return new ObfuscatedOriginEnumerator(sandbox_file_util_.get());
478 } 475 }
479 476
480 FilePath SandboxMountPointProvider::GetBaseDirectoryForOriginAndType( 477 FilePath SandboxMountPointProvider::GetBaseDirectoryForOriginAndType(
481 const GURL& origin_url, fileapi::FileSystemType type, bool create) const { 478 const GURL& origin_url, fileapi::FileSystemType type, bool create) const {
482 479
483 MigrateIfNeeded(sandbox_file_util_.get(), old_base_path()); 480 MigrateIfNeeded(sandbox_file_util_.get(), old_base_path());
484 481
485 return sandbox_file_util_->GetDirectoryForOriginAndType( 482 base::PlatformFileError error = base::PLATFORM_FILE_OK;
486 origin_url, type, create); 483 FilePath path = sandbox_file_util_->GetDirectoryForOriginAndType(
484 origin_url, type, create, &error);
485 if (error != base::PLATFORM_FILE_OK)
486 return FilePath();
487 return path;
487 } 488 }
488 489
489 bool SandboxMountPointProvider::DeleteOriginDataOnFileThread( 490 bool SandboxMountPointProvider::DeleteOriginDataOnFileThread(
490 FileSystemContext* file_system_context, 491 FileSystemContext* file_system_context,
491 QuotaManagerProxy* proxy, 492 QuotaManagerProxy* proxy,
492 const GURL& origin_url, 493 const GURL& origin_url,
493 fileapi::FileSystemType type) { 494 fileapi::FileSystemType type) {
494 MigrateIfNeeded(sandbox_file_util_.get(), old_base_path()); 495 MigrateIfNeeded(sandbox_file_util_.get(), old_base_path());
495 496
496 int64 usage = GetOriginUsageOnFileThread(file_system_context, 497 int64 usage = GetOriginUsageOnFileThread(file_system_context,
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
729 break; 730 break;
730 case base::PLATFORM_FILE_ERROR_FAILED: 731 case base::PLATFORM_FILE_ERROR_FAILED:
731 default: 732 default:
732 REPORT(kUnknownError); 733 REPORT(kUnknownError);
733 break; 734 break;
734 } 735 }
735 #undef REPORT 736 #undef REPORT
736 } 737 }
737 738
738 } // namespace fileapi 739 } // namespace fileapi
OLDNEW
« no previous file with comments | « webkit/fileapi/obfuscated_file_util.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698