OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/devtools/embedded_worker_devtools_agent_host.h" | 5 #include "content/browser/devtools/embedded_worker_devtools_agent_host.h" |
6 | 6 |
| 7 #include "base/strings/utf_string_conversions.h" |
7 #include "content/browser/devtools/devtools_manager_impl.h" | 8 #include "content/browser/devtools/devtools_manager_impl.h" |
8 #include "content/browser/devtools/devtools_protocol.h" | 9 #include "content/browser/devtools/devtools_protocol.h" |
9 #include "content/browser/devtools/devtools_protocol_constants.h" | 10 #include "content/browser/devtools/devtools_protocol_constants.h" |
10 #include "content/browser/service_worker/service_worker_context_core.h" | 11 #include "content/browser/service_worker/service_worker_context_core.h" |
11 #include "content/browser/service_worker/service_worker_version.h" | 12 #include "content/browser/service_worker/service_worker_version.h" |
12 #include "content/browser/shared_worker/shared_worker_service_impl.h" | 13 #include "content/browser/shared_worker/shared_worker_service_impl.h" |
13 #include "content/common/devtools_messages.h" | 14 #include "content/common/devtools_messages.h" |
14 #include "content/public/browser/browser_thread.h" | 15 #include "content/public/browser/browser_thread.h" |
15 #include "content/public/browser/render_process_host.h" | 16 #include "content/public/browser/render_process_host.h" |
16 | 17 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 worker_id_(worker_id) { | 57 worker_id_(worker_id) { |
57 if (debug_service_worker_on_start) | 58 if (debug_service_worker_on_start) |
58 state_ = WORKER_PAUSED_FOR_DEBUG_ON_START; | 59 state_ = WORKER_PAUSED_FOR_DEBUG_ON_START; |
59 WorkerCreated(); | 60 WorkerCreated(); |
60 } | 61 } |
61 | 62 |
62 bool EmbeddedWorkerDevToolsAgentHost::IsWorker() const { | 63 bool EmbeddedWorkerDevToolsAgentHost::IsWorker() const { |
63 return true; | 64 return true; |
64 } | 65 } |
65 | 66 |
| 67 std::string EmbeddedWorkerDevToolsAgentHost::GetType() { |
| 68 return shared_worker_ ? kTypeWorker : kTypeServiceWorker; |
| 69 } |
| 70 |
| 71 std::string EmbeddedWorkerDevToolsAgentHost::GetTitle() { |
| 72 return shared_worker_ ? base::UTF16ToUTF8(shared_worker_->name()) : ""; |
| 73 } |
| 74 |
66 GURL EmbeddedWorkerDevToolsAgentHost::GetURL() { | 75 GURL EmbeddedWorkerDevToolsAgentHost::GetURL() { |
67 if (shared_worker_) | 76 if (shared_worker_) |
68 return shared_worker_->url(); | 77 return shared_worker_->url(); |
69 if (service_worker_) | 78 if (service_worker_) |
70 return service_worker_->url(); | 79 return service_worker_->url(); |
71 return GURL(); | 80 return GURL(); |
72 } | 81 } |
73 | 82 |
| 83 bool EmbeddedWorkerDevToolsAgentHost::Activate() { |
| 84 return false; |
| 85 } |
| 86 |
74 bool EmbeddedWorkerDevToolsAgentHost::Close() { | 87 bool EmbeddedWorkerDevToolsAgentHost::Close() { |
75 if (shared_worker_) { | 88 if (shared_worker_) { |
76 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 89 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
77 base::Bind(&TerminateSharedWorkerOnIO, worker_id_)); | 90 base::Bind(&TerminateSharedWorkerOnIO, worker_id_)); |
78 return true; | 91 return true; |
79 } | 92 } |
80 if (service_worker_) { | 93 if (service_worker_) { |
81 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 94 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
82 base::Bind(&TerminateServiceWorkerOnIO, | 95 base::Bind(&TerminateServiceWorkerOnIO, |
83 service_worker_->context_weak(), | 96 service_worker_->context_weak(), |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 | 163 |
151 void EmbeddedWorkerDevToolsAgentHost::WorkerDestroyed() { | 164 void EmbeddedWorkerDevToolsAgentHost::WorkerDestroyed() { |
152 DCHECK_NE(WORKER_TERMINATED, state_); | 165 DCHECK_NE(WORKER_TERMINATED, state_); |
153 if (state_ == WORKER_INSPECTED) { | 166 if (state_ == WORKER_INSPECTED) { |
154 DCHECK(IsAttached()); | 167 DCHECK(IsAttached()); |
155 // Client host is debugging this worker agent host. | 168 // Client host is debugging this worker agent host. |
156 std::string notification = | 169 std::string notification = |
157 DevToolsProtocol::CreateNotification( | 170 DevToolsProtocol::CreateNotification( |
158 devtools::Worker::disconnectedFromWorker::kName, NULL)->Serialize(); | 171 devtools::Worker::disconnectedFromWorker::kName, NULL)->Serialize(); |
159 SendMessageToClient(notification); | 172 SendMessageToClient(notification); |
| 173 HostClosed(); |
160 DetachFromWorker(); | 174 DetachFromWorker(); |
161 } | 175 } |
162 state_ = WORKER_TERMINATED; | 176 state_ = WORKER_TERMINATED; |
163 Release(); // Balanced in WorkerCreated() | 177 Release(); // Balanced in WorkerCreated() |
164 } | 178 } |
165 | 179 |
166 bool EmbeddedWorkerDevToolsAgentHost::Matches( | 180 bool EmbeddedWorkerDevToolsAgentHost::Matches( |
167 const SharedWorkerInstance& other) { | 181 const SharedWorkerInstance& other) { |
168 return shared_worker_ && shared_worker_->Matches(other); | 182 return shared_worker_ && shared_worker_->Matches(other); |
169 } | 183 } |
170 | 184 |
171 bool EmbeddedWorkerDevToolsAgentHost::Matches( | 185 bool EmbeddedWorkerDevToolsAgentHost::Matches( |
172 const ServiceWorkerIdentifier& other) { | 186 const ServiceWorkerIdentifier& other) { |
173 return service_worker_ && service_worker_->Matches(other); | 187 return service_worker_ && service_worker_->Matches(other); |
174 } | 188 } |
175 | 189 |
| 190 bool EmbeddedWorkerDevToolsAgentHost::IsAlive() { |
| 191 return state_ != WORKER_TERMINATED; |
| 192 } |
| 193 |
176 EmbeddedWorkerDevToolsAgentHost::~EmbeddedWorkerDevToolsAgentHost() { | 194 EmbeddedWorkerDevToolsAgentHost::~EmbeddedWorkerDevToolsAgentHost() { |
177 DCHECK_EQ(WORKER_TERMINATED, state_); | 195 DCHECK_EQ(WORKER_TERMINATED, state_); |
178 EmbeddedWorkerDevToolsManager::GetInstance()->RemoveInspectedWorkerData( | 196 EmbeddedWorkerDevToolsManager::GetInstance()->RemoveInspectedWorkerData( |
179 worker_id_); | 197 worker_id_); |
180 } | 198 } |
181 | 199 |
182 void EmbeddedWorkerDevToolsAgentHost::AttachToWorker() { | 200 void EmbeddedWorkerDevToolsAgentHost::AttachToWorker() { |
183 if (RenderProcessHost* host = RenderProcessHost::FromID(worker_id_.first)) | 201 if (RenderProcessHost* host = RenderProcessHost::FromID(worker_id_.first)) |
184 host->AddRoute(worker_id_.second, this); | 202 host->AddRoute(worker_id_.second, this); |
185 } | 203 } |
(...skipping 11 matching lines...) Expand all Loading... |
197 const std::string& message) { | 215 const std::string& message) { |
198 SendMessageToClient(message); | 216 SendMessageToClient(message); |
199 } | 217 } |
200 | 218 |
201 void EmbeddedWorkerDevToolsAgentHost::OnSaveAgentRuntimeState( | 219 void EmbeddedWorkerDevToolsAgentHost::OnSaveAgentRuntimeState( |
202 const std::string& state) { | 220 const std::string& state) { |
203 saved_agent_state_ = state; | 221 saved_agent_state_ = state; |
204 } | 222 } |
205 | 223 |
206 } // namespace content | 224 } // namespace content |
OLD | NEW |