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()); |