Index: content/browser/service_worker/service_worker_version.h |
diff --git a/content/browser/service_worker/service_worker_version.h b/content/browser/service_worker/service_worker_version.h |
index 0d97f9455cc7baa774ed07eb3ddd173f10e61c21..9fb73aa608170f087b2c5c3ae9424ed9e5917ca1 100644 |
--- a/content/browser/service_worker/service_worker_version.h |
+++ b/content/browser/service_worker/service_worker_version.h |
@@ -342,6 +342,13 @@ class CONTENT_EXPORT ServiceWorkerVersion |
ActivateWaitingVersion); |
FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, IdleTimeout); |
FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, SetDevToolsAttached); |
+ FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, StaleUpdate_FreshWorker); |
+ FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, |
+ StaleUpdate_NonActiveWorker); |
+ FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, StaleUpdate_StartWorker); |
+ FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, StaleUpdate_RunningWorker); |
+ FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, |
+ StaleUpdate_DoNotDeferTimer); |
FRIEND_TEST_ALL_PREFIXES(ServiceWorkerWaitForeverInFetchTest, RequestTimeout); |
FRIEND_TEST_ALL_PREFIXES(ServiceWorkerFailToStartTest, Timeout); |
FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionBrowserTest, |
@@ -512,6 +519,14 @@ class CONTENT_EXPORT ServiceWorkerVersion |
ServiceWorkerStatusCode DeduceStartWorkerFailureReason( |
ServiceWorkerStatusCode default_code); |
+ // Sets |stale_time_| if this worker is stale, causing an update to eventually |
+ // occur once the worker stops or is running too long. |
+ void MarkIfStale(); |
+ |
+ void FoundRegistrationForUpdate( |
+ ServiceWorkerStatusCode status, |
+ const scoped_refptr<ServiceWorkerRegistration>& registration); |
+ |
const int64 version_id_; |
const int64 registration_id_; |
const GURL script_url_; |
@@ -550,6 +565,10 @@ class CONTENT_EXPORT ServiceWorkerVersion |
base::TimeTicks idle_time_; |
// Holds the time that the outstanding StartWorker() request started. |
base::TimeTicks start_time_; |
+ // Holds the time the worker was detected as stale and needs updating. We try |
+ // to update once the worker stops, but will also update if it stays alive too |
+ // long. |
+ base::TimeTicks stale_time_; |
// New requests are added to |requests_| along with their entry in a callback |
// map. The timeout timer periodically checks |requests_| for entries that |
@@ -560,6 +579,7 @@ class CONTENT_EXPORT ServiceWorkerVersion |
bool skip_waiting_ = false; |
bool skip_recording_startup_time_ = false; |
bool force_bypass_cache_for_scripts_ = false; |
+ bool is_update_scheduled_ = false; |
std::vector<int> pending_skip_waiting_requests_; |
scoped_ptr<net::HttpResponseInfo> main_script_http_info_; |