Index: content/renderer/service_worker/embedded_worker_instance_client_impl.cc |
diff --git a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc |
index c1f90dc56f80c3f653e25ee9a8b4266360b814b0..10403f57824b7ef312960fc389528a7de7f6b7ca 100644 |
--- a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc |
+++ b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc |
@@ -35,11 +35,13 @@ void EmbeddedWorkerInstanceClientImpl::StopWorkerCompleted() { |
} |
void EmbeddedWorkerInstanceClientImpl::StartWorker( |
- mojom::EmbeddedWorkerStartWorkerParamsPtr params) { |
+ mojom::EmbeddedWorkerStartWorkerParamsPtr params, |
+ shell::mojom::InterfaceProviderPtr remote_interfaces) { |
TRACE_EVENT0("ServiceWorker", |
"EmbeddedWorkerInstanceClientImpl::StartWorker"); |
embedded_worker_id_ = params->embedded_worker_id; |
+ remote_interfaces_.Bind(std::move(remote_interfaces)); |
std::unique_ptr<EmbeddedWorkerDispatcher::WorkerWrapper> wrapper( |
new EmbeddedWorkerDispatcher::WorkerWrapper( |
@@ -88,9 +90,11 @@ EmbeddedWorkerInstanceClientImpl::EmbeddedWorkerInstanceClientImpl( |
mojo::InterfaceRequest<mojom::EmbeddedWorkerInstanceClient> request) |
: dispatcher_(dispatcher), |
binding_(this, std::move(request)), |
- temporal_self_(std::unique_ptr<EmbeddedWorkerInstanceClientImpl>(this)) { |
- binding_.set_connection_error_handler(base::Bind( |
- &EmbeddedWorkerInstanceClientImpl::OnError, base::Unretained(this))); |
+ temporal_self_(std::unique_ptr<EmbeddedWorkerInstanceClientImpl>(this)), |
+ main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()), |
+ weak_factory(this) { |
+ binding_.set_connection_error_handler( |
+ base::Bind(&EmbeddedWorkerInstanceClientImpl::OnError, AsWeakPtr())); |
} |
EmbeddedWorkerInstanceClientImpl::~EmbeddedWorkerInstanceClientImpl() {} |
@@ -100,4 +104,9 @@ void EmbeddedWorkerInstanceClientImpl::OnError() { |
temporal_self_.reset(); |
} |
+base::WeakPtr<EmbeddedWorkerInstanceClientImpl> |
+EmbeddedWorkerInstanceClientImpl::AsWeakPtr() { |
+ return weak_factory.GetWeakPtr(); |
+} |
+ |
} // namespace content |