Chromium Code Reviews| Index: chrome/browser/devtools/devtools_target_impl.cc |
| diff --git a/chrome/browser/devtools/devtools_target_impl.cc b/chrome/browser/devtools/devtools_target_impl.cc |
| index 7f2bfb061f47015254ff71a57e3da371cd446a8d..b930f233e781417a233cb9d32cc9b481aa576868 100644 |
| --- a/chrome/browser/devtools/devtools_target_impl.cc |
| +++ b/chrome/browser/devtools/devtools_target_impl.cc |
| @@ -210,6 +210,25 @@ void WorkerTarget::Inspect(Profile* profile) const { |
| } // namespace |
| +// ServiceWorkerTarget --------------------------------------------------------- |
| + |
| +class ServiceWorkerTarget : public DevToolsTargetImpl { |
| + public: |
| + explicit ServiceWorkerTarget(scoped_refptr<DevToolsAgentHost> agent_host); |
| + virtual void Inspect(Profile* profile) const OVERRIDE; |
| +}; |
| + |
| +ServiceWorkerTarget::ServiceWorkerTarget( |
| + scoped_refptr<DevToolsAgentHost> agent_host) |
| + : DevToolsTargetImpl(agent_host) { |
| + set_type(kTargetTypeWorker); |
| + set_url(agent_host->GetURL()); |
| +} |
| + |
| +void ServiceWorkerTarget::Inspect(Profile* profile) const { |
| + DevToolsWindow::OpenDevToolsWindowForWorker(profile, GetAgentHost()); |
| +} |
| + |
| // DevToolsTargetImpl ---------------------------------------------------------- |
| DevToolsTargetImpl::~DevToolsTargetImpl() { |
| @@ -303,13 +322,14 @@ DevToolsTargetImpl::List DevToolsTargetImpl::EnumerateWebContentsTargets() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| DevToolsTargetImpl::List result; |
| - std::vector<WebContents*> wc_list = |
| - content::DevToolsAgentHost::GetInspectableWebContents(); |
| - for (std::vector<WebContents*>::iterator it = wc_list.begin(); |
| - it != wc_list.end(); |
| - ++it) { |
| - bool is_tab = tab_web_contents.find(*it) != tab_web_contents.end(); |
| - result.push_back(new WebContentsTarget(*it, is_tab)); |
| + DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll(); |
| + for (DevToolsAgentHost::List::iterator it = agents.begin(); |
| + it != agents.end(); ++it) { |
| + if (WebContents* web_contents = (*it)->GetWebContents()) { |
| + bool is_tab = |
| + tab_web_contents.find(web_contents) != tab_web_contents.end(); |
| + result.push_back(new WebContentsTarget(web_contents, is_tab)); |
| + } |
| } |
| return result; |
| } |
| @@ -342,7 +362,19 @@ static void CollectAllTargets( |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| DevToolsTargetImpl::List result = |
| DevToolsTargetImpl::EnumerateWebContentsTargets(); |
| - result.insert(result.begin(), worker_targets.begin(), worker_targets.end()); |
| + result.insert(result.end(), worker_targets.begin(), worker_targets.end()); |
| + |
| + std::set<scoped_refptr<DevToolsAgentHost> > used_agents; |
| + for (DevToolsTargetImpl::List::iterator it = result.begin(); |
| + it != result.end(); ++it) { |
| + used_agents.insert((*it)->GetAgentHost()); |
| + } |
| + DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll(); |
| + 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.
|
| + it != agents.end(); ++it) { |
| + if (used_agents.find(*it) == used_agents.end()) |
| + result.push_back(new ServiceWorkerTarget(*it)); |
| + } |
| callback.Run(result); |
| } |