Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(394)

Side by Side Diff: chrome/browser/devtools/devtools_target_impl.cc

Issue 568403002: Unify shared and service workers in chrome://inspect, remove service workers iframe. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/devtools/devtools_targets_ui.h » ('j') | chrome/browser/ui/webui/inspect_ui.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698