summaryrefslogtreecommitdiffstats
path: root/webkit/browser
diff options
context:
space:
mode:
authornhiroki@chromium.org <nhiroki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-12 05:14:09 +0000
committernhiroki@chromium.org <nhiroki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-12 05:14:09 +0000
commit3c2f54649c146dccb73ded592f411c23147e294e (patch)
tree087e9d281cdd02bd56d1039ae02de854c261fbe3 /webkit/browser
parent3f13cf1bb818c511a30b01730b27064b6908d40a (diff)
downloadchromium_src-3c2f54649c146dccb73ded592f411c23147e294e.zip
chromium_src-3c2f54649c146dccb73ded592f411c23147e294e.tar.gz
chromium_src-3c2f54649c146dccb73ded592f411c23147e294e.tar.bz2
FileAPI: Add FileObserver related interfaces into FileSystemQuotaUtil
This change adds FileObserver related interfaces into FileSystemQuotaUtil and adapts existing functions in SandboxFileSystemBackend and TestFileSystemBackend to them. These functions are used only in sandbox filesystem and we are moving all of those kinds of functions to FileSystemQuotaUtil so that other backends don't have to take care of them. BUG=242422 TEST=content_unittests R=kinuko@chromium.org, tzik@chromium.org Review URL: https://codereview.chromium.org/18418009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@211332 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/browser')
-rw-r--r--webkit/browser/fileapi/file_system_quota_util.h20
-rw-r--r--webkit/browser/fileapi/sandbox_file_system_backend.cc98
-rw-r--r--webkit/browser/fileapi/sandbox_file_system_backend.h40
-rw-r--r--webkit/browser/fileapi/test_file_system_backend.cc80
-rw-r--r--webkit/browser/fileapi/test_file_system_backend.h2
5 files changed, 170 insertions, 70 deletions
diff --git a/webkit/browser/fileapi/file_system_quota_util.h b/webkit/browser/fileapi/file_system_quota_util.h
index b7bf5f4..be98936 100644
--- a/webkit/browser/fileapi/file_system_quota_util.h
+++ b/webkit/browser/fileapi/file_system_quota_util.h
@@ -11,6 +11,7 @@
#include "base/basictypes.h"
#include "base/platform_file.h"
#include "url/gurl.h"
+#include "webkit/browser/fileapi/task_runner_bound_observer_list.h"
#include "webkit/browser/webkit_storage_browser_export.h"
#include "webkit/common/fileapi/file_system_types.h"
@@ -59,6 +60,25 @@ class WEBKIT_STORAGE_BROWSER_EXPORT FileSystemQuotaUtil {
fileapi::FileSystemType type) = 0;
virtual void StickyInvalidateUsageCache(const GURL& origin,
fileapi::FileSystemType type) = 0;
+
+ virtual void AddFileUpdateObserver(
+ FileSystemType type,
+ FileUpdateObserver* observer,
+ base::SequencedTaskRunner* task_runner) = 0;
+ virtual void AddFileChangeObserver(
+ FileSystemType type,
+ FileChangeObserver* observer,
+ base::SequencedTaskRunner* task_runner) = 0;
+ virtual void AddFileAccessObserver(
+ FileSystemType type,
+ FileAccessObserver* observer,
+ base::SequencedTaskRunner* task_runner) = 0;
+ virtual const UpdateObserverList* GetUpdateObservers(
+ FileSystemType type) const = 0;
+ virtual const ChangeObserverList* GetChangeObservers(
+ FileSystemType type) const = 0;
+ virtual const AccessObserverList* GetAccessObservers(
+ FileSystemType type) const = 0;
};
} // namespace fileapi
diff --git a/webkit/browser/fileapi/sandbox_file_system_backend.cc b/webkit/browser/fileapi/sandbox_file_system_backend.cc
index a3afde7..b1256ff 100644
--- a/webkit/browser/fileapi/sandbox_file_system_backend.cc
+++ b/webkit/browser/fileapi/sandbox_file_system_backend.cc
@@ -454,6 +454,65 @@ void SandboxFileSystemBackend::StickyInvalidateUsageCache(
InvalidateUsageCache(origin, type);
}
+void SandboxFileSystemBackend::AddFileUpdateObserver(
+ FileSystemType type,
+ FileUpdateObserver* observer,
+ base::SequencedTaskRunner* task_runner) {
+ DCHECK(CanHandleType(type));
+ UpdateObserverList* list = &update_observers_;
+ if (type == kFileSystemTypeSyncable)
+ list = &syncable_update_observers_;
+ UpdateObserverList::Source observer_source = list->source();
+ observer_source.AddObserver(observer, task_runner);
+ *list = UpdateObserverList(observer_source);
+}
+
+void SandboxFileSystemBackend::AddFileChangeObserver(
+ FileSystemType type,
+ FileChangeObserver* observer,
+ base::SequencedTaskRunner* task_runner) {
+ DCHECK(CanHandleType(type));
+ ChangeObserverList* list = &change_observers_;
+ if (type == kFileSystemTypeSyncable)
+ list = &syncable_change_observers_;
+ ChangeObserverList::Source observer_source = list->source();
+ observer_source.AddObserver(observer, task_runner);
+ *list = ChangeObserverList(observer_source);
+}
+
+void SandboxFileSystemBackend::AddFileAccessObserver(
+ FileSystemType type,
+ FileAccessObserver* observer,
+ base::SequencedTaskRunner* task_runner) {
+ DCHECK(CanHandleType(type));
+ AccessObserverList* list = &access_observers_;
+ AccessObserverList::Source observer_source = list->source();
+ observer_source.AddObserver(observer, task_runner);
+ *list = AccessObserverList(observer_source);
+}
+
+const UpdateObserverList* SandboxFileSystemBackend::GetUpdateObservers(
+ FileSystemType type) const {
+ DCHECK(CanHandleType(type));
+ if (type == kFileSystemTypeSyncable)
+ return &syncable_update_observers_;
+ return &update_observers_;
+}
+
+const ChangeObserverList* SandboxFileSystemBackend::GetChangeObservers(
+ FileSystemType type) const {
+ DCHECK(CanHandleType(type));
+ if (type == kFileSystemTypeSyncable)
+ return &syncable_change_observers_;
+ return &change_observers_;
+}
+
+const AccessObserverList* SandboxFileSystemBackend::GetAccessObservers(
+ FileSystemType type) const {
+ DCHECK(CanHandleType(type));
+ return &access_observers_;
+}
+
void SandboxFileSystemBackend::CollectOpenFileSystemMetrics(
base::PlatformFileError error_code) {
base::Time now = base::Time::Now();
@@ -491,45 +550,6 @@ void SandboxFileSystemBackend::CollectOpenFileSystemMetrics(
#undef REPORT
}
-const UpdateObserverList* SandboxFileSystemBackend::GetUpdateObservers(
- FileSystemType type) const {
- DCHECK(CanHandleType(type));
- if (type == kFileSystemTypeSyncable)
- return &syncable_update_observers_;
- return &update_observers_;
-}
-
-const AccessObserverList* SandboxFileSystemBackend::GetAccessObservers(
- FileSystemType type) const {
- DCHECK(CanHandleType(type));
- return &access_observers_;
-}
-
-void SandboxFileSystemBackend::AddFileUpdateObserver(
- FileSystemType type,
- FileUpdateObserver* observer,
- base::SequencedTaskRunner* task_runner) {
- DCHECK(CanHandleType(type));
- UpdateObserverList* list = &update_observers_;
- if (type == kFileSystemTypeSyncable)
- list = &syncable_update_observers_;
- UpdateObserverList::Source observer_source = list->source();
- observer_source.AddObserver(observer, task_runner);
- *list = UpdateObserverList(observer_source);
-}
-
-void SandboxFileSystemBackend::AddFileChangeObserver(
- FileSystemType type,
- FileChangeObserver* observer,
- base::SequencedTaskRunner* task_runner) {
- ChangeObserverList* list = &change_observers_;
- if (type == kFileSystemTypeSyncable)
- list = &syncable_change_observers_;
- ChangeObserverList::Source observer_source = list->source();
- observer_source.AddObserver(observer, task_runner);
- *list = ChangeObserverList(observer_source);
-}
-
bool SandboxFileSystemBackend::IsAccessValid(
const FileSystemURL& url) const {
if (!IsAllowedScheme(url.origin()))
diff --git a/webkit/browser/fileapi/sandbox_file_system_backend.h b/webkit/browser/fileapi/sandbox_file_system_backend.h
index c0f81a3..8711f0b0 100644
--- a/webkit/browser/fileapi/sandbox_file_system_backend.h
+++ b/webkit/browser/fileapi/sandbox_file_system_backend.h
@@ -130,25 +130,33 @@ class WEBKIT_STORAGE_BROWSER_EXPORT SandboxFileSystemBackend
FileSystemContext* context,
const GURL& origin_url,
FileSystemType type) OVERRIDE;
-
- virtual void InvalidateUsageCache(const GURL& origin_url,
- FileSystemType type) OVERRIDE;
- virtual void StickyInvalidateUsageCache(const GURL& origin_url,
- FileSystemType type) OVERRIDE;
+ virtual void InvalidateUsageCache(
+ const GURL& origin_url,
+ FileSystemType type) OVERRIDE;
+ virtual void StickyInvalidateUsageCache(
+ const GURL& origin_url,
+ FileSystemType type) OVERRIDE;
+ virtual void AddFileUpdateObserver(
+ FileSystemType type,
+ FileUpdateObserver* observer,
+ base::SequencedTaskRunner* task_runner) OVERRIDE;
+ virtual void AddFileChangeObserver(
+ FileSystemType type,
+ FileChangeObserver* observer,
+ base::SequencedTaskRunner* task_runner) OVERRIDE;
+ virtual void AddFileAccessObserver(
+ FileSystemType type,
+ FileAccessObserver* observer,
+ base::SequencedTaskRunner* task_runner) OVERRIDE;
+ virtual const UpdateObserverList* GetUpdateObservers(
+ FileSystemType type) const OVERRIDE;
+ virtual const ChangeObserverList* GetChangeObservers(
+ FileSystemType type) const OVERRIDE;
+ virtual const AccessObserverList* GetAccessObservers(
+ FileSystemType type) const OVERRIDE;
void CollectOpenFileSystemMetrics(base::PlatformFileError error_code);
- // Returns observers for the given type.
- const UpdateObserverList* GetUpdateObservers(FileSystemType type) const;
- const AccessObserverList* GetAccessObservers(FileSystemType type) const;
-
- void AddFileUpdateObserver(FileSystemType type,
- FileUpdateObserver* observer,
- base::SequencedTaskRunner* task_runner);
- void AddFileChangeObserver(FileSystemType type,
- FileChangeObserver* observer,
- base::SequencedTaskRunner* task_runner);
-
// Performs API-specific validity checks on the given path |url|.
// Returns true if access to |url| is valid in this filesystem.
bool IsAccessValid(const FileSystemURL& url) const;
diff --git a/webkit/browser/fileapi/test_file_system_backend.cc b/webkit/browser/fileapi/test_file_system_backend.cc
index 17e7085..dbbeb4f 100644
--- a/webkit/browser/fileapi/test_file_system_backend.cc
+++ b/webkit/browser/fileapi/test_file_system_backend.cc
@@ -29,7 +29,13 @@ class TestFileSystemBackend::QuotaUtil
: public FileSystemQuotaUtil,
public FileUpdateObserver {
public:
- QuotaUtil() : usage_(0) {}
+ QuotaUtil(base::SequencedTaskRunner* task_runner)
+ : usage_(0),
+ task_runner_(task_runner) {
+ UpdateObserverList::Source source;
+ source.AddObserver(this, task_runner_.get());
+ update_observers_ = UpdateObserverList(source);
+ }
virtual ~QuotaUtil() {}
// FileSystemQuotaUtil overrides.
@@ -41,33 +47,77 @@ class TestFileSystemBackend::QuotaUtil
NOTREACHED();
return base::PLATFORM_FILE_OK;
}
+
virtual void GetOriginsForTypeOnFileThread(
FileSystemType type,
std::set<GURL>* origins) OVERRIDE {
NOTREACHED();
}
+
virtual void GetOriginsForHostOnFileThread(
FileSystemType type,
const std::string& host,
std::set<GURL>* origins) OVERRIDE {
NOTREACHED();
}
+
virtual int64 GetOriginUsageOnFileThread(
FileSystemContext* context,
const GURL& origin_url,
FileSystemType type) OVERRIDE {
return usage_;
}
+
virtual void InvalidateUsageCache(const GURL& origin_url,
FileSystemType type) OVERRIDE {
// Do nothing.
}
+
virtual void StickyInvalidateUsageCache(
const GURL& origin,
FileSystemType type) OVERRIDE {
// Do nothing.
}
+ virtual void AddFileUpdateObserver(
+ FileSystemType type,
+ FileUpdateObserver* observer,
+ base::SequencedTaskRunner* task_runner) OVERRIDE {
+ NOTIMPLEMENTED();
+ }
+
+ virtual void AddFileChangeObserver(
+ FileSystemType type,
+ FileChangeObserver* observer,
+ base::SequencedTaskRunner* task_runner) OVERRIDE {
+ ChangeObserverList::Source source = change_observers_.source();
+ source.AddObserver(observer, task_runner);
+ change_observers_ = ChangeObserverList(source);
+ }
+
+ virtual void AddFileAccessObserver(
+ FileSystemType type,
+ FileAccessObserver* observer,
+ base::SequencedTaskRunner* task_runner) OVERRIDE {
+ NOTIMPLEMENTED();
+ }
+
+ virtual const UpdateObserverList* GetUpdateObservers(
+ FileSystemType type) const OVERRIDE {
+ return &update_observers_;
+ }
+
+ virtual const ChangeObserverList* GetChangeObservers(
+ FileSystemType type) const OVERRIDE {
+ return &change_observers_;
+ }
+
+ virtual const AccessObserverList* GetAccessObservers(
+ FileSystemType type) const OVERRIDE {
+ NOTIMPLEMENTED();
+ return NULL;
+ }
+
// FileUpdateObserver overrides.
virtual void OnStartUpdate(const FileSystemURL& url) OVERRIDE {}
virtual void OnUpdate(const FileSystemURL& url, int64 delta) OVERRIDE {
@@ -75,21 +125,24 @@ class TestFileSystemBackend::QuotaUtil
}
virtual void OnEndUpdate(const FileSystemURL& url) OVERRIDE {}
+ base::SequencedTaskRunner* task_runner() { return task_runner_.get(); }
+
private:
int64 usage_;
+
+ scoped_refptr<base::SequencedTaskRunner> task_runner_;
+
+ UpdateObserverList update_observers_;
+ ChangeObserverList change_observers_;
};
TestFileSystemBackend::TestFileSystemBackend(
base::SequencedTaskRunner* task_runner,
const base::FilePath& base_path)
: base_path_(base_path),
- task_runner_(task_runner),
local_file_util_(new AsyncFileUtilAdapter(new LocalFileUtil())),
- quota_util_(new QuotaUtil),
+ quota_util_(new QuotaUtil(task_runner)),
require_copy_or_move_validator_(false) {
- UpdateObserverList::Source source;
- source.AddObserver(quota_util_.get(), task_runner_.get());
- update_observers_ = UpdateObserverList(source);
}
TestFileSystemBackend::~TestFileSystemBackend() {
@@ -147,8 +200,9 @@ FileSystemOperation* TestFileSystemBackend::CreateFileSystemOperation(
base::PlatformFileError* error_code) const {
scoped_ptr<FileSystemOperationContext> operation_context(
new FileSystemOperationContext(context));
- operation_context->set_update_observers(update_observers_);
- operation_context->set_change_observers(change_observers_);
+ operation_context->set_update_observers(*GetUpdateObservers(url.type()));
+ operation_context->set_change_observers(
+ *quota_util_->GetChangeObservers(url.type()));
operation_context->set_root_path(base_path_);
return new LocalFileSystemOperation(url, context, operation_context.Pass());
}
@@ -170,7 +224,8 @@ TestFileSystemBackend::CreateFileStreamWriter(
int64 offset,
FileSystemContext* context) const {
return scoped_ptr<fileapi::FileStreamWriter>(
- new SandboxFileStreamWriter(context, url, offset, update_observers_));
+ new SandboxFileStreamWriter(context, url, offset,
+ *GetUpdateObservers(url.type())));
}
FileSystemQuotaUtil* TestFileSystemBackend::GetQuotaUtil() {
@@ -179,14 +234,13 @@ FileSystemQuotaUtil* TestFileSystemBackend::GetQuotaUtil() {
const UpdateObserverList* TestFileSystemBackend::GetUpdateObservers(
FileSystemType type) const {
- return &update_observers_;
+ return quota_util_->GetUpdateObservers(type);
}
void TestFileSystemBackend::AddFileChangeObserver(
FileChangeObserver* observer) {
- ChangeObserverList::Source source = change_observers_.source();
- source.AddObserver(observer, task_runner_.get());
- change_observers_ = ChangeObserverList(source);
+ quota_util_->AddFileChangeObserver(
+ kFileSystemTypeTest, observer, quota_util_->task_runner());
}
} // namespace fileapi
diff --git a/webkit/browser/fileapi/test_file_system_backend.h b/webkit/browser/fileapi/test_file_system_backend.h
index 68a23b6..72642f3 100644
--- a/webkit/browser/fileapi/test_file_system_backend.h
+++ b/webkit/browser/fileapi/test_file_system_backend.h
@@ -82,8 +82,6 @@ class WEBKIT_STORAGE_BROWSER_EXPORT_PRIVATE TestFileSystemBackend
scoped_refptr<base::SequencedTaskRunner> task_runner_;
scoped_ptr<AsyncFileUtilAdapter> local_file_util_;
scoped_ptr<QuotaUtil> quota_util_;
- UpdateObserverList update_observers_;
- ChangeObserverList change_observers_;
bool require_copy_or_move_validator_;
scoped_ptr<CopyOrMoveFileValidatorFactory>