Index: content/renderer/service_worker/service_worker_context_client.cc |
diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc |
index 2efc2fa6dfecf33e8565dfc1418b37d98699ceb8..05dd0fb88c82800040aac9b759f957a6c8acd908 100644 |
--- a/content/renderer/service_worker/service_worker_context_client.cc |
+++ b/content/renderer/service_worker/service_worker_context_client.cc |
@@ -32,7 +32,7 @@ |
#include "content/public/renderer/document_state.h" |
#include "content/renderer/devtools/devtools_agent.h" |
#include "content/renderer/render_thread_impl.h" |
-#include "content/renderer/service_worker/embedded_worker_dispatcher.h" |
+#include "content/renderer/service_worker/embedded_worker_impl.h" |
#include "content/renderer/service_worker/service_worker_type_util.h" |
#include "ipc/ipc_message.h" |
#include "ipc/ipc_message_macros.h" |
@@ -57,14 +57,6 @@ namespace { |
base::LazyInstance<base::ThreadLocalPointer<ServiceWorkerContextClient>>:: |
Leaky g_worker_client_tls = LAZY_INSTANCE_INITIALIZER; |
-void CallWorkerContextDestroyedOnMainThread(int embedded_worker_id) { |
- if (!RenderThreadImpl::current() || |
- !RenderThreadImpl::current()->embedded_worker_dispatcher()) |
- return; |
- RenderThreadImpl::current()->embedded_worker_dispatcher()-> |
- WorkerContextDestroyed(embedded_worker_id); |
-} |
- |
// We store an instance of this class in the "extra data" of the WebDataSource |
// and attach a ServiceWorkerNetworkProvider to it as base::UserData. |
// (see createServiceWorkerNetworkProvider). |
@@ -209,11 +201,13 @@ ServiceWorkerContextClient::ThreadSpecificInstance() { |
ServiceWorkerContextClient::ServiceWorkerContextClient( |
int embedded_worker_id, |
+ EmbeddedWorkerImpl* embedded_worker, |
int64 service_worker_version_id, |
const GURL& service_worker_scope, |
const GURL& script_url, |
int worker_devtools_agent_route_id) |
: embedded_worker_id_(embedded_worker_id), |
+ embedded_worker_(embedded_worker), |
service_worker_version_id_(service_worker_version_id), |
service_worker_scope_(service_worker_scope), |
script_url_(script_url), |
@@ -225,10 +219,8 @@ ServiceWorkerContextClient::ServiceWorkerContextClient( |
"ServiceWorkerContextClient::StartingWorkerContext", |
this); |
TRACE_EVENT_ASYNC_STEP_INTO0( |
- "ServiceWorker", |
- "ServiceWorkerContextClient::StartingWorkerContext", |
- this, |
- "PrepareWorker"); |
+ "ServiceWorker", "ServiceWorkerContextClient::StartingWorkerContext", |
+ this, "PrepareWorker"); |
} |
ServiceWorkerContextClient::~ServiceWorkerContextClient() {} |
@@ -324,9 +316,7 @@ void ServiceWorkerContextClient::workerContextFailedToStart() { |
DCHECK(!proxy_); |
Send(new EmbeddedWorkerHostMsg_WorkerScriptLoadFailed(embedded_worker_id_)); |
- |
- RenderThreadImpl::current()->embedded_worker_dispatcher()-> |
- WorkerContextDestroyed(embedded_worker_id_); |
+ embedded_worker_->WorkerContextDestroyed(); |
} |
void ServiceWorkerContextClient::workerContextStarted( |
@@ -389,13 +379,7 @@ void ServiceWorkerContextClient::willDestroyWorkerContext() { |
void ServiceWorkerContextClient::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_task_runner_->PostTask( |
- FROM_HERE, |
- base::Bind(&CallWorkerContextDestroyedOnMainThread, |
- embedded_worker_id_)); |
+ embedded_worker_->WorkerContextDestroyed(); |
} |
void ServiceWorkerContextClient::reportException( |