| Index: content/renderer/service_worker/embedded_worker_context_client.cc
|
| diff --git a/content/renderer/service_worker/embedded_worker_context_client.cc b/content/renderer/service_worker/embedded_worker_context_client.cc
|
| index 3ff7d0f796f06978a0a8a8ebb23258433a64fad9..ca198b063a9a028d2fe7d6a162bbc361bfb4ff3d 100644
|
| --- a/content/renderer/service_worker/embedded_worker_context_client.cc
|
| +++ b/content/renderer/service_worker/embedded_worker_context_client.cc
|
| @@ -97,9 +97,6 @@ EmbeddedWorkerContextClient::EmbeddedWorkerContextClient(
|
| }
|
|
|
| EmbeddedWorkerContextClient::~EmbeddedWorkerContextClient() {
|
| - // g_worker_client_tls.Pointer()->Get() could be NULL if this gets
|
| - // deleted before workerContextStarted() is called.
|
| - g_worker_client_tls.Pointer()->Set(NULL);
|
| }
|
|
|
| bool EmbeddedWorkerContextClient::OnMessageReceived(
|
| @@ -143,6 +140,8 @@ void EmbeddedWorkerContextClient::workerContextStarted(
|
| worker_task_runner_ = new WorkerThreadTaskRunner(
|
| WorkerTaskRunner::Instance()->CurrentWorkerId());
|
| DCHECK_NE(0, WorkerTaskRunner::Instance()->CurrentWorkerId());
|
| + // g_worker_client_tls.Pointer()->Get() could return NULL if this context
|
| + // gets deleted before workerContextStarted() is called.
|
| DCHECK(g_worker_client_tls.Pointer()->Get() == NULL);
|
| DCHECK(!script_context_);
|
| g_worker_client_tls.Pointer()->Set(this);
|
| @@ -164,9 +163,15 @@ void EmbeddedWorkerContextClient::willDestroyWorkerContext() {
|
| // worker_task_runner_->RunsTasksOnCurrentThread() returns false
|
| // (while we're still on the worker thread).
|
| script_context_.reset();
|
| +
|
| + // This also lets the message filter stop dispatching messages to
|
| + // this client.
|
| + g_worker_client_tls.Pointer()->Set(NULL);
|
| }
|
|
|
| void EmbeddedWorkerContextClient::workerContextDestroyed() {
|
| + DCHECK(g_worker_client_tls.Pointer()->Get() == NULL);
|
| +
|
| // Now we should be able to free the WebEmbeddedWorker container on the
|
| // main thread.
|
| main_thread_proxy_->PostTask(
|
|
|