| Index: webkit/quota/quota_manager.cc
|
| diff --git a/webkit/quota/quota_manager.cc b/webkit/quota/quota_manager.cc
|
| index 027df27e90fcb550d07a8602d4698fd5cf96fdf6..72722c4a2bca8ae7490ab25066e74ff8ec733f03 100644
|
| --- a/webkit/quota/quota_manager.cc
|
| +++ b/webkit/quota/quota_manager.cc
|
| @@ -485,10 +485,10 @@ class QuotaManager::InitializeTask : public QuotaManager::DatabaseTaskBase {
|
| int64 temporary_storage_quota_;
|
| };
|
|
|
| -class QuotaManager::TemporaryGlobalQuotaUpdateTask
|
| +class QuotaManager::UpdateTemporaryGlobalQuotaTask
|
| : public QuotaManager::DatabaseTaskBase {
|
| public:
|
| - TemporaryGlobalQuotaUpdateTask(
|
| + UpdateTemporaryGlobalQuotaTask(
|
| QuotaManager* manager,
|
| int64 new_quota,
|
| QuotaCallback* callback)
|
| @@ -519,10 +519,10 @@ class QuotaManager::TemporaryGlobalQuotaUpdateTask
|
| scoped_ptr<QuotaCallback> callback_;
|
| };
|
|
|
| -class QuotaManager::PersistentHostQuotaQueryTask
|
| +class QuotaManager::GetPersistentHostQuotaTask
|
| : public QuotaManager::DatabaseTaskBase {
|
| public:
|
| - PersistentHostQuotaQueryTask(
|
| + GetPersistentHostQuotaTask(
|
| QuotaManager* manager,
|
| const std::string& host,
|
| HostQuotaCallback* callback)
|
| @@ -546,10 +546,10 @@ class QuotaManager::PersistentHostQuotaQueryTask
|
| scoped_ptr<HostQuotaCallback> callback_;
|
| };
|
|
|
| -class QuotaManager::PersistentHostQuotaUpdateTask
|
| +class QuotaManager::UpdatePersistentHostQuotaTask
|
| : public QuotaManager::DatabaseTaskBase {
|
| public:
|
| - PersistentHostQuotaUpdateTask(
|
| + UpdatePersistentHostQuotaTask(
|
| QuotaManager* manager,
|
| const std::string& host,
|
| int new_quota,
|
| @@ -633,10 +633,10 @@ class QuotaManager::GetLRUOriginTask
|
| GURL url_;
|
| };
|
|
|
| -class QuotaManager::OriginDeletionDatabaseTask
|
| +class QuotaManager::DeleteOriginInfo
|
| : public QuotaManager::DatabaseTaskBase {
|
| public:
|
| - OriginDeletionDatabaseTask(
|
| + DeleteOriginInfo(
|
| QuotaManager* manager,
|
| const GURL& origin,
|
| StorageType type)
|
| @@ -646,7 +646,7 @@ class QuotaManager::OriginDeletionDatabaseTask
|
|
|
| protected:
|
| virtual void RunOnTargetThread() OVERRIDE {
|
| - if (!database()->DeleteOriginLastAccessTime(origin_, type_)) {
|
| + if (!database()->DeleteOriginInfo(origin_, type_)) {
|
| set_db_disabled(true);
|
| }
|
| }
|
| @@ -657,10 +657,10 @@ class QuotaManager::OriginDeletionDatabaseTask
|
| StorageType type_;
|
| };
|
|
|
| -class QuotaManager::TemporaryOriginsRegistrationTask
|
| +class QuotaManager::InitializeTemporaryOriginsInfoTask
|
| : public QuotaManager::DatabaseTaskBase {
|
| public:
|
| - TemporaryOriginsRegistrationTask(
|
| + InitializeTemporaryOriginsInfoTask(
|
| QuotaManager* manager,
|
| UsageTracker* temporary_usage_tracker)
|
| : DatabaseTaskBase(manager),
|
| @@ -673,9 +673,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;
|
| @@ -712,7 +711,7 @@ class QuotaManager::AvailableSpaceQueryTask : public QuotaThreadTask {
|
| }
|
|
|
| virtual void Aborted() OVERRIDE {
|
| - callback_->Run(kQuotaErrorAbort, space_);
|
| + callback_->Run(kQuotaErrorAbort, -1);
|
| }
|
|
|
| virtual void Completed() OVERRIDE {
|
| @@ -725,10 +724,10 @@ class QuotaManager::AvailableSpaceQueryTask : public QuotaThreadTask {
|
| scoped_ptr<AvailableSpaceCallback> callback_;
|
| };
|
|
|
| -class QuotaManager::OriginAccessRecordDatabaseTask
|
| +class QuotaManager::UpdateAccesTimeTask
|
| : public QuotaManager::DatabaseTaskBase {
|
| public:
|
| - OriginAccessRecordDatabaseTask(
|
| + UpdateAccesTimeTask(
|
| QuotaManager* manager,
|
| const GURL& origin,
|
| StorageType type,
|
| @@ -752,6 +751,70 @@ class QuotaManager::OriginAccessRecordDatabaseTask
|
| base::Time accessed_time_;
|
| };
|
|
|
| +class QuotaManager::UpdateModifiedTimeTask
|
| + : public QuotaManager::DatabaseTaskBase {
|
| + public:
|
| + UpdateModifiedTimeTask(
|
| + 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::GetModifiedSinceTask
|
| + : public QuotaManager::DatabaseTaskBase {
|
| + public:
|
| + GetModifiedSinceTask(
|
| + 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:
|
| @@ -777,7 +840,7 @@ class QuotaManager::DumpQuotaTableTask
|
| }
|
|
|
| virtual void Aborted() OVERRIDE {
|
| - callback_->Run(entries_);
|
| + callback_->Run(TableEntries());
|
| }
|
|
|
| virtual void DatabaseTaskCompleted() OVERRIDE {
|
| @@ -794,17 +857,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),
|
| @@ -812,14 +875,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 {
|
| @@ -924,8 +987,8 @@ void QuotaManager::SetTemporaryGlobalQuota(int64 new_quota,
|
| }
|
|
|
| if (!db_disabled_) {
|
| - scoped_refptr<TemporaryGlobalQuotaUpdateTask> task(
|
| - new TemporaryGlobalQuotaUpdateTask(this, new_quota, callback));
|
| + scoped_refptr<UpdateTemporaryGlobalQuotaTask> task(
|
| + new UpdateTemporaryGlobalQuotaTask(this, new_quota, callback));
|
| task->Start();
|
| } else {
|
| callback->Run(kQuotaErrorInvalidAccess,
|
| @@ -945,8 +1008,8 @@ void QuotaManager::GetPersistentHostQuota(const std::string& host,
|
| callback->Run(kQuotaStatusOk, host, kStorageTypePersistent, 0);
|
| return;
|
| }
|
| - scoped_refptr<PersistentHostQuotaQueryTask> task(
|
| - new PersistentHostQuotaQueryTask(this, host, callback.release()));
|
| + scoped_refptr<GetPersistentHostQuotaTask> task(
|
| + new GetPersistentHostQuotaTask(this, host, callback.release()));
|
| task->Start();
|
| }
|
|
|
| @@ -967,8 +1030,8 @@ void QuotaManager::SetPersistentHostQuota(const std::string& host,
|
| }
|
|
|
| if (!db_disabled_) {
|
| - scoped_refptr<PersistentHostQuotaUpdateTask> task(
|
| - new PersistentHostQuotaUpdateTask(
|
| + scoped_refptr<UpdatePersistentHostQuotaTask> task(
|
| + new UpdatePersistentHostQuotaTask(
|
| this, host, new_quota, callback.release()));
|
| task->Start();
|
| } else {
|
| @@ -1003,6 +1066,15 @@ void QuotaManager::GetStatistics(
|
| }
|
| }
|
|
|
| +void QuotaManager::GetOriginsModifiedSince(
|
| + StorageType type,
|
| + base::Time modified_since,
|
| + GetOriginsCallback* callback) {
|
| + LazyInitialize();
|
| + make_scoped_refptr(new GetModifiedSinceTask(
|
| + this, type, modified_since, callback))->Start();
|
| +}
|
| +
|
| void QuotaManager::LazyInitialize() {
|
| DCHECK(io_thread_->BelongsToCurrentThread());
|
| if (database_.get()) {
|
| @@ -1041,8 +1113,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) {
|
| @@ -1116,18 +1188,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 UpdateAccesTimeTask(
|
| + 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 UpdateModifiedTimeTask(
|
| + 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();
|
| }
|
|
|
|
|
| @@ -1136,8 +1219,8 @@ void QuotaManager::DeleteOriginFromDatabase(
|
| LazyInitialize();
|
| if (db_disabled_)
|
| return;
|
| - scoped_refptr<OriginDeletionDatabaseTask> task =
|
| - new OriginDeletionDatabaseTask(this, origin, type);
|
| + scoped_refptr<DeleteOriginInfo> task =
|
| + new DeleteOriginInfo(this, origin, type);
|
| task->Start();
|
| }
|
|
|
| @@ -1273,8 +1356,8 @@ void QuotaManager::DidRunInitialGetTemporaryGlobalUsage(
|
| DCHECK_EQ(type, kStorageTypeTemporary);
|
| // This will call the StartEviction() when initial origin registration
|
| // is completed.
|
| - scoped_refptr<TemporaryOriginsRegistrationTask> task(
|
| - new TemporaryOriginsRegistrationTask(
|
| + scoped_refptr<InitializeTemporaryOriginsInfoTask> task(
|
| + new InitializeTemporaryOriginsInfoTask(
|
| this, temporary_usage_tracker_.get()));
|
| task->Start();
|
| }
|
|
|