Chromium Code Reviews| 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(); |
| } |