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 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 } |
| OLD | NEW |