Index: webkit/quota/quota_manager.cc |
diff --git a/webkit/quota/quota_manager.cc b/webkit/quota/quota_manager.cc |
index 52cd4eb9ad59402515837214ec6a411e769b09db..f605f89e3c9ff2b84574e1faceeb03d4e205cc4c 100644 |
--- a/webkit/quota/quota_manager.cc |
+++ b/webkit/quota/quota_manager.cc |
@@ -347,7 +347,7 @@ QuotaManager::UsageAndQuotaDispatcherTask::Create( |
class QuotaManager::DatabaseTaskBase : public QuotaThreadTask { |
public: |
- DatabaseTaskBase(QuotaManager* manager) |
+ explicit DatabaseTaskBase(QuotaManager* manager) |
: QuotaThreadTask(manager, manager->db_thread_), |
manager_(manager), |
database_(manager->database_.get()), |
@@ -582,7 +582,7 @@ class QuotaManager::OriginDeletionDatabaseTask |
protected: |
virtual void RunOnTargetThread() OVERRIDE { |
- if (!database()->DeleteOriginLastAccessTime(origin_, type_)) { |
+ if (!database()->DeleteOriginInfo(origin_, type_)) { |
set_db_disabled(true); |
} |
} |
@@ -609,9 +609,8 @@ class QuotaManager::TemporaryOriginsRegistrationTask |
virtual void RunOnTargetThread() OVERRIDE { |
if (!database()->IsOriginDatabaseBootstrapped()) { |
// Register existing origins with 0 last time access. |
- if (!database()->RegisterOrigins(origins_, |
- kStorageTypeTemporary, |
- base::Time::FromInternalValue(0))) { |
+ if (!database()->RegisterInitialOriginInfo( |
+ origins_, kStorageTypeTemporary)) { |
set_db_disabled(true); |
} else { |
has_registered_origins_ = true; |
@@ -648,7 +647,7 @@ class QuotaManager::AvailableSpaceQueryTask : public QuotaThreadTask { |
} |
virtual void Aborted() OVERRIDE { |
- callback_->Run(kQuotaErrorAbort, space_); |
+ callback_->Run(kQuotaErrorAbort, -1); |
} |
virtual void Completed() OVERRIDE { |
@@ -688,6 +687,70 @@ class QuotaManager::OriginAccessRecordDatabaseTask |
base::Time accessed_time_; |
}; |
+class QuotaManager::OriginModifyRecordDatabaseTask |
michaeln
2011/07/01 00:17:39
naming nit: these names are awkward to me, too man
kinuko
2011/07/04 07:43:52
They are named like that in order to make them dis
|
+ : public QuotaManager::DatabaseTaskBase { |
+ public: |
+ OriginModifyRecordDatabaseTask( |
+ QuotaManager* manager, |
+ const GURL& origin, |
+ StorageType type, |
+ base::Time modified_time) |
+ : DatabaseTaskBase(manager), |
+ origin_(origin), |
+ type_(type), |
+ modified_time_(modified_time) {} |
+ |
+ protected: |
+ virtual void RunOnTargetThread() OVERRIDE { |
+ if (!database()->SetOriginLastModifiedTime( |
+ origin_, type_, modified_time_)) { |
+ set_db_disabled(true); |
+ } |
+ } |
+ virtual void DatabaseTaskCompleted() OVERRIDE {} |
+ |
+ private: |
+ GURL origin_; |
+ StorageType type_; |
+ base::Time modified_time_; |
+}; |
+ |
+class QuotaManager::OriginsModifiedSinceRetrieveTask |
+ : public QuotaManager::DatabaseTaskBase { |
+ public: |
+ OriginsModifiedSinceRetrieveTask( |
+ QuotaManager* manager, |
+ StorageType type, |
+ base::Time modified_since, |
+ GetOriginsCallback* callback) |
+ : DatabaseTaskBase(manager), |
+ type_(type), |
+ modified_since_(modified_since), |
+ callback_(callback) {} |
+ |
+ protected: |
+ virtual void RunOnTargetThread() OVERRIDE { |
+ if (!database()->GetOriginsModifiedSince( |
+ type_, &origins_, modified_since_)) { |
+ set_db_disabled(true); |
+ } |
+ } |
+ |
+ virtual void DatabaseTaskCompleted() OVERRIDE { |
+ callback_->Run(origins_); |
+ } |
+ |
+ virtual void Aborted() OVERRIDE { |
+ callback_->Run(std::set<GURL>()); |
+ } |
+ |
+ private: |
+ StorageType type_; |
+ base::Time modified_since_; |
+ std::set<GURL> origins_; |
+ scoped_ptr<GetOriginsCallback> callback_; |
+}; |
+ |
class QuotaManager::DumpQuotaTableTask |
: public QuotaManager::DatabaseTaskBase { |
private: |
@@ -713,7 +776,7 @@ class QuotaManager::DumpQuotaTableTask |
} |
virtual void Aborted() OVERRIDE { |
- callback_->Run(entries_); |
+ callback_->Run(TableEntries()); |
} |
virtual void DatabaseTaskCompleted() OVERRIDE { |
@@ -730,17 +793,17 @@ class QuotaManager::DumpQuotaTableTask |
TableEntries entries_; |
}; |
-class QuotaManager::DumpLastAccessTimeTableTask |
+class QuotaManager::DumpOriginInfoTableTask |
: public QuotaManager::DatabaseTaskBase { |
private: |
- typedef QuotaManager::DumpLastAccessTimeTableTask self_type; |
- typedef QuotaManager::DumpLastAccessTimeTableCallback Callback; |
- typedef QuotaManager::LastAccessTimeTableEntry TableEntry; |
- typedef QuotaManager::LastAccessTimeTableEntries TableEntries; |
- typedef QuotaDatabase::LastAccessTimeTableCallback TableCallback; |
+ typedef QuotaManager::DumpOriginInfoTableTask self_type; |
+ typedef QuotaManager::DumpOriginInfoTableCallback Callback; |
+ typedef QuotaManager::OriginInfoTableEntry TableEntry; |
+ typedef QuotaManager::OriginInfoTableEntries TableEntries; |
+ typedef QuotaDatabase::OriginInfoTableCallback TableCallback; |
public: |
- DumpLastAccessTimeTableTask( |
+ DumpOriginInfoTableTask( |
QuotaManager* manager, |
Callback* callback) |
: DatabaseTaskBase(manager), |
@@ -748,14 +811,14 @@ class QuotaManager::DumpLastAccessTimeTableTask |
} |
protected: |
virtual void RunOnTargetThread() OVERRIDE { |
- if (!database()->DumpLastAccessTimeTable( |
+ if (!database()->DumpOriginInfoTable( |
new TableCallback( |
base::Bind(&self_type::AppendEntry, this)))) |
set_db_disabled(true); |
} |
virtual void Aborted() OVERRIDE { |
- callback_->Run(entries_); |
+ callback_->Run(TableEntries()); |
} |
virtual void DatabaseTaskCompleted() OVERRIDE { |
@@ -939,6 +1002,15 @@ void QuotaManager::GetStatistics( |
} |
} |
+void QuotaManager::GetOriginsModifiedSince( |
+ StorageType type, |
+ base::Time modified_since, |
+ GetOriginsCallback* callback) { |
+ LazyInitialize(); |
+ make_scoped_refptr(new OriginsModifiedSinceRetrieveTask( |
+ this, type, modified_since, callback))->Start(); |
+} |
+ |
void QuotaManager::LazyInitialize() { |
DCHECK(io_thread_->BelongsToCurrentThread()); |
if (database_.get()) { |
@@ -977,8 +1049,8 @@ void QuotaManager::NotifyStorageAccessed( |
void QuotaManager::NotifyStorageModified( |
QuotaClient::ID client_id, |
const GURL& origin, StorageType type, int64 delta) { |
- LazyInitialize(); |
- GetUsageTracker(type)->UpdateUsageCache(client_id, origin, delta); |
+ NotifyStorageModifiedInternal(client_id, origin, type, delta, |
+ base::Time::Now()); |
} |
void QuotaManager::NotifyOriginInUse(const GURL& origin) { |
@@ -1037,18 +1109,29 @@ void QuotaManager::NotifyStorageAccessedInternal( |
if (db_disabled_) |
return; |
- scoped_refptr<OriginAccessRecordDatabaseTask> task( |
- new OriginAccessRecordDatabaseTask(this, origin, type, accessed_time)); |
- task->Start(); |
+ make_scoped_refptr(new OriginAccessRecordDatabaseTask( |
+ this, origin, type, accessed_time))->Start(); |
+} |
+ |
+void QuotaManager::NotifyStorageModifiedInternal( |
+ QuotaClient::ID client_id, |
+ const GURL& origin, |
+ StorageType type, |
+ int64 delta, |
+ base::Time modified_time) { |
+ LazyInitialize(); |
+ GetUsageTracker(type)->UpdateUsageCache(client_id, origin, delta); |
+ make_scoped_refptr(new OriginModifyRecordDatabaseTask( |
+ this, origin, type, modified_time))->Start(); |
} |
void QuotaManager::DumpQuotaTable(DumpQuotaTableCallback* callback) { |
make_scoped_refptr(new DumpQuotaTableTask(this, callback))->Start(); |
} |
-void QuotaManager::DumpLastAccessTimeTable( |
- DumpLastAccessTimeTableCallback* callback) { |
- make_scoped_refptr(new DumpLastAccessTimeTableTask(this, callback))->Start(); |
+void QuotaManager::DumpOriginInfoTable( |
+ DumpOriginInfoTableCallback* callback) { |
+ make_scoped_refptr(new DumpOriginInfoTableTask(this, callback))->Start(); |
} |