| Index: content/browser/service_worker/service_worker_version.cc
|
| diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
|
| index e72bc88a66c8fa4c0c0fc0428b0c684a9fb9bc43..d2951d127d0e73eecf109b74c81ff50c4b60b424 100644
|
| --- a/content/browser/service_worker/service_worker_version.cc
|
| +++ b/content/browser/service_worker/service_worker_version.cc
|
| @@ -826,6 +826,9 @@ ServiceWorkerVersion::PendingRequest::~PendingRequest() {}
|
|
|
| void ServiceWorkerVersion::OnThreadStarted() {
|
| DCHECK_EQ(EmbeddedWorkerStatus::STARTING, running_status());
|
| + DCHECK(running_controller_provider_);
|
| + running_controller_provider_->SetReadyToSendMessagesToWorker(
|
| + embedded_worker()->thread_id());
|
| // Activate ping/pong now that JavaScript execution will start.
|
| ping_controller_->Activate();
|
| }
|
| @@ -835,6 +838,11 @@ void ServiceWorkerVersion::OnStarting() {
|
| observer.OnRunningStateChanged(this);
|
| }
|
|
|
| +void ServiceWorkerVersion::OnStartWorkerMessageSent() {
|
| + DCHECK(pending_controller_provider_);
|
| + context()->AddProviderHost(std::move(pending_controller_provider_));
|
| +}
|
| +
|
| void ServiceWorkerVersion::OnStarted() {
|
| DCHECK_EQ(EmbeddedWorkerStatus::RUNNING, running_status());
|
| RestartTick(&idle_time_);
|
| @@ -1427,12 +1435,18 @@ void ServiceWorkerVersion::StartWorkerInternal() {
|
|
|
| StartTimeoutTimer();
|
|
|
| + DCHECK(!pending_controller_provider_);
|
| + pending_controller_provider_ =
|
| + ServiceWorkerProviderHost::PreCreateForWorkerContext(this, context());
|
| + running_controller_provider_ = pending_controller_provider_->AsWeakPtr();
|
| +
|
| auto params = base::MakeUnique<EmbeddedWorkerStartParams>();
|
| params->service_worker_version_id = version_id_;
|
| params->scope = scope_;
|
| params->script_url = script_url_;
|
| params->is_installed = IsInstalled(status_);
|
| params->pause_after_download = pause_after_download_;
|
| + params->controller_provider = pending_controller_provider_.get();
|
|
|
| embedded_worker_->Start(
|
| std::move(params), mojo::MakeRequest(&event_dispatcher_),
|
|
|