Chromium Code Reviews| Index: content/browser/service_worker/service_worker_registration.h |
| diff --git a/content/browser/service_worker/service_worker_registration.h b/content/browser/service_worker/service_worker_registration.h |
| index df23dc3d61a55b913fa5ccd18ebc31219fe6581d..38e61a14a2e97057dbc2080bb36fe2cf4cfbf0cc 100644 |
| --- a/content/browser/service_worker/service_worker_registration.h |
| +++ b/content/browser/service_worker/service_worker_registration.h |
| @@ -12,6 +12,7 @@ |
| #include "base/memory/scoped_ptr.h" |
| #include "content/browser/service_worker/service_worker_version.h" |
| #include "content/common/content_export.h" |
| +#include "content/common/service_worker/service_worker_types.h" |
| #include "url/gurl.h" |
| namespace content { |
| @@ -35,6 +36,15 @@ class ServiceWorkerVersion; |
| class CONTENT_EXPORT ServiceWorkerRegistration |
| : NON_EXPORTED_BASE(public base::RefCounted<ServiceWorkerRegistration>) { |
| public: |
| + |
| + class Listener { |
| + public: |
| + virtual void OnVersionAttributesChanged( |
| + ServiceWorkerRegistration* registration, |
| + ChangedVersionAttributesMask changed_mask, |
| + const ServiceWorkerRegistrationInfo& info) = 0; |
| + }; |
| + |
| ServiceWorkerRegistration(const GURL& pattern, |
| const GURL& script_url, |
| int64 registration_id, |
| @@ -45,47 +55,54 @@ class CONTENT_EXPORT ServiceWorkerRegistration |
| const GURL& pattern() const { return pattern_; } |
| ServiceWorkerVersion* active_version() const { |
| - DCHECK(!is_shutdown_); |
| return active_version_.get(); |
| } |
| ServiceWorkerVersion* waiting_version() const { |
| - DCHECK(!is_shutdown_); |
| return waiting_version_.get(); |
| } |
| - void set_active_version(ServiceWorkerVersion* version) { |
| - DCHECK(!is_shutdown_); |
| - active_version_ = version; |
| + ServiceWorkerVersion* installing_version() const { |
| + return installing_version_.get(); |
| } |
| - void set_waiting_version(ServiceWorkerVersion* version) { |
| - DCHECK(!is_shutdown_); |
| - waiting_version_ = version; |
| - } |
| + void AddListener(Listener* listener); |
| + void RemoveListener(Listener* listener); |
| ServiceWorkerRegistrationInfo GetInfo(); |
| - // Returns the active version, if it is not null; otherwise, returns the |
| - // waiting version. |
| - ServiceWorkerVersion* GetNewestVersion(); |
| + // Sets the corresposding version attribute and resets the position (if any) |
|
falken
2014/07/02 05:42:12
"corresponding"
|
| + // left vacant (ie. by a waiting version being promoted). |
| + // Also notifies listeners via OnVersionAttributesChanged. |
| + void SetActiveVersion(ServiceWorkerVersion* version); |
| + void SetWaitingVersion(ServiceWorkerVersion* version); |
| + void SetInstallingVersion(ServiceWorkerVersion* version); |
| + |
| + // If version is the installing, waiting, active version of this |
| + // registation, the method will reset that field to NULL, and notify |
|
falken
2014/07/02 05:42:12
"waiting, or active"
"registration"
|
| + // listeners via OnVersionAttributesChanged. |
| + void UnsetVersion(ServiceWorkerVersion* version); |
| - // The final synchronous switchover after all events have been |
| - // fired, and the old "active version" is being shut down. |
| - void ActivateWaitingVersion(); |
| private: |
| ~ServiceWorkerRegistration(); |
| friend class base::RefCounted<ServiceWorkerRegistration>; |
| + void SetVersionInternal( |
| + ServiceWorkerVersion* version, |
| + scoped_refptr<ServiceWorkerVersion>* data_member, |
| + int change_flag); |
| + void UnsetVersionInternal( |
| + ServiceWorkerVersion* version, |
| + ChangedVersionAttributesMask* mask); |
| + |
| const GURL pattern_; |
| const GURL script_url_; |
| const int64 registration_id_; |
| - |
| scoped_refptr<ServiceWorkerVersion> active_version_; |
| scoped_refptr<ServiceWorkerVersion> waiting_version_; |
| - |
| - bool is_shutdown_; |
| + scoped_refptr<ServiceWorkerVersion> installing_version_; |
| + ObserverList<Listener> listeners_; |
| base::WeakPtr<ServiceWorkerContextCore> context_; |
| DISALLOW_COPY_AND_ASSIGN(ServiceWorkerRegistration); |