Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: content/browser/debugger/worker_devtools_manager.cc

Issue 8549022: Define DevTools content API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comments addressed Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/debugger/worker_devtools_manager.h" 5 #include "content/browser/debugger/worker_devtools_manager.h"
6 6
7 #include <list> 7 #include <list>
8 #include <map> 8 #include <map>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "content/browser/debugger/devtools_agent_host.h" 11 #include "content/browser/debugger/devtools_agent_host.h"
12 #include "content/browser/debugger/devtools_manager.h" 12 #include "content/browser/debugger/devtools_manager_impl.h"
13 #include "content/browser/debugger/worker_devtools_message_filter.h" 13 #include "content/browser/debugger/worker_devtools_message_filter.h"
14 #include "content/browser/worker_host/worker_process_host.h" 14 #include "content/browser/worker_host/worker_process_host.h"
15 #include "content/browser/worker_host/worker_service.h" 15 #include "content/browser/worker_host/worker_service.h"
16 #include "content/common/devtools_messages.h" 16 #include "content/common/devtools_messages.h"
17 #include "content/public/browser/browser_thread.h" 17 #include "content/public/browser/browser_thread.h"
18 #include "content/public/browser/devtools/devtools_agent_host_registry.h"
18 #include "content/public/browser/notification_observer.h" 19 #include "content/public/browser/notification_observer.h"
19 #include "content/public/browser/notification_registrar.h" 20 #include "content/public/browser/notification_registrar.h"
20 #include "content/public/browser/notification_service.h" 21 #include "content/public/browser/notification_service.h"
21 #include "content/public/browser/notification_types.h" 22 #include "content/public/browser/notification_types.h"
22 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCString.h" 23 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCString.h"
23 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDevToolsAgent.h" 24 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDevToolsAgent.h"
24 #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" 25 #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
25 26
26 using content::BrowserThread; 27 using content::BrowserThread;
27 28
29 namespace content {
30
31 // Called on the UI thread.
32 // static
33 DevToolsAgentHost* DevToolsAgentHostRegistry::GetDevToolsAgentHostForWorker(
34 int worker_process_id,
35 int worker_route_id) {
36 return WorkerDevToolsManager::GetDevToolsAgentHostForWorker(
37 worker_process_id,
38 worker_route_id);
39 }
40
28 class WorkerDevToolsManager::AgentHosts 41 class WorkerDevToolsManager::AgentHosts
29 : private content::NotificationObserver { 42 : private content::NotificationObserver {
30 public: 43 public:
31 static void Add(WorkerId id, WorkerDevToolsAgentHost* host) { 44 static void Add(WorkerId id, WorkerDevToolsAgentHost* host) {
32 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 45 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
33 if (!instance_) 46 if (!instance_)
34 instance_ = new AgentHosts(); 47 instance_ = new AgentHosts();
35 instance_->map_[id] = host; 48 instance_->map_[id] = host;
36 } 49 }
37 static void Remove(WorkerId id) { 50 static void Remove(WorkerId id) {
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 RemovePendingWorkerData(old_id); 170 RemovePendingWorkerData(old_id);
158 } 171 }
159 172
160 static void WorkerDestroyed(WorkerId id) { 173 static void WorkerDestroyed(WorkerId id) {
161 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 174 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
162 WorkerDevToolsAgentHost* agent = AgentHosts::GetAgentHost(id); 175 WorkerDevToolsAgentHost* agent = AgentHosts::GetAgentHost(id);
163 if (!agent) { 176 if (!agent) {
164 RemovePendingWorkerData(id); 177 RemovePendingWorkerData(id);
165 return; 178 return;
166 } 179 }
167 DevToolsManager::GetInstance()->ForwardToDevToolsClient(agent, 180 DevToolsManagerImpl::GetInstance()->ForwardToDevToolsClient(agent,
168 DevToolsClientMsg_DispatchOnInspectorFrontend(MSG_ROUTING_NONE, 181 DevToolsClientMsg_DispatchOnInspectorFrontend(MSG_ROUTING_NONE,
169 WebKit::WebDevToolsAgent::disconnectEventAsText().utf8())); 182 WebKit::WebDevToolsAgent::disconnectEventAsText().utf8()));
170 int cookie = DevToolsManager::GetInstance()->DetachClientHost(agent); 183 int cookie = DevToolsManagerImpl::GetInstance()->DetachClientHost(agent);
171 if (cookie == -1) { 184 if (cookie == -1) {
172 RemovePendingWorkerData(id); 185 RemovePendingWorkerData(id);
173 return; 186 return;
174 } 187 }
175 if (!instance_) 188 if (!instance_)
176 new DetachedClientHosts(); 189 new DetachedClientHosts();
177 instance_->worker_id_to_cookie_[id] = cookie; 190 instance_->worker_id_to_cookie_[id] = cookie;
178 } 191 }
179 192
180 private: 193 private:
181 DetachedClientHosts() { 194 DetachedClientHosts() {
182 instance_ = this; 195 instance_ = this;
183 } 196 }
184 ~DetachedClientHosts() { 197 ~DetachedClientHosts() {
185 instance_ = NULL; 198 instance_ = NULL;
186 } 199 }
187 200
188 bool ReattachClient(WorkerId old_id, WorkerId new_id) { 201 bool ReattachClient(WorkerId old_id, WorkerId new_id) {
189 WorkerIdToCookieMap::iterator it = worker_id_to_cookie_.find(old_id); 202 WorkerIdToCookieMap::iterator it = worker_id_to_cookie_.find(old_id);
190 if (it == worker_id_to_cookie_.end()) 203 if (it == worker_id_to_cookie_.end())
191 return false; 204 return false;
192 DevToolsAgentHost* agent = 205 DevToolsAgentHost* agent =
193 WorkerDevToolsManager::GetDevToolsAgentHostForWorker( 206 WorkerDevToolsManager::GetDevToolsAgentHostForWorker(
194 new_id.first, 207 new_id.first,
195 new_id.second); 208 new_id.second);
196 DevToolsManager::GetInstance()->AttachClientHost( 209 DevToolsManagerImpl::GetInstance()->AttachClientHost(
197 it->second, 210 it->second,
198 agent); 211 agent);
199 worker_id_to_cookie_.erase(it); 212 worker_id_to_cookie_.erase(it);
200 if (worker_id_to_cookie_.empty()) 213 if (worker_id_to_cookie_.empty())
201 delete this; 214 delete this;
202 return true; 215 return true;
203 } 216 }
204 217
205 static void RemovePendingWorkerData(WorkerId id) { 218 static void RemovePendingWorkerData(WorkerId id) {
206 BrowserThread::PostTask( 219 BrowserThread::PostTask(
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 // static 442 // static
430 void WorkerDevToolsManager::ForwardToDevToolsClientOnUIThread( 443 void WorkerDevToolsManager::ForwardToDevToolsClientOnUIThread(
431 int worker_process_id, 444 int worker_process_id,
432 int worker_route_id, 445 int worker_route_id,
433 const IPC::Message& message) { 446 const IPC::Message& message) {
434 WorkerDevToolsAgentHost* agent_host = AgentHosts::GetAgentHost(WorkerId( 447 WorkerDevToolsAgentHost* agent_host = AgentHosts::GetAgentHost(WorkerId(
435 worker_process_id, 448 worker_process_id,
436 worker_route_id)); 449 worker_route_id));
437 if (!agent_host) 450 if (!agent_host)
438 return; 451 return;
439 DevToolsManager::GetInstance()->ForwardToDevToolsClient(agent_host, message); 452 DevToolsManagerImpl::GetInstance()->ForwardToDevToolsClient(agent_host,
453 message);
440 } 454 }
441 455
442 // static 456 // static
443 void WorkerDevToolsManager::SaveAgentRuntimeStateOnUIThread( 457 void WorkerDevToolsManager::SaveAgentRuntimeStateOnUIThread(
444 int worker_process_id, 458 int worker_process_id,
445 int worker_route_id, 459 int worker_route_id,
446 const std::string& state) { 460 const std::string& state) {
447 WorkerDevToolsAgentHost* agent_host = AgentHosts::GetAgentHost(WorkerId( 461 WorkerDevToolsAgentHost* agent_host = AgentHosts::GetAgentHost(WorkerId(
448 worker_process_id, 462 worker_process_id,
449 worker_route_id)); 463 worker_route_id));
450 if (!agent_host) 464 if (!agent_host)
451 return; 465 return;
452 DevToolsManager::GetInstance()->SaveAgentRuntimeState(agent_host, state); 466 DevToolsManagerImpl::GetInstance()->SaveAgentRuntimeState(agent_host, state);
453 } 467 }
454 468
455 // static 469 // static
456 void WorkerDevToolsManager::NotifyWorkerDestroyedOnIOThread( 470 void WorkerDevToolsManager::NotifyWorkerDestroyedOnIOThread(
457 int worker_process_id, 471 int worker_process_id,
458 int worker_route_id) { 472 int worker_route_id) {
459 BrowserThread::PostTask( 473 BrowserThread::PostTask(
460 BrowserThread::UI, FROM_HERE, 474 BrowserThread::UI, FROM_HERE,
461 base::Bind( 475 base::Bind(
462 &WorkerDevToolsManager::NotifyWorkerDestroyedOnUIThread, 476 &WorkerDevToolsManager::NotifyWorkerDestroyedOnUIThread,
(...skipping 10 matching lines...) Expand all
473 if (host) 487 if (host)
474 host->WorkerDestroyed(); 488 host->WorkerDestroyed();
475 } 489 }
476 490
477 // static 491 // static
478 void WorkerDevToolsManager::SendResumeToWorker(const WorkerId& id) { 492 void WorkerDevToolsManager::SendResumeToWorker(const WorkerId& id) {
479 if (WorkerProcessHost* process = FindWorkerProcess(id.first)) 493 if (WorkerProcessHost* process = FindWorkerProcess(id.first))
480 process->Send(new DevToolsAgentMsg_ResumeWorkerContext(id.second)); 494 process->Send(new DevToolsAgentMsg_ResumeWorkerContext(id.second));
481 } 495 }
482 496
497 } // namespace
498
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698