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 9b1dc4d9e3bcd77bb4785f6a358383239cf0a8bb..37bb74a94494f052ad8fc907c15f01e66a5404b9 100644 |
--- a/content/browser/service_worker/service_worker_version.h |
+++ b/content/browser/service_worker/service_worker_version.h |
@@ -248,11 +248,15 @@ class CONTENT_EXPORT ServiceWorkerVersion |
void Doom(); |
bool is_doomed() const { return is_doomed_; } |
+ // If |keep_alive_mode| is set to true we don't run stop-worker-timer. |
+ void SetKeepAliveMode(bool keep_alive); |
+ |
private: |
friend class base::RefCounted<ServiceWorkerVersion>; |
FRIEND_TEST_ALL_PREFIXES(ServiceWorkerControlleeRequestHandlerTest, |
ActivateWaitingVersion); |
FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, ScheduleStopWorker); |
+ FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, KeepAlive); |
FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, ListenerAvailability); |
typedef ServiceWorkerVersion self; |
typedef std::map<ServiceWorkerProviderHost*, int> ControlleeMap; |
@@ -304,6 +308,10 @@ class CONTENT_EXPORT ServiceWorkerVersion |
const std::vector<int>& sent_message_port_ids); |
void ScheduleStopWorker(); |
+ void CancelStopWorker(); |
+ void MaybeStopWorker(); |
+ bool HasInflightRequests() const; |
+ |
void DoomInternal(); |
const int64 version_id_; |
@@ -317,7 +325,8 @@ class CONTENT_EXPORT ServiceWorkerVersion |
std::vector<StatusCallback> stop_callbacks_; |
std::vector<base::Closure> status_change_callbacks_; |
- // Message callbacks. |
+ // Message callbacks. (Update HasInflightRequests() too when you update this |
+ // list.) |
IDMap<StatusCallback, IDMapOwnPointer> activate_callbacks_; |
IDMap<StatusCallback, IDMapOwnPointer> install_callbacks_; |
IDMap<FetchCallback, IDMapOwnPointer> fetch_callbacks_; |
@@ -334,6 +343,7 @@ class CONTENT_EXPORT ServiceWorkerVersion |
base::OneShotTimer<ServiceWorkerVersion> stop_worker_timer_; |
base::OneShotTimer<ServiceWorkerVersion> update_timer_; |
bool is_doomed_; |
+ bool keep_alive_mode_; |
base::WeakPtrFactory<ServiceWorkerVersion> weak_factory_; |