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 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
143 WebContents* web_contents = GetWebContents(); | 143 WebContents* web_contents = GetWebContents(); |
144 if (!web_contents) | 144 if (!web_contents) |
145 return; | 145 return; |
146 DevToolsWindow::OpenDevToolsWindow(web_contents); | 146 DevToolsWindow::OpenDevToolsWindow(web_contents); |
147 } | 147 } |
148 | 148 |
149 // WorkerTarget ---------------------------------------------------------------- | 149 // WorkerTarget ---------------------------------------------------------------- |
150 | 150 |
151 class WorkerTarget : public DevToolsTargetImpl { | 151 class WorkerTarget : public DevToolsTargetImpl { |
152 public: | 152 public: |
153 explicit WorkerTarget(const WorkerService::WorkerInfo& worker_info); | |
154 | |
155 explicit WorkerTarget(scoped_refptr<DevToolsAgentHost> agent_host); | 153 explicit WorkerTarget(scoped_refptr<DevToolsAgentHost> agent_host); |
156 | 154 |
157 // DevToolsTargetImpl overrides: | 155 // DevToolsTargetImpl overrides: |
158 virtual std::string GetType() const OVERRIDE; | |
159 virtual void Inspect(Profile* profile) const OVERRIDE; | 156 virtual void Inspect(Profile* profile) const OVERRIDE; |
160 }; | 157 }; |
161 | 158 |
162 WorkerTarget::WorkerTarget(const WorkerService::WorkerInfo& worker) | 159 WorkerTarget::WorkerTarget(scoped_refptr<DevToolsAgentHost> agent_host) |
163 : DevToolsTargetImpl(DevToolsAgentHost::GetForWorker(worker.process_id, | |
164 worker.route_id)) { | |
165 set_description(base::StringPrintf("Worker pid:%d", | |
166 base::GetProcId(worker.handle))); | |
167 } | |
168 | |
169 WorkerTarget::WorkerTarget( | |
170 scoped_refptr<DevToolsAgentHost> agent_host) | |
171 : DevToolsTargetImpl(agent_host) { | 160 : DevToolsTargetImpl(agent_host) { |
172 } | 161 switch (agent_host->GetType()) { |
173 | |
174 std::string WorkerTarget::GetType() const { | |
175 switch (GetAgentHost()->GetType()) { | |
176 case DevToolsAgentHost::TYPE_SHARED_WORKER: | 162 case DevToolsAgentHost::TYPE_SHARED_WORKER: |
177 return kTargetTypeWorker; | 163 set_type(kTargetTypeWorker); |
164 break; | |
178 case DevToolsAgentHost::TYPE_SERVICE_WORKER: | 165 case DevToolsAgentHost::TYPE_SERVICE_WORKER: |
179 return kTargetTypeServiceWorker; | 166 set_type(kTargetTypeServiceWorker); |
167 break; | |
180 default: | 168 default: |
181 break; | 169 NOTREACHED(); |
182 } | 170 } |
183 return kTargetTypeOther; | |
184 } | 171 } |
185 | 172 |
186 void WorkerTarget::Inspect(Profile* profile) const { | 173 void WorkerTarget::Inspect(Profile* profile) const { |
187 DevToolsWindow::OpenDevToolsWindowForWorker(profile, GetAgentHost()); | 174 DevToolsWindow::OpenDevToolsWindowForWorker(profile, GetAgentHost()); |
188 } | 175 } |
189 | 176 |
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 | |
248 } // namespace | 177 } // namespace |
249 | 178 |
250 // DevToolsTargetImpl ---------------------------------------------------------- | 179 // DevToolsTargetImpl ---------------------------------------------------------- |
251 | 180 |
252 DevToolsTargetImpl::~DevToolsTargetImpl() { | 181 DevToolsTargetImpl::~DevToolsTargetImpl() { |
253 } | 182 } |
254 | 183 |
255 DevToolsTargetImpl::DevToolsTargetImpl( | 184 DevToolsTargetImpl::DevToolsTargetImpl( |
256 scoped_refptr<DevToolsAgentHost> agent_host) | 185 scoped_refptr<DevToolsAgentHost> agent_host) |
257 : agent_host_(agent_host), | 186 : agent_host_(agent_host), |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
329 // static | 258 // static |
330 scoped_ptr<DevToolsTargetImpl> DevToolsTargetImpl::CreateForWebContents( | 259 scoped_ptr<DevToolsTargetImpl> DevToolsTargetImpl::CreateForWebContents( |
331 content::WebContents* web_contents, | 260 content::WebContents* web_contents, |
332 bool is_tab) { | 261 bool is_tab) { |
333 return scoped_ptr<DevToolsTargetImpl>( | 262 return scoped_ptr<DevToolsTargetImpl>( |
334 new WebContentsTarget(web_contents, is_tab)); | 263 new WebContentsTarget(web_contents, is_tab)); |
335 } | 264 } |
336 | 265 |
337 // static | 266 // static |
338 void DevToolsTargetImpl::EnumerateAllTargets(Callback callback) { | 267 void DevToolsTargetImpl::EnumerateAllTargets(Callback callback) { |
268 std::set<WebContents*> tab_web_contents; | |
269 for (TabContentsIterator it; !it.done(); it.Next()) | |
270 tab_web_contents.insert(*it); | |
271 | |
339 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 272 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
horo
2014/09/16 07:41:37
Move to the top of the method.
dgozman
2014/09/16 08:55:33
Done.
| |
340 content::BrowserThread::PostTask( | 273 DevToolsTargetImpl::List result; |
341 content::BrowserThread::IO, | 274 DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll(); |
342 FROM_HERE, | 275 for (DevToolsAgentHost::List::iterator it = agents.begin(); |
343 base::Bind(&EnumerateWorkerTargets, | 276 it != agents.end(); ++it) { |
344 base::Bind(&CollectAllTargets, callback))); | 277 DevToolsAgentHost* agent_host = (*it).get(); |
278 switch (agent_host->GetType()) { | |
279 case DevToolsAgentHost::TYPE_WEB_CONTENTS: | |
280 if (WebContents* web_contents = agent_host->GetWebContents()) { | |
281 bool is_tab = | |
horo
2014/09/16 07:41:37
const
dgozman
2014/09/16 08:55:34
Done.
| |
282 tab_web_contents.find(web_contents) != tab_web_contents.end(); | |
283 result.push_back(new WebContentsTarget(web_contents, is_tab)); | |
284 } | |
285 break; | |
286 case DevToolsAgentHost::TYPE_SHARED_WORKER: | |
287 result.push_back(new WorkerTarget(agent_host)); | |
288 break; | |
289 case DevToolsAgentHost::TYPE_SERVICE_WORKER: | |
290 result.push_back(new WorkerTarget(agent_host)); | |
291 break; | |
292 default: | |
293 break; | |
294 } | |
295 } | |
296 | |
297 callback.Run(result); | |
345 } | 298 } |
OLD | NEW |