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..02a0b6e923c0d21825f9a30d31297683b92704ad 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( |
@@ -145,6 +142,8 @@ void EmbeddedWorkerContextClient::workerContextStarted( |
DCHECK_NE(0, WorkerTaskRunner::Instance()->CurrentWorkerId()); |
DCHECK(g_worker_client_tls.Pointer()->Get() == NULL); |
DCHECK(!script_context_); |
+ // g_worker_client_tls.Pointer()->Get() could return NULL if this context |
michaeln
2014/05/22 19:23:52
this comment seems out of place here, two lines up
kinuko
2014/05/23 02:47:48
Done.
|
+ // gets deleted before workerContextStarted() is called. |
g_worker_client_tls.Pointer()->Set(this); |
script_context_.reset(new ServiceWorkerScriptContext(this, proxy)); |
@@ -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( |