summaryrefslogtreecommitdiffstats
path: root/webkit/quota
diff options
context:
space:
mode:
authordmikurube@chromium.org <dmikurube@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-17 09:15:49 +0000
committerdmikurube@chromium.org <dmikurube@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-17 09:15:49 +0000
commitc506b2ffc55ff26990d4b90aa0cfaa0cd70703c3 (patch)
tree3a4dc88d6d0b2dfa376858798efcddf3c106db20 /webkit/quota
parentfdf96b7c42e088d1585460f4f1a85f0d04b21941 (diff)
downloadchromium_src-c506b2ffc55ff26990d4b90aa0cfaa0cd70703c3.zip
chromium_src-c506b2ffc55ff26990d4b90aa0cfaa0cd70703c3.tar.gz
chromium_src-c506b2ffc55ff26990d4b90aa0cfaa0cd70703c3.tar.bz2
Add an interface QuotaEvictionHandler.
BUG=61676 TEST=none Review URL: http://codereview.chromium.org/7029009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85613 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/quota')
-rw-r--r--webkit/quota/quota_manager.cc40
-rw-r--r--webkit/quota/quota_manager.h37
2 files changed, 61 insertions, 16 deletions
diff --git a/webkit/quota/quota_manager.cc b/webkit/quota/quota_manager.cc
index 832d8e4..01f9c75 100644
--- a/webkit/quota/quota_manager.cc
+++ b/webkit/quota/quota_manager.cc
@@ -690,20 +690,6 @@ void QuotaManager::NotifyOriginNoLongerInUse(const GURL& origin) {
origins_in_use_.erase(origin);
}
-void QuotaManager::GetLRUOrigin(
- StorageType type,
- GetLRUOriginCallback* callback) {
- LazyInitialize();
- if (db_disabled_) {
- callback->Run(GURL());
- delete callback;
- return;
- }
- scoped_refptr<GetLRUOriginTask> task(new GetLRUOriginTask(
- this, database_.get(), db_thread_, type, origins_in_use_, callback));
- task->Start();
-}
-
UsageTracker* QuotaManager::GetUsageTracker(StorageType type) const {
switch (type) {
case kStorageTypeTemporary:
@@ -735,6 +721,32 @@ void QuotaManager::DeleteOriginFromDatabase(
task->Start();
}
+void QuotaManager::GetLRUOrigin(
+ StorageType type,
+ GetLRUOriginCallback* callback) {
+ LazyInitialize();
+ if (db_disabled_) {
+ callback->Run(GURL());
+ delete callback;
+ return;
+ }
+ scoped_refptr<GetLRUOriginTask> task(new GetLRUOriginTask(
+ this, database_.get(), db_thread_, type, origins_in_use_, callback));
+ task->Start();
+}
+
+void QuotaManager::EvictOriginData(
+ const GURL& origin,
+ StorageType type,
+ EvictOriginDataCallback* callback) {
+ // TODO(dmikurube): Implement it.
+}
+
+void QuotaManager::GetUsageAndQuotaForEviction(
+ GetUsageAndQuotaForEvictionCallback* callback) {
+ // TODO(dmikurube): Implement it.
+}
+
void QuotaManager::DeleteOnCorrectThread() const {
if (!io_thread_->BelongsToCurrentThread()) {
io_thread_->DeleteSoon(FROM_HERE, this);
diff --git a/webkit/quota/quota_manager.h b/webkit/quota/quota_manager.h
index 955cab5..e3375cc 100644
--- a/webkit/quota/quota_manager.h
+++ b/webkit/quota/quota_manager.h
@@ -34,10 +34,35 @@ class UsageTracker;
struct QuotaManagerDeleter;
class QuotaManagerProxy;
+// An interface called by QuotaTemporaryStorageEvictor.
+class QuotaEvictionHandler {
+ public:
+ typedef Callback1<GURL>::Type GetLRUOriginCallback;
+ typedef Callback1<QuotaStatusCode>::Type EvictOriginDataCallback;
+ typedef Callback4<QuotaStatusCode,
+ int64 /* usage */,
+ int64 /* quota */,
+ int64 /* physical_available */ >::Type
+ GetUsageAndQuotaForEvictionCallback;
+
+ virtual void GetLRUOrigin(
+ StorageType type,
+ GetLRUOriginCallback* callback) = 0;
+
+ virtual void EvictOriginData(
+ const GURL& origin,
+ StorageType type,
+ EvictOriginDataCallback* callback) = 0;
+
+ virtual void GetUsageAndQuotaForEviction(
+ GetUsageAndQuotaForEvictionCallback* callback) = 0;
+};
+
// The quota manager class. This class is instantiated per profile and
// held by the profile. With the exception of the constructor and the
// proxy() method, all methods should only be called on the IO thread.
class QuotaManager : public QuotaTaskObserver,
+ public QuotaEvictionHandler,
public base::RefCountedThreadSafe<
QuotaManager, QuotaManagerDeleter> {
public:
@@ -46,7 +71,6 @@ class QuotaManager : public QuotaTaskObserver,
int64 /* quota */>::Type GetUsageAndQuotaCallback;
typedef Callback2<QuotaStatusCode,
int64 /* granted_quota */>::Type RequestQuotaCallback;
- typedef Callback1<GURL>::Type GetLRUOriginCallback;
QuotaManager(bool is_incognito,
const FilePath& profile_path,
@@ -150,7 +174,16 @@ class QuotaManager : public QuotaTaskObserver,
// Methods for eviction logic.
void DeleteOriginFromDatabase(const GURL& origin, StorageType type);
- void GetLRUOrigin(StorageType type, GetLRUOriginCallback* callback);
+
+ virtual void GetLRUOrigin(
+ StorageType type,
+ GetLRUOriginCallback* callback) OVERRIDE;
+ virtual void EvictOriginData(
+ const GURL& origin,
+ StorageType type,
+ EvictOriginDataCallback* callback) OVERRIDE;
+ virtual void GetUsageAndQuotaForEviction(
+ GetUsageAndQuotaForEvictionCallback* callback) OVERRIDE;
void DeleteOnCorrectThread() const;