| Index: content/browser/devtools/embedded_worker_devtools_agent_host.cc
|
| diff --git a/content/browser/devtools/embedded_worker_devtools_agent_host.cc b/content/browser/devtools/embedded_worker_devtools_agent_host.cc
|
| index 9f604001134b61ba4a11c8e40974e723e8b516e5..315953d0ce6ad3acc703a3c55b0b333ee2d5b725 100644
|
| --- a/content/browser/devtools/embedded_worker_devtools_agent_host.cc
|
| +++ b/content/browser/devtools/embedded_worker_devtools_agent_host.cc
|
| @@ -7,12 +7,37 @@
|
| #include "content/browser/devtools/devtools_manager_impl.h"
|
| #include "content/browser/devtools/devtools_protocol.h"
|
| #include "content/browser/devtools/devtools_protocol_constants.h"
|
| +#include "content/browser/service_worker/service_worker_context_core.h"
|
| +#include "content/browser/service_worker/service_worker_version.h"
|
| +#include "content/browser/shared_worker/shared_worker_service_impl.h"
|
| #include "content/common/devtools_messages.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/render_process_host.h"
|
|
|
| namespace content {
|
|
|
| +namespace {
|
| +
|
| +void TerminateSharedWorkerOnIO(
|
| + EmbeddedWorkerDevToolsAgentHost::WorkerId worker_id) {
|
| + SharedWorkerServiceImpl::GetInstance()->TerminateWorker(
|
| + worker_id.first, worker_id.second);
|
| +}
|
| +
|
| +void StatusNoOp(ServiceWorkerStatusCode status) {
|
| +}
|
| +
|
| +void TerminateServiceWorkerOnIO(
|
| + base::WeakPtr<ServiceWorkerContextCore> context_weak,
|
| + int64 version_id) {
|
| + if (ServiceWorkerContextCore* context = context_weak.get()) {
|
| + if (ServiceWorkerVersion* version = context->GetLiveVersion(version_id))
|
| + version->StopWorker(base::Bind(&StatusNoOp));
|
| + }
|
| +}
|
| +
|
| +}
|
| +
|
| EmbeddedWorkerDevToolsAgentHost::EmbeddedWorkerDevToolsAgentHost(
|
| WorkerId worker_id,
|
| const SharedWorkerInstance& shared_worker)
|
| @@ -38,6 +63,30 @@ bool EmbeddedWorkerDevToolsAgentHost::IsWorker() const {
|
| return true;
|
| }
|
|
|
| +GURL EmbeddedWorkerDevToolsAgentHost::GetURL() {
|
| + if (shared_worker_)
|
| + return shared_worker_->url();
|
| + if (service_worker_)
|
| + return service_worker_->url();
|
| + return GURL();
|
| +}
|
| +
|
| +bool EmbeddedWorkerDevToolsAgentHost::Close() {
|
| + if (shared_worker_) {
|
| + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
|
| + base::Bind(&TerminateSharedWorkerOnIO, worker_id_));
|
| + return true;
|
| + }
|
| + if (service_worker_) {
|
| + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
|
| + base::Bind(&TerminateServiceWorkerOnIO,
|
| + service_worker_->context_weak(),
|
| + service_worker_->version_id()));
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| void EmbeddedWorkerDevToolsAgentHost::SendMessageToAgent(
|
| IPC::Message* message_raw) {
|
| scoped_ptr<IPC::Message> message(message_raw);
|
|
|