| Index: content/child/service_worker/service_worker_provider_context.h
|
| diff --git a/content/child/service_worker/service_worker_provider_context.h b/content/child/service_worker/service_worker_provider_context.h
|
| index ca623fbd846b5e7fa8e4f2dee7962b31d5fcd842..2040bcdbacc6e839339f294e8102e43770898831 100644
|
| --- a/content/child/service_worker/service_worker_provider_context.h
|
| +++ b/content/child/service_worker/service_worker_provider_context.h
|
| @@ -10,7 +10,6 @@
|
|
|
| #include "base/memory/ref_counted.h"
|
| #include "base/sequenced_task_runner_helpers.h"
|
| -#include "base/synchronization/lock.h"
|
| #include "content/common/service_worker/service_worker_types.h"
|
|
|
| namespace base {
|
| @@ -26,12 +25,26 @@ class ThreadSafeSender;
|
|
|
| // An instance of this class holds information related to Document/Worker.
|
| // Created and destructed on the main thread. Unless otherwise noted, all
|
| -// methods are called on the main thread.
|
| +// methods are called on the main thread. The lifetime of this class is equals
|
| +// to the corresponding ServiceWorkerNetworkProvider.
|
| +//
|
| +// The role of this class varies for controllees and controllers:
|
| +// - For controllees, this is used for keeping the associated registration and
|
| +// the controller alive to create controllee's ServiceWorkerContainer. The
|
| +// references to them are kept until OnDisassociateRegistration() is called
|
| +// or OnSetControllerServiceWorker() is called with an invalid worker info.
|
| +// - For controllers, this is used for keeping the associated registration and
|
| +// its versions alive to create controller's ServiceWorkerGlobalScope. The
|
| +// references to them are kept until OnDisassociateRegistration() is called.
|
| +//
|
| +// These operations are actually done in delegate classes owned by this class:
|
| +// ControlleeDelegate and ControllerDelegate.
|
| class ServiceWorkerProviderContext
|
| : public base::RefCountedThreadSafe<ServiceWorkerProviderContext,
|
| ServiceWorkerProviderContextDeleter> {
|
| public:
|
| - explicit ServiceWorkerProviderContext(int provider_id);
|
| + ServiceWorkerProviderContext(int provider_id,
|
| + ServiceWorkerProviderType provider_type);
|
|
|
| // Called from ServiceWorkerDispatcher.
|
| void OnAssociateRegistration(const ServiceWorkerRegistrationObjectInfo& info,
|
| @@ -39,21 +52,25 @@ class ServiceWorkerProviderContext
|
| void OnDisassociateRegistration();
|
| void OnSetControllerServiceWorker(const ServiceWorkerObjectInfo& info);
|
|
|
| + // Called on the worker thread. Used for initializing
|
| + // ServiceWorkerGlobalScope.
|
| + void GetAssociatedRegistration(ServiceWorkerRegistrationObjectInfo* info,
|
| + ServiceWorkerVersionAttributes* attrs);
|
| +
|
| int provider_id() const { return provider_id_; }
|
|
|
| ServiceWorkerHandleReference* controller();
|
|
|
| - // Called on the worker thread.
|
| - bool GetRegistrationInfoAndVersionAttributes(
|
| - ServiceWorkerRegistrationObjectInfo* info,
|
| - ServiceWorkerVersionAttributes* attrs);
|
| -
|
| private:
|
| friend class base::DeleteHelper<ServiceWorkerProviderContext>;
|
| friend class base::RefCountedThreadSafe<ServiceWorkerProviderContext,
|
| ServiceWorkerProviderContextDeleter>;
|
| friend struct ServiceWorkerProviderContextDeleter;
|
|
|
| + class Delegate;
|
| + class ControlleeDelegate;
|
| + class ControllerDelegate;
|
| +
|
| ~ServiceWorkerProviderContext();
|
| void DestructOnMainThread() const;
|
|
|
| @@ -61,17 +78,7 @@ class ServiceWorkerProviderContext
|
| scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner_;
|
| scoped_refptr<ThreadSafeSender> thread_safe_sender_;
|
|
|
| - // Protects (installing, waiting, active) worker and registration references.
|
| - base::Lock lock_;
|
| -
|
| - // Used on both the main thread and the worker thread.
|
| - scoped_ptr<ServiceWorkerHandleReference> installing_;
|
| - scoped_ptr<ServiceWorkerHandleReference> waiting_;
|
| - scoped_ptr<ServiceWorkerHandleReference> active_;
|
| - scoped_ptr<ServiceWorkerRegistrationHandleReference> registration_;
|
| -
|
| - // Used only on the main thread.
|
| - scoped_ptr<ServiceWorkerHandleReference> controller_;
|
| + scoped_ptr<Delegate> delegate_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ServiceWorkerProviderContext);
|
| };
|
|
|