Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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("Service Worker"); | |
| 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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 313 for (std::vector<RenderViewHost*>::iterator it = rvh_list.begin(); | 331 for (std::vector<RenderViewHost*>::iterator it = rvh_list.begin(); |
| 314 it != rvh_list.end(); ++it) { | 332 it != rvh_list.end(); ++it) { |
| 315 bool is_tab = tab_rvhs.find(*it) != tab_rvhs.end(); | 333 bool is_tab = tab_rvhs.find(*it) != tab_rvhs.end(); |
| 316 result.push_back(new RenderViewHostTarget(*it, is_tab)); | 334 result.push_back(new RenderViewHostTarget(*it, is_tab)); |
| 317 } | 335 } |
| 318 return result; | 336 return result; |
| 319 } | 337 } |
| 320 | 338 |
| 321 static void CreateWorkerTargets( | 339 static void CreateWorkerTargets( |
| 322 const std::vector<WorkerService::WorkerInfo>& worker_info, | 340 const std::vector<WorkerService::WorkerInfo>& worker_info, |
| 323 DevToolsTargetImpl::Callback callback) { | 341 const DevToolsTargetImpl::Callback& callback) { |
| 324 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 342 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 325 DevToolsTargetImpl::List result; | 343 DevToolsTargetImpl::List result; |
| 326 for (size_t i = 0; i < worker_info.size(); ++i) { | 344 for (size_t i = 0; i < worker_info.size(); ++i) { |
| 327 result.push_back(new WorkerTarget(worker_info[i])); | 345 result.push_back(new WorkerTarget(worker_info[i])); |
| 328 } | 346 } |
| 329 callback.Run(result); | 347 callback.Run(result); |
| 330 } | 348 } |
| 331 | 349 |
| 332 // static | 350 // static |
| 333 void DevToolsTargetImpl::EnumerateWorkerTargets(Callback callback) { | 351 void DevToolsTargetImpl::EnumerateWorkerTargets(Callback callback) { |
| 334 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 352 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 335 content::BrowserThread::PostTask( | 353 content::BrowserThread::PostTask( |
| 336 content::BrowserThread::UI, | 354 content::BrowserThread::UI, |
| 337 FROM_HERE, | 355 FROM_HERE, |
| 338 base::Bind(&CreateWorkerTargets, | 356 base::Bind(&CreateWorkerTargets, |
| 339 WorkerService::GetInstance()->GetWorkers(), | 357 WorkerService::GetInstance()->GetWorkers(), |
| 340 callback)); | 358 callback)); |
| 341 } | 359 } |
| 342 | 360 |
| 343 static void CollectAllTargets( | 361 static void CollectAllTargets(const DevToolsTargetImpl::Callback& callback, |
| 344 DevToolsTargetImpl::Callback callback, | 362 const DevToolsTargetImpl::List& worker_targets, |
| 345 const DevToolsTargetImpl::List& worker_targets) { | 363 const DevToolsAgentHost::List& agent_hosts) { |
| 346 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 364 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 347 DevToolsTargetImpl::List result = | 365 DevToolsTargetImpl::List result = |
| 348 DevToolsTargetImpl::EnumerateRenderViewHostTargets(); | 366 DevToolsTargetImpl::EnumerateRenderViewHostTargets(); |
| 349 result.insert(result.begin(), worker_targets.begin(), worker_targets.end()); | 367 result.insert(result.begin(), worker_targets.begin(), worker_targets.end()); |
| 368 std::set<scoped_refptr<DevToolsAgentHost> > used_hosts; | |
| 369 for (DevToolsTargetImpl::List::iterator it = result.begin(); | |
| 370 it != result.end(); ++it) { | |
| 371 used_hosts.insert((*it)->GetAgentHost()); | |
| 372 } | |
| 373 for (DevToolsAgentHost::List::const_iterator it = agent_hosts.begin(); | |
| 374 it != agent_hosts.end(); ++it) { | |
| 375 if (used_hosts.find(*it) == used_hosts.end()) | |
| 376 result.push_back(new ServiceWorkerTarget(*it)); | |
| 377 } | |
| 350 callback.Run(result); | 378 callback.Run(result); |
| 351 } | 379 } |
| 352 | 380 |
| 381 static void CollectWorkers(const DevToolsTargetImpl::Callback& callback, | |
|
dgozman
2014/07/14 11:17:24
I'd rename this one to CollectAllTargets and it's
| |
| 382 const DevToolsTargetImpl::List& worker_targets) { | |
| 383 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
| 384 DevToolsAgentHost::GetOrCreateAllHosts( | |
| 385 base::Bind(&CollectAllTargets, callback, worker_targets)); | |
| 386 } | |
| 387 | |
| 353 // static | 388 // static |
| 354 void DevToolsTargetImpl::EnumerateAllTargets(Callback callback) { | 389 void DevToolsTargetImpl::EnumerateAllTargets(Callback callback) { |
| 355 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 390 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 356 content::BrowserThread::PostTask( | 391 content::BrowserThread::PostTask( |
| 357 content::BrowserThread::IO, | 392 content::BrowserThread::IO, |
| 358 FROM_HERE, | 393 FROM_HERE, |
| 359 base::Bind(&DevToolsTargetImpl::EnumerateWorkerTargets, | 394 base::Bind(&DevToolsTargetImpl::EnumerateWorkerTargets, |
|
dgozman
2014/07/14 11:17:24
This method should be called EnumerateSharedWorker
| |
| 360 base::Bind(&CollectAllTargets, callback))); | 395 base::Bind(&CollectWorkers, callback))); |
| 361 } | 396 } |
| OLD | NEW |