Roll src/third_party/WebKit eac3800:0237a66 (svn 202606:202607)
[chromium-blink-merge.git] / content / browser / devtools / service_worker_devtools_agent_host.cc
blob5d65a22c69822fb2ef1dd2b420074f888484c763
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "content/browser/devtools/service_worker_devtools_agent_host.h"
7 #include "base/strings/stringprintf.h"
8 #include "content/browser/devtools/devtools_protocol_handler.h"
9 #include "content/browser/devtools/protocol/devtools_protocol_dispatcher.h"
10 #include "content/browser/devtools/service_worker_devtools_manager.h"
11 #include "content/browser/service_worker/service_worker_context_core.h"
12 #include "content/browser/service_worker/service_worker_version.h"
13 #include "content/public/browser/browser_thread.h"
14 #include "content/public/browser/render_process_host.h"
16 namespace content {
18 namespace {
20 void StatusNoOp(ServiceWorkerStatusCode status) {}
22 void TerminateServiceWorkerOnIO(
23 base::WeakPtr<ServiceWorkerContextCore> context_weak,
24 int64 version_id) {
25 if (ServiceWorkerContextCore* context = context_weak.get()) {
26 if (ServiceWorkerVersion* version = context->GetLiveVersion(version_id))
27 version->StopWorker(base::Bind(&StatusNoOp));
31 void UnregisterServiceWorkerOnIO(
32 base::WeakPtr<ServiceWorkerContextCore> context_weak,
33 int64 version_id) {
34 if (ServiceWorkerContextCore* context = context_weak.get()) {
35 if (ServiceWorkerVersion* version = context->GetLiveVersion(version_id)) {
36 version->StopWorker(base::Bind(&StatusNoOp));
37 context->UnregisterServiceWorker(
38 version->scope(), base::Bind(&StatusNoOp));
43 void SetDevToolsAttachedOnIO(
44 base::WeakPtr<ServiceWorkerContextCore> context_weak,
45 int64 version_id,
46 bool attached) {
47 if (ServiceWorkerContextCore* context = context_weak.get()) {
48 if (ServiceWorkerVersion* version = context->GetLiveVersion(version_id))
49 version->SetDevToolsAttached(attached);
53 } // namespace
55 ServiceWorkerDevToolsAgentHost::ServiceWorkerDevToolsAgentHost(
56 WorkerId worker_id,
57 const ServiceWorkerIdentifier& service_worker)
58 : WorkerDevToolsAgentHost(worker_id),
59 service_worker_(new ServiceWorkerIdentifier(service_worker)),
60 network_handler_(new devtools::network::NetworkHandler()) {
61 DevToolsProtocolDispatcher* dispatcher = protocol_handler()->dispatcher();
62 dispatcher->SetNetworkHandler(network_handler_.get());
65 DevToolsAgentHost::Type ServiceWorkerDevToolsAgentHost::GetType() {
66 return TYPE_SERVICE_WORKER;
69 std::string ServiceWorkerDevToolsAgentHost::GetTitle() {
70 if (RenderProcessHost* host = RenderProcessHost::FromID(worker_id().first)) {
71 return base::StringPrintf("Worker pid:%d",
72 base::GetProcId(host->GetHandle()));
74 return "";
77 GURL ServiceWorkerDevToolsAgentHost::GetURL() {
78 return service_worker_->url();
81 bool ServiceWorkerDevToolsAgentHost::Activate() {
82 return false;
85 bool ServiceWorkerDevToolsAgentHost::Close() {
86 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
87 base::Bind(&TerminateServiceWorkerOnIO,
88 service_worker_->context_weak(),
89 service_worker_->version_id()));
90 return true;
93 void ServiceWorkerDevToolsAgentHost::UnregisterWorker() {
94 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
95 base::Bind(&UnregisterServiceWorkerOnIO,
96 service_worker_->context_weak(),
97 service_worker_->version_id()));
100 void ServiceWorkerDevToolsAgentHost::OnAttachedStateChanged(bool attached) {
101 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
102 base::Bind(&SetDevToolsAttachedOnIO,
103 service_worker_->context_weak(),
104 service_worker_->version_id(),
105 attached));
108 int64 ServiceWorkerDevToolsAgentHost::service_worker_version_id() const {
109 return service_worker_->version_id();
112 bool ServiceWorkerDevToolsAgentHost::Matches(
113 const ServiceWorkerIdentifier& other) {
114 return service_worker_->Matches(other);
117 ServiceWorkerDevToolsAgentHost::~ServiceWorkerDevToolsAgentHost() {
118 ServiceWorkerDevToolsManager::GetInstance()->RemoveInspectedWorkerData(
119 worker_id());
122 } // namespace content