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 192be968692b86a8b7e28e4e62823dd9cc1015ae..26c8c0ef0485638c27e95403d1d0f34ee96383ff 100644 |
--- a/content/child/service_worker/service_worker_provider_context.h |
+++ b/content/child/service_worker/service_worker_provider_context.h |
@@ -13,7 +13,9 @@ |
#include "base/memory/ref_counted.h" |
#include "base/sequenced_task_runner_helpers.h" |
#include "content/common/content_export.h" |
+#include "content/common/service_worker/service_worker_provider_interfaces.mojom.h" |
#include "content/common/service_worker/service_worker_types.h" |
+#include "mojo/public/cpp/bindings/associated_binding.h" |
namespace base { |
class SingleThreadTaskRunner; |
@@ -44,11 +46,19 @@ class ThreadSafeSender; |
// ControlleeDelegate and ControllerDelegate. |
class CONTENT_EXPORT ServiceWorkerProviderContext |
: public base::RefCountedThreadSafe<ServiceWorkerProviderContext, |
- ServiceWorkerProviderContextDeleter> { |
+ ServiceWorkerProviderContextDeleter>, |
+ NON_EXPORTED_BASE(public mojom::ServiceWorkerProvider) { |
public: |
- ServiceWorkerProviderContext(int provider_id, |
- ServiceWorkerProviderType provider_type, |
- ThreadSafeSender* thread_safe_sender); |
+ // |provider_id| specifies which host will receive the message from this |
+ // provider. |provider_type| changes the behavior of this provider |
+ // context. |request| is an endpoint which is connected to |
+ // content::ServiceWorkerProviderHost which notifies changes of the |
+ // registration's and workers' status. |request| is bound with |binding_|. |
+ ServiceWorkerProviderContext( |
+ int provider_id, |
+ ServiceWorkerProviderType provider_type, |
+ mojom::ServiceWorkerProviderAssociatedRequest request, |
+ ThreadSafeSender* thread_safe_sender); |
// Called from ServiceWorkerDispatcher. |
void OnAssociateRegistration( |
@@ -84,12 +94,16 @@ class CONTENT_EXPORT ServiceWorkerProviderContext |
class ControlleeDelegate; |
class ControllerDelegate; |
- ~ServiceWorkerProviderContext(); |
+ ~ServiceWorkerProviderContext() override; |
void DestructOnMainThread() const; |
const int provider_id_; |
scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner_; |
scoped_refptr<ThreadSafeSender> thread_safe_sender_; |
+ // Mojo binding for the |request| passed to the constructor. This keeps the |
+ // connection to the content::ServiceWorkerProviderHost in the browser process |
+ // alive. |
+ mojo::AssociatedBinding<mojom::ServiceWorkerProvider> binding_; |
std::unique_ptr<Delegate> delegate_; |