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 |