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

Side by Side Diff: chrome/browser/devtools/devtools_target_impl.cc

Issue 459403002: DevTools: Added service workers to remote debugging targets (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Android fixes Created 6 years, 4 months 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/devtools/devtools_target_impl.h" 5 #include "chrome/browser/devtools/devtools_target_impl.h"
6 6
7 #include "base/strings/stringprintf.h" 7 #include "base/strings/stringprintf.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/devtools/devtools_window.h" 9 #include "chrome/browser/devtools/devtools_window.h"
10 #include "chrome/browser/extensions/extension_tab_util.h" 10 #include "chrome/browser/extensions/extension_tab_util.h"
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 base::Bind(&TerminateWorker, process_id_, route_id_)); 203 base::Bind(&TerminateWorker, process_id_, route_id_));
204 return true; 204 return true;
205 } 205 }
206 206
207 void WorkerTarget::Inspect(Profile* profile) const { 207 void WorkerTarget::Inspect(Profile* profile) const {
208 DevToolsWindow::OpenDevToolsWindowForWorker(profile, GetAgentHost()); 208 DevToolsWindow::OpenDevToolsWindowForWorker(profile, GetAgentHost());
209 } 209 }
210 210
211 } // namespace 211 } // namespace
212 212
213 // ServiceWorkerTarget ---------------------------------------------------------
214
215 class ServiceWorkerTarget : public DevToolsTargetImpl {
216 public:
217 explicit ServiceWorkerTarget(scoped_refptr<DevToolsAgentHost> agent_host);
218 virtual void Inspect(Profile* profile) const OVERRIDE;
219 };
220
221 ServiceWorkerTarget::ServiceWorkerTarget(
222 scoped_refptr<DevToolsAgentHost> agent_host)
223 : DevToolsTargetImpl(agent_host) {
224 set_type(kTargetTypeWorker);
225 set_url(agent_host->GetURL());
226 }
227
228 void ServiceWorkerTarget::Inspect(Profile* profile) const {
229 DevToolsWindow::OpenDevToolsWindowForWorker(profile, GetAgentHost());
230 }
231
213 // DevToolsTargetImpl ---------------------------------------------------------- 232 // DevToolsTargetImpl ----------------------------------------------------------
214 233
215 DevToolsTargetImpl::~DevToolsTargetImpl() { 234 DevToolsTargetImpl::~DevToolsTargetImpl() {
216 } 235 }
217 236
218 DevToolsTargetImpl::DevToolsTargetImpl( 237 DevToolsTargetImpl::DevToolsTargetImpl(
219 scoped_refptr<DevToolsAgentHost> agent_host) 238 scoped_refptr<DevToolsAgentHost> agent_host)
220 : agent_host_(agent_host) { 239 : agent_host_(agent_host) {
221 } 240 }
222 241
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 } 315 }
297 316
298 // static 317 // static
299 DevToolsTargetImpl::List DevToolsTargetImpl::EnumerateWebContentsTargets() { 318 DevToolsTargetImpl::List DevToolsTargetImpl::EnumerateWebContentsTargets() {
300 std::set<WebContents*> tab_web_contents; 319 std::set<WebContents*> tab_web_contents;
301 for (TabContentsIterator it; !it.done(); it.Next()) 320 for (TabContentsIterator it; !it.done(); it.Next())
302 tab_web_contents.insert(*it); 321 tab_web_contents.insert(*it);
303 322
304 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 323 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
305 DevToolsTargetImpl::List result; 324 DevToolsTargetImpl::List result;
306 std::vector<WebContents*> wc_list = 325 DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll();
307 content::DevToolsAgentHost::GetInspectableWebContents(); 326 for (DevToolsAgentHost::List::iterator it = agents.begin();
308 for (std::vector<WebContents*>::iterator it = wc_list.begin(); 327 it != agents.end(); ++it) {
309 it != wc_list.end(); 328 if (WebContents* web_contents = (*it)->GetWebContents()) {
310 ++it) { 329 bool is_tab =
311 bool is_tab = tab_web_contents.find(*it) != tab_web_contents.end(); 330 tab_web_contents.find(web_contents) != tab_web_contents.end();
312 result.push_back(new WebContentsTarget(*it, is_tab)); 331 result.push_back(new WebContentsTarget(web_contents, is_tab));
332 }
313 } 333 }
314 return result; 334 return result;
315 } 335 }
316 336
317 static void CreateWorkerTargets( 337 static void CreateWorkerTargets(
318 const std::vector<WorkerService::WorkerInfo>& worker_info, 338 const std::vector<WorkerService::WorkerInfo>& worker_info,
319 DevToolsTargetImpl::Callback callback) { 339 DevToolsTargetImpl::Callback callback) {
320 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 340 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
321 DevToolsTargetImpl::List result; 341 DevToolsTargetImpl::List result;
322 for (size_t i = 0; i < worker_info.size(); ++i) { 342 for (size_t i = 0; i < worker_info.size(); ++i) {
(...skipping 12 matching lines...) Expand all
335 WorkerService::GetInstance()->GetWorkers(), 355 WorkerService::GetInstance()->GetWorkers(),
336 callback)); 356 callback));
337 } 357 }
338 358
339 static void CollectAllTargets( 359 static void CollectAllTargets(
340 DevToolsTargetImpl::Callback callback, 360 DevToolsTargetImpl::Callback callback,
341 const DevToolsTargetImpl::List& worker_targets) { 361 const DevToolsTargetImpl::List& worker_targets) {
342 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 362 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
343 DevToolsTargetImpl::List result = 363 DevToolsTargetImpl::List result =
344 DevToolsTargetImpl::EnumerateWebContentsTargets(); 364 DevToolsTargetImpl::EnumerateWebContentsTargets();
345 result.insert(result.begin(), worker_targets.begin(), worker_targets.end()); 365 result.insert(result.end(), worker_targets.begin(), worker_targets.end());
366
367 std::set<scoped_refptr<DevToolsAgentHost> > used_agents;
368 for (DevToolsTargetImpl::List::iterator it = result.begin();
369 it != result.end(); ++it) {
370 used_agents.insert((*it)->GetAgentHost());
371 }
372 DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll();
373 for (DevToolsAgentHost::List::iterator it = agents.begin();
yurys 2014/08/12 12:14:45 Is it possible to use something like ServiceWorker
vkuzkokov 2014/08/13 06:35:19 Newly added DTAH::GetType() used instead.
374 it != agents.end(); ++it) {
375 if (used_agents.find(*it) == used_agents.end())
376 result.push_back(new ServiceWorkerTarget(*it));
377 }
346 callback.Run(result); 378 callback.Run(result);
347 } 379 }
348 380
349 // static 381 // static
350 void DevToolsTargetImpl::EnumerateAllTargets(Callback callback) { 382 void DevToolsTargetImpl::EnumerateAllTargets(Callback callback) {
351 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 383 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
352 content::BrowserThread::PostTask( 384 content::BrowserThread::PostTask(
353 content::BrowserThread::IO, 385 content::BrowserThread::IO,
354 FROM_HERE, 386 FROM_HERE,
355 base::Bind(&DevToolsTargetImpl::EnumerateWorkerTargets, 387 base::Bind(&DevToolsTargetImpl::EnumerateWorkerTargets,
356 base::Bind(&CollectAllTargets, callback))); 388 base::Bind(&CollectAllTargets, callback)));
357 } 389 }
OLDNEW
« no previous file with comments | « chrome/browser/android/dev_tools_server.cc ('k') | content/browser/devtools/devtools_agent_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698