| Index: content/browser/appcache/appcache_storage_impl.cc
|
| diff --git a/content/browser/appcache/appcache_storage_impl.cc b/content/browser/appcache/appcache_storage_impl.cc
|
| index 3653488f188485da6ad6a75064cfa7cd37bf362d..b1b5789b6acd731d39b12f1fe2f70b17707f69ed 100644
|
| --- a/content/browser/appcache/appcache_storage_impl.cc
|
| +++ b/content/browser/appcache/appcache_storage_impl.cc
|
| @@ -468,6 +468,10 @@ void AppCacheStorageImpl::StoreOrLoadTask::CreateCacheAndGroupFromRecords(
|
| storage_, group_record_.manifest_url,
|
| group_record_.group_id);
|
| group->get()->set_creation_time(group_record_.creation_time);
|
| + group->get()->set_last_full_update_check_time(
|
| + group_record_.last_full_update_check_time);
|
| + group->get()->set_first_evictable_error_time(
|
| + group_record_.first_evictable_error_time);
|
| group->get()->AddCache(cache->get());
|
|
|
| // TODO(michaeln): histogram is fishing for clues to crbug/95101
|
| @@ -630,6 +634,10 @@ AppCacheStorageImpl::StoreGroupAndCacheTask::StoreGroupAndCacheTask(
|
| group_record_.group_id = group->group_id();
|
| group_record_.manifest_url = group->manifest_url();
|
| group_record_.origin = group_record_.manifest_url.GetOrigin();
|
| + group_record_.last_full_update_check_time =
|
| + group->last_full_update_check_time();
|
| + group_record_.first_evictable_error_time =
|
| + group->first_evictable_error_time();
|
| newest_cache->ToDatabaseRecords(
|
| group,
|
| &cache_record_, &entry_records_,
|
| @@ -702,6 +710,11 @@ void AppCacheStorageImpl::StoreGroupAndCacheTask::Run() {
|
| database_->UpdateLastAccessTime(group_record_.group_id,
|
| base::Time::Now());
|
|
|
| + database_->UpdateEvictionTimes(
|
| + group_record_.group_id,
|
| + group_record_.last_full_update_check_time,
|
| + group_record_.first_evictable_error_time);
|
| +
|
| AppCacheDatabase::CacheRecord cache;
|
| if (database_->FindCacheForGroup(group_record_.group_id, &cache)) {
|
| // Get the set of response ids in the old cache.
|
| @@ -1353,6 +1366,39 @@ class AppCacheStorageImpl::CommitLastAccessTimesTask
|
| ~CommitLastAccessTimesTask() override {}
|
| };
|
|
|
| +// UpdateEvictionTimes -------
|
| +
|
| +class AppCacheStorageImpl::UpdateEvictionTimesTask
|
| + : public DatabaseTask {
|
| + public:
|
| + UpdateEvictionTimesTask(
|
| + AppCacheStorageImpl* storage, AppCacheGroup* group)
|
| + : DatabaseTask(storage), group_id_(group->group_id()),
|
| + last_full_update_check_time_(group->last_full_update_check_time()),
|
| + first_evictable_error_time_(group->first_evictable_error_time()) {
|
| + }
|
| +
|
| + // DatabaseTask:
|
| + void Run() override;
|
| +
|
| + protected:
|
| + ~UpdateEvictionTimesTask() override {}
|
| +
|
| + private:
|
| + int64 group_id_;
|
| + base::Time last_full_update_check_time_;
|
| + base::Time first_evictable_error_time_;
|
| +};
|
| +
|
| +void AppCacheStorageImpl::UpdateEvictionTimesTask::Run() {
|
| + tracked_objects::ScopedTracker tracking_profile(
|
| + FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| + "AppCacheStorageImpl::UpdateEvictionTimes"));
|
| + database_->UpdateEvictionTimes(group_id_,
|
| + last_full_update_check_time_,
|
| + first_evictable_error_time_);
|
| +}
|
| +
|
| // AppCacheStorageImpl ---------------------------------------------------
|
|
|
| AppCacheStorageImpl::AppCacheStorageImpl(AppCacheServiceImpl* service)
|
| @@ -1672,6 +1718,12 @@ void AppCacheStorageImpl::MakeGroupObsolete(AppCacheGroup* group,
|
| task->Schedule();
|
| }
|
|
|
| +void AppCacheStorageImpl::StoreEvictionTimes(AppCacheGroup* group) {
|
| + scoped_refptr<UpdateEvictionTimesTask> task(
|
| + new UpdateEvictionTimesTask(this, group));
|
| + task->Schedule();
|
| +}
|
| +
|
| AppCacheResponseReader* AppCacheStorageImpl::CreateResponseReader(
|
| const GURL& manifest_url, int64 group_id, int64 response_id) {
|
| return new AppCacheResponseReader(response_id, group_id, disk_cache());
|
|
|