| Index: content/browser/service_worker/embedded_worker_instance.cc
|
| diff --git a/content/browser/service_worker/embedded_worker_instance.cc b/content/browser/service_worker/embedded_worker_instance.cc
|
| index 338d49063a61a55fc58f070dc6752c8658b6b77d..8f6593fa1b13fcaf1802a2f9757663d2fe3b1d97 100644
|
| --- a/content/browser/service_worker/embedded_worker_instance.cc
|
| +++ b/content/browser/service_worker/embedded_worker_instance.cc
|
| @@ -375,7 +375,7 @@ class EmbeddedWorkerInstance::StartTask {
|
| params->wait_for_debugger = wait_for_debugger;
|
|
|
| if (ServiceWorkerUtils::IsMojoForServiceWorkerEnabled())
|
| - instance_->SendMojoStartWorker(std::move(params));
|
| + SendMojoStartWorker(std::move(params));
|
| else
|
| SendStartWorker(std::move(params));
|
| }
|
| @@ -400,6 +400,18 @@ class EmbeddedWorkerInstance::StartTask {
|
| // is evaluated.
|
| }
|
|
|
| + void SendMojoStartWorker(std::unique_ptr<EmbeddedWorkerStartParams> params) {
|
| + ServiceWorkerStatusCode status =
|
| + instance_->SendMojoStartWorker(std::move(params));
|
| + if (status != SERVICE_WORKER_OK) {
|
| + StatusCallback callback = start_callback_;
|
| + start_callback_.Reset();
|
| + instance_->OnStartFailed(callback, status);
|
| + // |this| may be destroyed.
|
| + return;
|
| + }
|
| + }
|
| +
|
| // |instance_| must outlive |this|.
|
| EmbeddedWorkerInstance* instance_;
|
|
|
| @@ -601,13 +613,16 @@ void EmbeddedWorkerInstance::OnRegisteredToDevToolsManager(
|
| observer.OnRegisteredToDevToolsManager();
|
| }
|
|
|
| -void EmbeddedWorkerInstance::SendMojoStartWorker(
|
| +ServiceWorkerStatusCode EmbeddedWorkerInstance::SendMojoStartWorker(
|
| std::unique_ptr<EmbeddedWorkerStartParams> params) {
|
| + if (!context_)
|
| + return SERVICE_WORKER_ERROR_ABORT;
|
| client_->StartWorker(*params);
|
| registry_->BindWorkerToProcess(process_id(), embedded_worker_id());
|
| TRACE_EVENT_ASYNC_STEP_PAST1("ServiceWorker", "EmbeddedWorkerInstance::Start",
|
| this, "SendStartWorker", "Status", "mojo");
|
| OnStartWorkerMessageSent();
|
| + return SERVICE_WORKER_OK;
|
| }
|
|
|
| void EmbeddedWorkerInstance::OnStartWorkerMessageSent() {
|
|
|