summaryrefslogtreecommitdiffstats
path: root/webkit/browser/fileapi/sandbox_file_system_backend.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/browser/fileapi/sandbox_file_system_backend.cc')
-rw-r--r--webkit/browser/fileapi/sandbox_file_system_backend.cc141
1 files changed, 23 insertions, 118 deletions
diff --git a/webkit/browser/fileapi/sandbox_file_system_backend.cc b/webkit/browser/fileapi/sandbox_file_system_backend.cc
index 665c0f1..5cf2464 100644
--- a/webkit/browser/fileapi/sandbox_file_system_backend.cc
+++ b/webkit/browser/fileapi/sandbox_file_system_backend.cc
@@ -31,13 +31,6 @@ using quota::SpecialStoragePolicy;
namespace fileapi {
-namespace {
-
-const char kTemporaryOriginsCountLabel[] = "FileSystem.TemporaryOriginsCount";
-const char kPersistentOriginsCountLabel[] = "FileSystem.PersistentOriginsCount";
-
-} // anonymous namespace
-
SandboxFileSystemBackend::SandboxFileSystemBackend(
SandboxFileSystemBackendDelegate* delegate)
: delegate_(delegate),
@@ -53,11 +46,23 @@ bool SandboxFileSystemBackend::CanHandleType(FileSystemType type) const {
}
void SandboxFileSystemBackend::Initialize(FileSystemContext* context) {
+ DCHECK(delegate_);
+
// Set quota observers.
- update_observers_ = update_observers_.AddObserver(
+ delegate_->AddFileUpdateObserver(
+ fileapi::kFileSystemTypeTemporary,
+ delegate_->quota_observer(),
+ delegate_->file_task_runner());
+ delegate_->AddFileAccessObserver(
+ fileapi::kFileSystemTypeTemporary,
+ delegate_->quota_observer(), NULL);
+
+ delegate_->AddFileUpdateObserver(
+ fileapi::kFileSystemTypePersistent,
delegate_->quota_observer(),
delegate_->file_task_runner());
- access_observers_ = access_observers_.AddObserver(
+ delegate_->AddFileAccessObserver(
+ fileapi::kFileSystemTypePersistent,
delegate_->quota_observer(), NULL);
}
@@ -106,16 +111,13 @@ FileSystemOperation* SandboxFileSystemBackend::CreateFileSystemOperation(
FileSystemContext* context,
base::PlatformFileError* error_code) const {
DCHECK(CanHandleType(url.type()));
+ DCHECK(error_code);
+
DCHECK(delegate_);
- if (!delegate_->IsAccessValid(url)) {
- *error_code = base::PLATFORM_FILE_ERROR_SECURITY;
+ scoped_ptr<FileSystemOperationContext> operation_context =
+ delegate_->CreateFileSystemOperationContext(url, context, error_code);
+ if (!operation_context)
return NULL;
- }
-
- scoped_ptr<FileSystemOperationContext> operation_context(
- new FileSystemOperationContext(context));
- operation_context->set_update_observers(update_observers_);
- operation_context->set_change_observers(change_observers_);
SpecialStoragePolicy* policy = delegate_->special_storage_policy();
if (policy && policy->IsStorageUnlimited(url.origin()))
@@ -134,11 +136,8 @@ SandboxFileSystemBackend::CreateFileStreamReader(
FileSystemContext* context) const {
DCHECK(CanHandleType(url.type()));
DCHECK(delegate_);
- if (!delegate_->IsAccessValid(url))
- return scoped_ptr<webkit_blob::FileStreamReader>();
- return scoped_ptr<webkit_blob::FileStreamReader>(
- new FileSystemFileStreamReader(
- context, url, offset, expected_modification_time));
+ return delegate_->CreateFileStreamReader(
+ url, offset, expected_modification_time, context);
}
scoped_ptr<fileapi::FileStreamWriter>
@@ -148,14 +147,11 @@ SandboxFileSystemBackend::CreateFileStreamWriter(
FileSystemContext* context) const {
DCHECK(CanHandleType(url.type()));
DCHECK(delegate_);
- if (!delegate_->IsAccessValid(url))
- return scoped_ptr<fileapi::FileStreamWriter>();
- return scoped_ptr<fileapi::FileStreamWriter>(
- new SandboxFileStreamWriter(context, url, offset, update_observers_));
+ return delegate_->CreateFileStreamWriter(url, offset, context, url.type());
}
FileSystemQuotaUtil* SandboxFileSystemBackend::GetQuotaUtil() {
- return this;
+ return delegate_;
}
SandboxFileSystemBackendDelegate::OriginEnumerator*
@@ -164,95 +160,4 @@ SandboxFileSystemBackend::CreateOriginEnumerator() {
return delegate_->CreateOriginEnumerator();
}
-base::PlatformFileError
-SandboxFileSystemBackend::DeleteOriginDataOnFileThread(
- FileSystemContext* file_system_context,
- QuotaManagerProxy* proxy,
- const GURL& origin_url,
- fileapi::FileSystemType type) {
- DCHECK(CanHandleType(type));
- DCHECK(delegate_);
- return delegate_->DeleteOriginDataOnFileThread(
- file_system_context, proxy, origin_url, type);
-}
-
-void SandboxFileSystemBackend::GetOriginsForTypeOnFileThread(
- fileapi::FileSystemType type, std::set<GURL>* origins) {
- DCHECK(CanHandleType(type));
- DCHECK(delegate_);
- delegate_->GetOriginsForTypeOnFileThread(type, origins);
- switch (type) {
- case kFileSystemTypeTemporary:
- UMA_HISTOGRAM_COUNTS(kTemporaryOriginsCountLabel, origins->size());
- break;
- case kFileSystemTypePersistent:
- UMA_HISTOGRAM_COUNTS(kPersistentOriginsCountLabel, origins->size());
- break;
- default:
- break;
- }
-}
-
-void SandboxFileSystemBackend::GetOriginsForHostOnFileThread(
- fileapi::FileSystemType type, const std::string& host,
- std::set<GURL>* origins) {
- DCHECK(CanHandleType(type));
- DCHECK(delegate_);
- delegate_->GetOriginsForHostOnFileThread(type, host, origins);
-}
-
-int64 SandboxFileSystemBackend::GetOriginUsageOnFileThread(
- FileSystemContext* file_system_context,
- const GURL& origin_url,
- fileapi::FileSystemType type) {
- DCHECK(CanHandleType(type));
- DCHECK(delegate_);
- return delegate_->GetOriginUsageOnFileThread(
- file_system_context, origin_url, type);
-}
-
-void SandboxFileSystemBackend::AddFileUpdateObserver(
- FileSystemType type,
- FileUpdateObserver* observer,
- base::SequencedTaskRunner* task_runner) {
- DCHECK(CanHandleType(type));
- UpdateObserverList* list = &update_observers_;
- *list = list->AddObserver(observer, task_runner);
-}
-
-void SandboxFileSystemBackend::AddFileChangeObserver(
- FileSystemType type,
- FileChangeObserver* observer,
- base::SequencedTaskRunner* task_runner) {
- DCHECK(CanHandleType(type));
- ChangeObserverList* list = &change_observers_;
- *list = list->AddObserver(observer, task_runner);
-}
-
-void SandboxFileSystemBackend::AddFileAccessObserver(
- FileSystemType type,
- FileAccessObserver* observer,
- base::SequencedTaskRunner* task_runner) {
- DCHECK(CanHandleType(type));
- access_observers_ = access_observers_.AddObserver(observer, task_runner);
-}
-
-const UpdateObserverList* SandboxFileSystemBackend::GetUpdateObservers(
- FileSystemType type) const {
- DCHECK(CanHandleType(type));
- return &update_observers_;
-}
-
-const ChangeObserverList* SandboxFileSystemBackend::GetChangeObservers(
- FileSystemType type) const {
- DCHECK(CanHandleType(type));
- return &change_observers_;
-}
-
-const AccessObserverList* SandboxFileSystemBackend::GetAccessObservers(
- FileSystemType type) const {
- DCHECK(CanHandleType(type));
- return &access_observers_;
-}
-
} // namespace fileapi