Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CONTENT_BROWSER_APPCACHE_APPCACHE_GROUP_H_ | 5 #ifndef CONTENT_BROWSER_APPCACHE_APPCACHE_GROUP_H_ |
| 6 #define CONTENT_BROWSER_APPCACHE_APPCACHE_GROUP_H_ | 6 #define CONTENT_BROWSER_APPCACHE_APPCACHE_GROUP_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 31 class HostObserver; | 31 class HostObserver; |
| 32 class MockAppCacheStorage; | 32 class MockAppCacheStorage; |
| 33 | 33 |
| 34 // Collection of application caches identified by the same manifest URL. | 34 // Collection of application caches identified by the same manifest URL. |
| 35 // A group exists as long as it is in use by a host or is being updated. | 35 // A group exists as long as it is in use by a host or is being updated. |
| 36 class CONTENT_EXPORT AppCacheGroup | 36 class CONTENT_EXPORT AppCacheGroup |
| 37 : public base::RefCounted<AppCacheGroup> { | 37 : public base::RefCounted<AppCacheGroup> { |
| 38 public: | 38 public: |
| 39 | 39 |
| 40 class CONTENT_EXPORT UpdateObserver { | 40 class CONTENT_EXPORT UpdateObserver { |
| 41 public: | 41 public: |
| 42 // Called just after an appcache update has completed. | 42 // Called just after an appcache update has completed. |
| 43 virtual void OnUpdateComplete(AppCacheGroup* group) = 0; | 43 virtual void OnUpdateComplete(AppCacheGroup* group) = 0; |
| 44 virtual ~UpdateObserver() {} | 44 virtual ~UpdateObserver() {} |
| 45 }; | 45 }; |
| 46 | 46 |
| 47 enum UpdateAppCacheStatus { | 47 enum UpdateAppCacheStatus { |
| 48 IDLE, | 48 IDLE, |
| 49 CHECKING, | 49 CHECKING, |
| 50 DOWNLOADING, | 50 DOWNLOADING, |
| 51 }; | 51 }; |
| 52 | 52 |
| 53 AppCacheGroup(AppCacheStorage* storage, const GURL& manifest_url, | 53 AppCacheGroup(AppCacheStorage* storage, const GURL& manifest_url, |
| 54 int64 group_id); | 54 int64 group_id); |
| 55 | 55 |
| 56 // Adds/removes an update observer, the AppCacheGroup does not take | 56 // Adds/removes an update observer, the AppCacheGroup does not take |
| 57 // ownership of the observer. | 57 // ownership of the observer. |
| 58 void AddUpdateObserver(UpdateObserver* observer); | 58 void AddUpdateObserver(UpdateObserver* observer); |
| 59 void RemoveUpdateObserver(UpdateObserver* observer); | 59 void RemoveUpdateObserver(UpdateObserver* observer); |
| 60 | 60 |
| 61 int64 group_id() const { return group_id_; } | 61 int64 group_id() const { return group_id_; } |
| 62 const GURL& manifest_url() const { return manifest_url_; } | 62 const GURL& manifest_url() const { return manifest_url_; } |
| 63 const base::Time& creation_time() const { return creation_time_; } | 63 base::Time creation_time() const { return creation_time_; } |
| 64 void set_creation_time(const base::Time& time) { creation_time_ = time; } | 64 void set_creation_time(base::Time time) { creation_time_ = time; } |
| 65 bool is_obsolete() const { return is_obsolete_; } | 65 bool is_obsolete() const { return is_obsolete_; } |
| 66 void set_obsolete(bool value) { is_obsolete_ = value; } | 66 void set_obsolete(bool value) { is_obsolete_ = value; } |
| 67 | |
| 68 bool is_being_deleted() const { return is_being_deleted_; } | 67 bool is_being_deleted() const { return is_being_deleted_; } |
| 69 void set_being_deleted(bool value) { is_being_deleted_ = value; } | 68 void set_being_deleted(bool value) { is_being_deleted_ = value; } |
| 69 base::Time last_full_update_check_time() const { | |
| 70 return last_full_update_check_time_; | |
| 71 } | |
| 72 void set_last_full_update_check_time(base::Time time) { | |
| 73 last_full_update_check_time_ = time; | |
| 74 } | |
| 75 base::Time first_evictable_error_time() const { | |
| 76 return first_evictable_error_time_; | |
| 77 } | |
| 78 void set_first_evictable_error_time(base::Time time) { | |
| 79 first_evictable_error_time_ = time; | |
| 80 } | |
| 70 | 81 |
| 71 AppCache* newest_complete_cache() const { return newest_complete_cache_; } | 82 AppCache* newest_complete_cache() const { return newest_complete_cache_; } |
| 72 | 83 |
| 73 void AddCache(AppCache* complete_cache); | 84 void AddCache(AppCache* complete_cache); |
| 74 void RemoveCache(AppCache* cache); | 85 void RemoveCache(AppCache* cache); |
| 75 bool HasCache() const { return newest_complete_cache_ != NULL; } | 86 bool HasCache() const { return newest_complete_cache_ != NULL; } |
| 76 | 87 |
| 77 void AddNewlyDeletableResponseIds(std::vector<int64>* response_ids); | 88 void AddNewlyDeletableResponseIds(std::vector<int64>* response_ids); |
| 78 | 89 |
| 79 UpdateAppCacheStatus update_status() const { return update_status_; } | 90 UpdateAppCacheStatus update_status() const { return update_status_; } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 128 void HostDestructionImminent(AppCacheHost* host); | 139 void HostDestructionImminent(AppCacheHost* host); |
| 129 | 140 |
| 130 const int64 group_id_; | 141 const int64 group_id_; |
| 131 const GURL manifest_url_; | 142 const GURL manifest_url_; |
| 132 base::Time creation_time_; | 143 base::Time creation_time_; |
| 133 UpdateAppCacheStatus update_status_; | 144 UpdateAppCacheStatus update_status_; |
| 134 bool is_obsolete_; | 145 bool is_obsolete_; |
| 135 bool is_being_deleted_; | 146 bool is_being_deleted_; |
| 136 std::vector<int64> newly_deletable_response_ids_; | 147 std::vector<int64> newly_deletable_response_ids_; |
| 137 | 148 |
| 149 // Most update checks respect the cache control headers of the manifest | |
| 150 // resource, but we bust the http cache for a "full" update check after 24 | |
|
palmer
2015/06/01 21:09:02
Nit: What does "bust" mean here? Invalidate?
michaeln
2015/06/19 21:38:19
as in cache-busting, i used the term "bypass" inst
| |
| 151 // hours since the last full check was successfully performed. | |
| 152 base::Time last_full_update_check_time_; | |
| 153 | |
| 154 // Groups that fail to update for a sufficiently long time are evicted. This | |
| 155 // value is reset after a successful update or update check. | |
| 156 base::Time first_evictable_error_time_; | |
| 157 | |
| 138 // Old complete app caches. | 158 // Old complete app caches. |
| 139 Caches old_caches_; | 159 Caches old_caches_; |
| 140 | 160 |
| 141 // Newest cache in this group to be complete, aka relevant cache. | 161 // Newest cache in this group to be complete, aka relevant cache. |
| 142 AppCache* newest_complete_cache_; | 162 AppCache* newest_complete_cache_; |
| 143 | 163 |
| 144 // Current update job for this group, if any. | 164 // Current update job for this group, if any. |
| 145 AppCacheUpdateJob* update_job_; | 165 AppCacheUpdateJob* update_job_; |
| 146 | 166 |
| 147 // Central storage object. | 167 // Central storage object. |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 164 FRIEND_TEST_ALL_PREFIXES(content::AppCacheGroupTest, QueueUpdate); | 184 FRIEND_TEST_ALL_PREFIXES(content::AppCacheGroupTest, QueueUpdate); |
| 165 FRIEND_TEST_ALL_PREFIXES(content::AppCacheUpdateJobTest, AlreadyChecking); | 185 FRIEND_TEST_ALL_PREFIXES(content::AppCacheUpdateJobTest, AlreadyChecking); |
| 166 FRIEND_TEST_ALL_PREFIXES(content::AppCacheUpdateJobTest, AlreadyDownloading); | 186 FRIEND_TEST_ALL_PREFIXES(content::AppCacheUpdateJobTest, AlreadyDownloading); |
| 167 | 187 |
| 168 DISALLOW_COPY_AND_ASSIGN(AppCacheGroup); | 188 DISALLOW_COPY_AND_ASSIGN(AppCacheGroup); |
| 169 }; | 189 }; |
| 170 | 190 |
| 171 } // namespace content | 191 } // namespace content |
| 172 | 192 |
| 173 #endif // CONTENT_BROWSER_APPCACHE_APPCACHE_GROUP_H_ | 193 #endif // CONTENT_BROWSER_APPCACHE_APPCACHE_GROUP_H_ |
| OLD | NEW |