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 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 default: | 180 default: |
181 break; | 181 break; |
182 } | 182 } |
183 return kTargetTypeOther; | 183 return kTargetTypeOther; |
184 } | 184 } |
185 | 185 |
186 void WorkerTarget::Inspect(Profile* profile) const { | 186 void WorkerTarget::Inspect(Profile* profile) const { |
187 DevToolsWindow::OpenDevToolsWindowForWorker(profile, GetAgentHost()); | 187 DevToolsWindow::OpenDevToolsWindowForWorker(profile, GetAgentHost()); |
188 } | 188 } |
189 | 189 |
| 190 // Enumeration ---------------------------------------------------------------- |
| 191 |
| 192 DevToolsTargetImpl::List EnumerateWebContentsTargets() { |
| 193 std::set<WebContents*> tab_web_contents; |
| 194 for (TabContentsIterator it; !it.done(); it.Next()) |
| 195 tab_web_contents.insert(*it); |
| 196 |
| 197 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 198 DevToolsTargetImpl::List result; |
| 199 DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll(); |
| 200 for (DevToolsAgentHost::List::iterator it = agents.begin(); |
| 201 it != agents.end(); ++it) { |
| 202 if (WebContents* web_contents = (*it)->GetWebContents()) { |
| 203 bool is_tab = |
| 204 tab_web_contents.find(web_contents) != tab_web_contents.end(); |
| 205 result.push_back(new WebContentsTarget(web_contents, is_tab)); |
| 206 } |
| 207 } |
| 208 return result; |
| 209 } |
| 210 |
| 211 void CreateWorkerTargets( |
| 212 const std::vector<WorkerService::WorkerInfo>& worker_info, |
| 213 DevToolsTargetImpl::Callback callback) { |
| 214 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 215 DevToolsTargetImpl::List result; |
| 216 for (size_t i = 0; i < worker_info.size(); ++i) { |
| 217 result.push_back(new WorkerTarget(worker_info[i])); |
| 218 } |
| 219 callback.Run(result); |
| 220 } |
| 221 |
| 222 void EnumerateWorkerTargets(DevToolsTargetImpl::Callback callback) { |
| 223 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 224 content::BrowserThread::PostTask( |
| 225 content::BrowserThread::UI, |
| 226 FROM_HERE, |
| 227 base::Bind(&CreateWorkerTargets, |
| 228 WorkerService::GetInstance()->GetWorkers(), |
| 229 callback)); |
| 230 } |
| 231 |
| 232 void CollectAllTargets( |
| 233 DevToolsTargetImpl::Callback callback, |
| 234 const DevToolsTargetImpl::List& worker_targets) { |
| 235 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 236 DevToolsTargetImpl::List result = EnumerateWebContentsTargets(); |
| 237 result.insert(result.end(), worker_targets.begin(), worker_targets.end()); |
| 238 |
| 239 DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll(); |
| 240 for (DevToolsAgentHost::List::iterator it = agents.begin(); |
| 241 it != agents.end(); ++it) { |
| 242 if ((*it)->GetType() == DevToolsAgentHost::TYPE_SERVICE_WORKER) |
| 243 result.push_back(new WorkerTarget(*it)); |
| 244 } |
| 245 callback.Run(result); |
| 246 } |
| 247 |
190 } // namespace | 248 } // namespace |
191 | 249 |
192 // DevToolsTargetImpl ---------------------------------------------------------- | 250 // DevToolsTargetImpl ---------------------------------------------------------- |
193 | 251 |
194 DevToolsTargetImpl::~DevToolsTargetImpl() { | 252 DevToolsTargetImpl::~DevToolsTargetImpl() { |
195 } | 253 } |
196 | 254 |
197 DevToolsTargetImpl::DevToolsTargetImpl( | 255 DevToolsTargetImpl::DevToolsTargetImpl( |
198 scoped_refptr<DevToolsAgentHost> agent_host) | 256 scoped_refptr<DevToolsAgentHost> agent_host) |
199 : agent_host_(agent_host), | 257 : agent_host_(agent_host), |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 | 328 |
271 // static | 329 // static |
272 scoped_ptr<DevToolsTargetImpl> DevToolsTargetImpl::CreateForWebContents( | 330 scoped_ptr<DevToolsTargetImpl> DevToolsTargetImpl::CreateForWebContents( |
273 content::WebContents* web_contents, | 331 content::WebContents* web_contents, |
274 bool is_tab) { | 332 bool is_tab) { |
275 return scoped_ptr<DevToolsTargetImpl>( | 333 return scoped_ptr<DevToolsTargetImpl>( |
276 new WebContentsTarget(web_contents, is_tab)); | 334 new WebContentsTarget(web_contents, is_tab)); |
277 } | 335 } |
278 | 336 |
279 // static | 337 // static |
280 DevToolsTargetImpl::List DevToolsTargetImpl::EnumerateWebContentsTargets() { | |
281 std::set<WebContents*> tab_web_contents; | |
282 for (TabContentsIterator it; !it.done(); it.Next()) | |
283 tab_web_contents.insert(*it); | |
284 | |
285 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
286 DevToolsTargetImpl::List result; | |
287 DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll(); | |
288 for (DevToolsAgentHost::List::iterator it = agents.begin(); | |
289 it != agents.end(); ++it) { | |
290 if (WebContents* web_contents = (*it)->GetWebContents()) { | |
291 bool is_tab = | |
292 tab_web_contents.find(web_contents) != tab_web_contents.end(); | |
293 result.push_back(new WebContentsTarget(web_contents, is_tab)); | |
294 } | |
295 } | |
296 return result; | |
297 } | |
298 | |
299 static void CreateWorkerTargets( | |
300 const std::vector<WorkerService::WorkerInfo>& worker_info, | |
301 DevToolsTargetImpl::Callback callback) { | |
302 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
303 DevToolsTargetImpl::List result; | |
304 for (size_t i = 0; i < worker_info.size(); ++i) { | |
305 result.push_back(new WorkerTarget(worker_info[i])); | |
306 } | |
307 callback.Run(result); | |
308 } | |
309 | |
310 // static | |
311 void DevToolsTargetImpl::EnumerateWorkerTargets(Callback callback) { | |
312 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | |
313 content::BrowserThread::PostTask( | |
314 content::BrowserThread::UI, | |
315 FROM_HERE, | |
316 base::Bind(&CreateWorkerTargets, | |
317 WorkerService::GetInstance()->GetWorkers(), | |
318 callback)); | |
319 } | |
320 | |
321 static void CollectAllTargets( | |
322 DevToolsTargetImpl::Callback callback, | |
323 const DevToolsTargetImpl::List& worker_targets) { | |
324 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
325 DevToolsTargetImpl::List result = | |
326 DevToolsTargetImpl::EnumerateWebContentsTargets(); | |
327 result.insert(result.end(), worker_targets.begin(), worker_targets.end()); | |
328 | |
329 DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll(); | |
330 for (DevToolsAgentHost::List::iterator it = agents.begin(); | |
331 it != agents.end(); ++it) { | |
332 if ((*it)->GetType() == DevToolsAgentHost::TYPE_SERVICE_WORKER) | |
333 result.push_back(new WorkerTarget(*it)); | |
334 } | |
335 callback.Run(result); | |
336 } | |
337 | |
338 // static | |
339 void DevToolsTargetImpl::EnumerateAllTargets(Callback callback) { | 338 void DevToolsTargetImpl::EnumerateAllTargets(Callback callback) { |
340 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 339 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
341 content::BrowserThread::PostTask( | 340 content::BrowserThread::PostTask( |
342 content::BrowserThread::IO, | 341 content::BrowserThread::IO, |
343 FROM_HERE, | 342 FROM_HERE, |
344 base::Bind(&DevToolsTargetImpl::EnumerateWorkerTargets, | 343 base::Bind(&EnumerateWorkerTargets, |
345 base::Bind(&CollectAllTargets, callback))); | 344 base::Bind(&CollectAllTargets, callback))); |
346 } | 345 } |
OLD | NEW |