summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--webkit/browser/fileapi/file_system_context.cc31
-rw-r--r--webkit/browser/fileapi/file_system_context.h5
-rw-r--r--webkit/browser/fileapi/file_system_quota_util.h9
-rw-r--r--webkit/browser/fileapi/sandbox_mount_point_provider.h9
-rw-r--r--webkit/browser/fileapi/test_mount_point_provider.cc8
5 files changed, 40 insertions, 22 deletions
diff --git a/webkit/browser/fileapi/file_system_context.cc b/webkit/browser/fileapi/file_system_context.cc
index 4d0e89f..e1e99ed 100644
--- a/webkit/browser/fileapi/file_system_context.cc
+++ b/webkit/browser/fileapi/file_system_context.cc
@@ -119,23 +119,24 @@ FileSystemContext::FileSystemContext(
bool FileSystemContext::DeleteDataForOriginOnFileThread(
const GURL& origin_url) {
DCHECK(task_runners_->file_task_runner()->RunsTasksOnCurrentThread());
- DCHECK(sandbox_provider());
DCHECK(origin_url == origin_url.GetOrigin());
- // Delete temporary and persistent data.
- return
- (sandbox_provider()->DeleteOriginDataOnFileThread(
- this, quota_manager_proxy(), origin_url,
- kFileSystemTypeTemporary) ==
- base::PLATFORM_FILE_OK) &&
- (sandbox_provider()->DeleteOriginDataOnFileThread(
- this, quota_manager_proxy(), origin_url,
- kFileSystemTypePersistent) ==
- base::PLATFORM_FILE_OK) &&
- (sandbox_provider()->DeleteOriginDataOnFileThread(
- this, quota_manager_proxy(), origin_url,
- kFileSystemTypeSyncable) ==
- base::PLATFORM_FILE_OK);
+ bool success = true;
+ for (MountPointProviderMap::iterator iter = provider_map_.begin();
+ iter != provider_map_.end();
+ ++iter) {
+ FileSystemMountPointProvider* provider = iter->second;
+ if (!provider->GetQuotaUtil())
+ continue;
+ if (provider->GetQuotaUtil()->DeleteOriginDataOnFileThread(
+ this, quota_manager_proxy(), origin_url, iter->first)
+ != base::PLATFORM_FILE_OK) {
+ // Continue the loop, but record the failure.
+ success = false;
+ }
+ }
+
+ return success;
}
FileSystemQuotaUtil*
diff --git a/webkit/browser/fileapi/file_system_context.h b/webkit/browser/fileapi/file_system_context.h
index a35acee5..ce8648d 100644
--- a/webkit/browser/fileapi/file_system_context.h
+++ b/webkit/browser/fileapi/file_system_context.h
@@ -284,8 +284,11 @@ class WEBKIT_STORAGE_BROWSER_EXPORT FileSystemContext
// Registered mount point providers.
// The map must be constructed in the constructor since it can be accessed
// on multiple threads.
- // The ownership of each provider is held by mount_point_providers_.
+ // This map itself doesn't retain each provider's ownership; ownerships
+ // of the providers are held by additional_providers_ or other scoped_ptr
+ // provider fields.
MountPointProviderMap provider_map_;
+
// External mount points visible in the file system context (excluding system
// external mount points).
scoped_refptr<ExternalMountPoints> external_mount_points_;
diff --git a/webkit/browser/fileapi/file_system_quota_util.h b/webkit/browser/fileapi/file_system_quota_util.h
index 64776e3..4369db7 100644
--- a/webkit/browser/fileapi/file_system_quota_util.h
+++ b/webkit/browser/fileapi/file_system_quota_util.h
@@ -9,6 +9,7 @@
#include <string>
#include "base/basictypes.h"
+#include "base/platform_file.h"
#include "googleurl/src/gurl.h"
#include "webkit/browser/webkit_storage_browser_export.h"
#include "webkit/common/fileapi/file_system_types.h"
@@ -33,6 +34,14 @@ class WEBKIT_STORAGE_BROWSER_EXPORT FileSystemQuotaUtil {
public:
virtual ~FileSystemQuotaUtil() {}
+ // Deletes the data on the origin and reports the amount of deleted data
+ // to the quota manager via |proxy|.
+ virtual base::PlatformFileError DeleteOriginDataOnFileThread(
+ FileSystemContext* context,
+ quota::QuotaManagerProxy* proxy,
+ const GURL& origin_url,
+ FileSystemType type) = 0;
+
virtual void GetOriginsForTypeOnFileThread(fileapi::FileSystemType type,
std::set<GURL>* origins) = 0;
diff --git a/webkit/browser/fileapi/sandbox_mount_point_provider.h b/webkit/browser/fileapi/sandbox_mount_point_provider.h
index f3e195c..cb0d70b 100644
--- a/webkit/browser/fileapi/sandbox_mount_point_provider.h
+++ b/webkit/browser/fileapi/sandbox_mount_point_provider.h
@@ -131,15 +131,12 @@ class WEBKIT_STORAGE_BROWSER_EXPORT SandboxMountPointProvider
FileSystemType type,
bool create);
- // Deletes the data on the origin and reports the amount of deleted data
- // to the quota manager via |proxy|.
- base::PlatformFileError DeleteOriginDataOnFileThread(
+ // FileSystemQuotaUtil overrides.
+ virtual base::PlatformFileError DeleteOriginDataOnFileThread(
FileSystemContext* context,
quota::QuotaManagerProxy* proxy,
const GURL& origin_url,
- FileSystemType type);
-
- // FileSystemQuotaUtil overrides.
+ FileSystemType type) OVERRIDE;
virtual void GetOriginsForTypeOnFileThread(
FileSystemType type,
std::set<GURL>* origins) OVERRIDE;
diff --git a/webkit/browser/fileapi/test_mount_point_provider.cc b/webkit/browser/fileapi/test_mount_point_provider.cc
index 14211f2..fe05ceb 100644
--- a/webkit/browser/fileapi/test_mount_point_provider.cc
+++ b/webkit/browser/fileapi/test_mount_point_provider.cc
@@ -33,6 +33,14 @@ class TestMountPointProvider::QuotaUtil
virtual ~QuotaUtil() {}
// FileSystemQuotaUtil overrides.
+ virtual base::PlatformFileError DeleteOriginDataOnFileThread(
+ FileSystemContext* context,
+ quota::QuotaManagerProxy* proxy,
+ const GURL& origin_url,
+ FileSystemType type) OVERRIDE {
+ NOTREACHED();
+ return base::PLATFORM_FILE_OK;
+ }
virtual void GetOriginsForTypeOnFileThread(
FileSystemType type,
std::set<GURL>* origins) OVERRIDE {