| 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();
|
| }
|
|
|