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

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

Issue 349033009: DevTools: Added service workers to chrome://inspect/#devices (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed lifetime again Created 6 years, 5 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 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 bool WorkerTarget::Close() const { 208 bool WorkerTarget::Close() const {
209 content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE, 209 content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE,
210 base::Bind(&TerminateWorker, process_id_, route_id_)); 210 base::Bind(&TerminateWorker, process_id_, route_id_));
211 return true; 211 return true;
212 } 212 }
213 213
214 void WorkerTarget::Inspect(Profile* profile) const { 214 void WorkerTarget::Inspect(Profile* profile) const {
215 DevToolsWindow::OpenDevToolsWindowForWorker(profile, GetAgentHost()); 215 DevToolsWindow::OpenDevToolsWindowForWorker(profile, GetAgentHost());
216 } 216 }
217 217
218 class ServiceWorkerTarget : public DevToolsTargetImpl {
219 public:
220 explicit ServiceWorkerTarget(scoped_refptr<DevToolsAgentHost> agent_host);
221 virtual void Inspect(Profile* profile) const OVERRIDE;
222 };
223
224 ServiceWorkerTarget::ServiceWorkerTarget(
225 scoped_refptr<DevToolsAgentHost> agent_host)
226 : DevToolsTargetImpl(agent_host) {
227 set_type(kTargetTypeWorker);
228 set_title("");
229 set_url(agent_host->GetURL());
230 }
231
232 void ServiceWorkerTarget::Inspect(Profile* profile) const {
233 DevToolsWindow::OpenDevToolsWindowForWorker(profile, GetAgentHost());
234 }
235
218 } // namespace 236 } // namespace
219 237
220 // DevToolsTargetImpl ---------------------------------------------------------- 238 // DevToolsTargetImpl ----------------------------------------------------------
221 239
222 DevToolsTargetImpl::~DevToolsTargetImpl() { 240 DevToolsTargetImpl::~DevToolsTargetImpl() {
223 } 241 }
224 242
225 DevToolsTargetImpl::DevToolsTargetImpl( 243 DevToolsTargetImpl::DevToolsTargetImpl(
226 scoped_refptr<DevToolsAgentHost> agent_host) 244 scoped_refptr<DevToolsAgentHost> agent_host)
227 : agent_host_(agent_host) { 245 : agent_host_(agent_host) {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 311
294 void DevToolsTargetImpl::Reload() const { 312 void DevToolsTargetImpl::Reload() const {
295 } 313 }
296 314
297 // static 315 // static
298 scoped_ptr<DevToolsTargetImpl> DevToolsTargetImpl::CreateForRenderViewHost( 316 scoped_ptr<DevToolsTargetImpl> DevToolsTargetImpl::CreateForRenderViewHost(
299 content::RenderViewHost* rvh, bool is_tab) { 317 content::RenderViewHost* rvh, bool is_tab) {
300 return scoped_ptr<DevToolsTargetImpl>(new RenderViewHostTarget(rvh, is_tab)); 318 return scoped_ptr<DevToolsTargetImpl>(new RenderViewHostTarget(rvh, is_tab));
301 } 319 }
302 320
303 // static 321
304 DevToolsTargetImpl::List DevToolsTargetImpl::EnumerateRenderViewHostTargets() { 322 static void CreateRenderViewHostTargets(
323 const DevToolsTargetImpl::Callback& callback,
324 const DevToolsAgentHost::List& agents) {
325 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
305 std::set<RenderViewHost*> tab_rvhs; 326 std::set<RenderViewHost*> tab_rvhs;
306 for (TabContentsIterator it; !it.done(); it.Next()) 327 for (TabContentsIterator it; !it.done(); it.Next())
307 tab_rvhs.insert(it->GetRenderViewHost()); 328 tab_rvhs.insert(it->GetRenderViewHost());
308 329
309 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 330 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
310 DevToolsTargetImpl::List result; 331 DevToolsTargetImpl::List result;
311 std::vector<RenderViewHost*> rvh_list = 332 for (content::DevToolsAgentHost::List::const_iterator it = agents.begin();
312 content::DevToolsAgentHost::GetValidRenderViewHosts(); 333 it != agents.end(); ++it) {
313 for (std::vector<RenderViewHost*>::iterator it = rvh_list.begin(); 334 if (RenderViewHost* rvh = (*it)->GetRenderViewHost()) {
314 it != rvh_list.end(); ++it) { 335 bool is_tab = tab_rvhs.find(rvh) != tab_rvhs.end();
315 bool is_tab = tab_rvhs.find(*it) != tab_rvhs.end(); 336 result.push_back(new RenderViewHostTarget(rvh, is_tab));
316 result.push_back(new RenderViewHostTarget(*it, is_tab)); 337 }
317 } 338 }
318 return result; 339 callback.Run(result);
340 }
341
342 // static
343 void DevToolsTargetImpl::EnumerateRenderViewHostTargets(
344 const Callback& callback) {
345 content::DevToolsAgentHost::GetOrCreateAllHosts(
346 base::Bind(&CreateRenderViewHostTargets, callback));
319 } 347 }
320 348
321 static void CreateWorkerTargets( 349 static void CreateWorkerTargets(
322 const std::vector<WorkerService::WorkerInfo>& worker_info, 350 const std::vector<WorkerService::WorkerInfo>& worker_info,
323 DevToolsTargetImpl::Callback callback) { 351 const DevToolsTargetImpl::Callback& callback) {
324 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 352 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
325 DevToolsTargetImpl::List result; 353 DevToolsTargetImpl::List result;
326 for (size_t i = 0; i < worker_info.size(); ++i) { 354 for (size_t i = 0; i < worker_info.size(); ++i) {
327 result.push_back(new WorkerTarget(worker_info[i])); 355 result.push_back(new WorkerTarget(worker_info[i]));
328 } 356 }
329 callback.Run(result); 357 callback.Run(result);
330 } 358 }
331 359
332 // static 360 // static
333 void DevToolsTargetImpl::EnumerateWorkerTargets(Callback callback) { 361 void DevToolsTargetImpl::EnumerateWorkerTargets(const Callback& callback) {
334 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 362 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
335 content::BrowserThread::PostTask( 363 content::BrowserThread::PostTask(
336 content::BrowserThread::UI, 364 content::BrowserThread::UI,
337 FROM_HERE, 365 FROM_HERE,
338 base::Bind(&CreateWorkerTargets, 366 base::Bind(&CreateWorkerTargets,
339 WorkerService::GetInstance()->GetWorkers(), 367 WorkerService::GetInstance()->GetWorkers(),
340 callback)); 368 callback));
341 } 369 }
342 370
343 static void CollectAllTargets( 371 static void Assign(DevToolsTargetImpl::List* targets_ptr,
344 DevToolsTargetImpl::Callback callback, 372 const DevToolsTargetImpl::List& targets) {
345 const DevToolsTargetImpl::List& worker_targets) { 373 *targets_ptr = targets;
374 }
375
376 static void OnAgentHostsReceived(const DevToolsTargetImpl::Callback& callback,
377 const DevToolsTargetImpl::List& worker_targets,
378 const DevToolsAgentHost::List& agent_hosts) {
346 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 379 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
347 DevToolsTargetImpl::List result = 380 DevToolsTargetImpl::List result;
348 DevToolsTargetImpl::EnumerateRenderViewHostTargets(); 381 CreateRenderViewHostTargets(base::Bind(Assign, &result), agent_hosts);
349 result.insert(result.begin(), worker_targets.begin(), worker_targets.end()); 382 result.insert(result.end(), worker_targets.begin(), worker_targets.end());
383 std::set<scoped_refptr<DevToolsAgentHost> > used_hosts;
384 for (DevToolsTargetImpl::List::iterator it = result.begin();
385 it != result.end(); ++it) {
386 used_hosts.insert((*it)->GetAgentHost());
387 }
388 for (DevToolsAgentHost::List::const_iterator it = agent_hosts.begin();
389 it != agent_hosts.end(); ++it) {
390 if (used_hosts.find(*it) == used_hosts.end())
391 result.push_back(new ServiceWorkerTarget(*it));
392 }
350 callback.Run(result); 393 callback.Run(result);
351 } 394 }
352 395
396 static void OnWorkersReceived(const DevToolsTargetImpl::Callback& callback,
397 const DevToolsTargetImpl::List& worker_targets) {
398 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
399 DevToolsAgentHost::GetOrCreateAllHosts(
400 base::Bind(&OnAgentHostsReceived, callback, worker_targets));
401 }
402
353 // static 403 // static
354 void DevToolsTargetImpl::EnumerateAllTargets(Callback callback) { 404 void DevToolsTargetImpl::EnumerateAllTargets(const Callback& callback) {
355 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 405 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
356 content::BrowserThread::PostTask( 406 content::BrowserThread::PostTask(
357 content::BrowserThread::IO, 407 content::BrowserThread::IO,
358 FROM_HERE, 408 FROM_HERE,
359 base::Bind(&DevToolsTargetImpl::EnumerateWorkerTargets, 409 base::Bind(&DevToolsTargetImpl::EnumerateWorkerTargets,
360 base::Bind(&CollectAllTargets, callback))); 410 base::Bind(&OnWorkersReceived, callback)));
361 } 411 }
OLDNEW
« no previous file with comments | « chrome/browser/devtools/devtools_target_impl.h ('k') | chrome/browser/devtools/devtools_targets_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698