| 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(
|
|
|