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 f6540d42d4a141cb3914035128175b09b6327e50..b267dd392fca93f5b931f2ee763416dfff64bbd7 100644 |
--- a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc |
+++ b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc |
@@ -28,17 +28,8 @@ void EmbeddedWorkerInstanceClientImpl::Create( |
void EmbeddedWorkerInstanceClientImpl::StopWorkerCompleted() { |
DCHECK(embedded_worker_id_); |
- DCHECK(stop_callback_); |
TRACE_EVENT0("ServiceWorker", |
"EmbeddedWorkerInstanceClientImpl::StopWorkerCompleted"); |
- // TODO(falken): The signals to the browser should be in the order: |
- // (1) WorkerStopped (via stop_callback_) |
- // (2) ProviderDestroyed (via UnregisterWorker destroying |
- // WebEmbeddedWorkerImpl) |
- // But this ordering is currently not guaranteed since the Mojo pipes are |
- // different. https://crbug.com/676526 |
- stop_callback_.Run(); |
- stop_callback_.Reset(); |
dispatcher_->UnregisterWorker(embedded_worker_id_.value()); |
embedded_worker_id_.reset(); |
wrapper_ = nullptr; |
@@ -46,7 +37,8 @@ void EmbeddedWorkerInstanceClientImpl::StopWorkerCompleted() { |
void EmbeddedWorkerInstanceClientImpl::StartWorker( |
const EmbeddedWorkerStartParams& params, |
- mojom::ServiceWorkerEventDispatcherRequest dispatcher_request) { |
+ mojom::ServiceWorkerEventDispatcherRequest dispatcher_request, |
+ mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo instance_host) { |
DCHECK(ChildThreadImpl::current()); |
DCHECK(!wrapper_); |
DCHECK(!embedded_worker_id_); |
@@ -59,22 +51,19 @@ void EmbeddedWorkerInstanceClientImpl::StartWorker( |
params, |
base::MakeUnique<ServiceWorkerContextClient>( |
params.embedded_worker_id, params.service_worker_version_id, |
- params.scope, params.script_url, |
- std::move(dispatcher_request), std::move(temporal_self_))); |
+ params.scope, params.script_url, std::move(dispatcher_request), |
+ std::move(instance_host), std::move(temporal_self_))); |
wrapper_ = wrapper.get(); |
dispatcher_->RegisterWorker(params.embedded_worker_id, std::move(wrapper)); |
} |
-void EmbeddedWorkerInstanceClientImpl::StopWorker( |
- const StopWorkerCallback& callback) { |
+void EmbeddedWorkerInstanceClientImpl::StopWorker() { |
// StopWorker must be called after StartWorker is called. |
DCHECK(ChildThreadImpl::current()); |
DCHECK(wrapper_); |
DCHECK(embedded_worker_id_); |
- DCHECK(!stop_callback_); |
TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerInstanceClientImpl::StopWorker"); |
- stop_callback_ = callback; |
dispatcher_->RecordStopWorkerTimer(embedded_worker_id_.value()); |
wrapper_->worker()->terminateWorkerContext(); |
} |