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

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

Issue 1109483003: [DevTools] Migrate chrome to devtools_discovery. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@devtools-discovery-android
Patch Set: rebased Created 5 years, 7 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"
11 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/browser/ui/tab_contents/tab_contents_iterator.h" 12 #include "chrome/browser/ui/tab_contents/tab_contents_iterator.h"
13 #include "chrome/browser/ui/webui/extensions/extension_icon_source.h" 13 #include "chrome/browser/ui/webui/extensions/extension_icon_source.h"
14 #include "chrome/common/extensions/extension_constants.h" 14 #include "chrome/common/extensions/extension_constants.h"
15 #include "content/public/browser/browser_thread.h" 15 #include "content/public/browser/browser_thread.h"
16 #include "content/public/browser/devtools_agent_host.h"
16 #include "content/public/browser/favicon_status.h" 17 #include "content/public/browser/favicon_status.h"
17 #include "content/public/browser/navigation_entry.h" 18 #include "content/public/browser/navigation_entry.h"
18 #include "content/public/browser/render_frame_host.h" 19 #include "content/public/browser/render_frame_host.h"
19 #include "content/public/browser/render_view_host.h"
20 #include "content/public/browser/web_contents.h" 20 #include "content/public/browser/web_contents.h"
21 #include "extensions/browser/extension_host.h" 21 #include "extensions/browser/extension_host.h"
22 #include "extensions/browser/extension_registry.h" 22 #include "extensions/browser/extension_registry.h"
23 #include "extensions/browser/guest_view/guest_view_base.h" 23 #include "extensions/browser/guest_view/guest_view_base.h"
24 #include "extensions/browser/process_manager.h" 24 #include "extensions/browser/process_manager.h"
25 #include "extensions/common/constants.h" 25 #include "extensions/common/constants.h"
26 26
27 using content::BrowserThread; 27 using content::BrowserThread;
28 using content::DevToolsAgentHost; 28 using content::DevToolsAgentHost;
29 using content::RenderViewHost;
30 using content::WebContents; 29 using content::WebContents;
31 using content::WorkerService;
32 30
33 const char DevToolsTargetImpl::kTargetTypeApp[] = "app"; 31 const char DevToolsTargetImpl::kTargetTypeApp[] = "app";
34 const char DevToolsTargetImpl::kTargetTypeBackgroundPage[] = "background_page"; 32 const char DevToolsTargetImpl::kTargetTypeBackgroundPage[] = "background_page";
35 const char DevToolsTargetImpl::kTargetTypePage[] = "page"; 33 const char DevToolsTargetImpl::kTargetTypePage[] = "page";
36 const char DevToolsTargetImpl::kTargetTypeWorker[] = "worker"; 34 const char DevToolsTargetImpl::kTargetTypeWorker[] = "worker";
37 const char DevToolsTargetImpl::kTargetTypeWebView[] = "webview"; 35 const char DevToolsTargetImpl::kTargetTypeWebView[] = "webview";
38 const char DevToolsTargetImpl::kTargetTypeIFrame[] = "iframe"; 36 const char DevToolsTargetImpl::kTargetTypeIFrame[] = "iframe";
39 const char DevToolsTargetImpl::kTargetTypeOther[] = "other"; 37 const char DevToolsTargetImpl::kTargetTypeOther[] = "other";
40 const char DevToolsTargetImpl::kTargetTypeServiceWorker[] = "service_worker"; 38 const char DevToolsTargetImpl::kTargetTypeServiceWorker[] = "service_worker";
41 39
42 namespace { 40 namespace {
43 41
44 // WebContentsTarget -------------------------------------------------------- 42 // WebContentsTarget --------------------------------------------------------
45 43
46 class WebContentsTarget : public DevToolsTargetImpl { 44 class WebContentsTarget : public DevToolsTargetImpl {
47 public: 45 public:
48 WebContentsTarget(WebContents* web_contents, bool is_tab); 46 WebContentsTarget(WebContents* web_contents, bool is_tab);
49 47
50 // DevToolsTargetImpl overrides: 48 // DevToolsTargetImpl overrides.
51 WebContents* GetWebContents() const override;
52 int GetTabId() const override; 49 int GetTabId() const override;
53 std::string GetExtensionId() const override; 50 std::string GetExtensionId() const override;
54 void Inspect(Profile* profile) const override; 51 void Inspect(Profile* profile) const override;
55 52
56 private: 53 private:
57 int tab_id_; 54 int tab_id_;
58 std::string extension_id_; 55 std::string extension_id_;
59 }; 56 };
60 57
61 WebContentsTarget::WebContentsTarget(WebContents* web_contents, bool is_tab) 58 WebContentsTarget::WebContentsTarget(WebContents* web_contents, bool is_tab)
62 : DevToolsTargetImpl(DevToolsAgentHost::GetOrCreateFor(web_contents)), 59 : DevToolsTargetImpl(DevToolsAgentHost::GetOrCreateFor(web_contents)),
63 tab_id_(-1) { 60 tab_id_(-1) {
64 set_type(kTargetTypeOther); 61 set_type(kTargetTypeOther);
65 62
66 content::NavigationController& controller = web_contents->GetController();
67 content::NavigationEntry* entry = controller.GetActiveEntry();
68 if (entry != NULL && entry->GetURL().is_valid())
69 set_favicon_url(entry->GetFavicon().url);
70 set_last_activity_time(web_contents->GetLastActiveTime());
71
72 extensions::GuestViewBase* guest = 63 extensions::GuestViewBase* guest =
73 extensions::GuestViewBase::FromWebContents(web_contents); 64 extensions::GuestViewBase::FromWebContents(web_contents);
74 WebContents* guest_contents = guest ? guest->embedder_web_contents() : NULL; 65 WebContents* guest_contents = guest ? guest->embedder_web_contents() : NULL;
75 if (guest_contents) { 66 if (guest_contents) {
76 set_type(kTargetTypeWebView); 67 set_type(kTargetTypeWebView);
77 set_parent_id(DevToolsAgentHost::GetOrCreateFor(guest_contents)->GetId()); 68 set_parent_id(DevToolsAgentHost::GetOrCreateFor(guest_contents)->GetId());
78 return; 69 return;
79 } 70 }
80 71
81 if (is_tab) { 72 if (is_tab) {
(...skipping 23 matching lines...) Expand all
105 } else if (extension->is_hosted_app() 96 } else if (extension->is_hosted_app()
106 || extension->is_legacy_packaged_app() 97 || extension->is_legacy_packaged_app()
107 || extension->is_platform_app()) { 98 || extension->is_platform_app()) {
108 set_type(kTargetTypeApp); 99 set_type(kTargetTypeApp);
109 } 100 }
110 set_favicon_url(extensions::ExtensionIconSource::GetIconURL( 101 set_favicon_url(extensions::ExtensionIconSource::GetIconURL(
111 extension, extension_misc::EXTENSION_ICON_SMALLISH, 102 extension, extension_misc::EXTENSION_ICON_SMALLISH,
112 ExtensionIconSet::MATCH_BIGGER, false, NULL)); 103 ExtensionIconSet::MATCH_BIGGER, false, NULL));
113 } 104 }
114 105
115 WebContents* WebContentsTarget::GetWebContents() const {
116 return GetAgentHost()->GetWebContents();
117 }
118
119 int WebContentsTarget::GetTabId() const { 106 int WebContentsTarget::GetTabId() const {
120 return tab_id_; 107 return tab_id_;
121 } 108 }
122 109
123 std::string WebContentsTarget::GetExtensionId() const { 110 std::string WebContentsTarget::GetExtensionId() const {
124 return extension_id_; 111 return extension_id_;
125 } 112 }
126 113
127 void WebContentsTarget::Inspect(Profile* profile) const { 114 void WebContentsTarget::Inspect(Profile* profile) const {
128 WebContents* web_contents = GetWebContents(); 115 WebContents* web_contents = GetWebContents();
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 170
184 } // namespace 171 } // namespace
185 172
186 // DevToolsTargetImpl ---------------------------------------------------------- 173 // DevToolsTargetImpl ----------------------------------------------------------
187 174
188 DevToolsTargetImpl::~DevToolsTargetImpl() { 175 DevToolsTargetImpl::~DevToolsTargetImpl() {
189 } 176 }
190 177
191 DevToolsTargetImpl::DevToolsTargetImpl( 178 DevToolsTargetImpl::DevToolsTargetImpl(
192 scoped_refptr<DevToolsAgentHost> agent_host) 179 scoped_refptr<DevToolsAgentHost> agent_host)
193 : agent_host_(agent_host), 180 : devtools_discovery::BasicTargetDescriptor(agent_host) {
194 title_(agent_host->GetTitle()),
195 url_(agent_host->GetURL()) {
196 }
197
198 std::string DevToolsTargetImpl::GetParentId() const {
199 return parent_id_;
200 }
201
202 std::string DevToolsTargetImpl::GetId() const {
203 return agent_host_->GetId();
204 }
205
206 std::string DevToolsTargetImpl::GetType() const {
207 return type_;
208 }
209
210 std::string DevToolsTargetImpl::GetTitle() const {
211 return title_;
212 }
213
214 std::string DevToolsTargetImpl::GetDescription() const {
215 return description_;
216 }
217
218 GURL DevToolsTargetImpl::GetURL() const {
219 return url_;
220 }
221
222 GURL DevToolsTargetImpl::GetFaviconURL() const {
223 return favicon_url_;
224 }
225
226 base::TimeTicks DevToolsTargetImpl::GetLastActivityTime() const {
227 return last_activity_time_;
228 }
229
230 scoped_refptr<content::DevToolsAgentHost>
231 DevToolsTargetImpl::GetAgentHost() const {
232 return agent_host_;
233 }
234
235 bool DevToolsTargetImpl::IsAttached() const {
236 return agent_host_->IsAttached();
237 }
238
239 bool DevToolsTargetImpl::Activate() const {
240 return agent_host_->Activate();
241 }
242
243 bool DevToolsTargetImpl::Close() const {
244 return agent_host_->Close();
245 } 181 }
246 182
247 int DevToolsTargetImpl::GetTabId() const { 183 int DevToolsTargetImpl::GetTabId() const {
248 return -1; 184 return -1;
249 } 185 }
250 186
251 WebContents* DevToolsTargetImpl::GetWebContents() const { 187 WebContents* DevToolsTargetImpl::GetWebContents() const {
252 return NULL; 188 return GetAgentHost()->GetWebContents();
253 } 189 }
254 190
255 std::string DevToolsTargetImpl::GetExtensionId() const { 191 std::string DevToolsTargetImpl::GetExtensionId() const {
256 return std::string(); 192 return std::string();
257 } 193 }
258 194
259 void DevToolsTargetImpl::Inspect(Profile* /*profile*/) const { 195 void DevToolsTargetImpl::Inspect(Profile* /*profile*/) const {
260 } 196 }
261 197
262 void DevToolsTargetImpl::Reload() const { 198 void DevToolsTargetImpl::Reload() const {
263 } 199 }
264 200
265 // static 201 // static
266 scoped_ptr<DevToolsTargetImpl> DevToolsTargetImpl::CreateForWebContents( 202 scoped_ptr<DevToolsTargetImpl> DevToolsTargetImpl::CreateForTab(
267 content::WebContents* web_contents, 203 content::WebContents* web_contents) {
268 bool is_tab) {
269 return scoped_ptr<DevToolsTargetImpl>( 204 return scoped_ptr<DevToolsTargetImpl>(
270 new WebContentsTarget(web_contents, is_tab)); 205 new WebContentsTarget(web_contents, true));
271 } 206 }
272 207
273 // static 208 // static
274 void DevToolsTargetImpl::EnumerateAllTargets(Callback callback) { 209 std::vector<DevToolsTargetImpl*> DevToolsTargetImpl::EnumerateAll() {
275 DCHECK_CURRENTLY_ON(BrowserThread::UI); 210 DCHECK_CURRENTLY_ON(BrowserThread::UI);
276 211
277 std::set<WebContents*> tab_web_contents; 212 std::set<WebContents*> tab_web_contents;
278 for (TabContentsIterator it; !it.done(); it.Next()) 213 for (TabContentsIterator it; !it.done(); it.Next())
279 tab_web_contents.insert(*it); 214 tab_web_contents.insert(*it);
280 215
281 DevToolsTargetImpl::List result; 216 std::vector<DevToolsTargetImpl*> result;
282 DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll(); 217 DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll();
283 for (DevToolsAgentHost::List::iterator it = agents.begin(); 218 for (DevToolsAgentHost::List::iterator it = agents.begin();
284 it != agents.end(); ++it) { 219 it != agents.end(); ++it) {
285 DevToolsAgentHost* agent_host = (*it).get(); 220 DevToolsAgentHost* agent_host = (*it).get();
286 switch (agent_host->GetType()) { 221 switch (agent_host->GetType()) {
287 case DevToolsAgentHost::TYPE_WEB_CONTENTS: 222 case DevToolsAgentHost::TYPE_WEB_CONTENTS:
288 if (WebContents* web_contents = agent_host->GetWebContents()) { 223 if (WebContents* web_contents = agent_host->GetWebContents()) {
289 const bool is_tab = 224 const bool is_tab =
290 tab_web_contents.find(web_contents) != tab_web_contents.end(); 225 tab_web_contents.find(web_contents) != tab_web_contents.end();
291 result.push_back(new WebContentsTarget(web_contents, is_tab)); 226 result.push_back(new WebContentsTarget(web_contents, is_tab));
292 } 227 }
293 break; 228 break;
294 case DevToolsAgentHost::TYPE_FRAME: 229 case DevToolsAgentHost::TYPE_FRAME:
295 result.push_back(new FrameTarget(agent_host)); 230 result.push_back(new FrameTarget(agent_host));
296 break; 231 break;
297 case DevToolsAgentHost::TYPE_SHARED_WORKER: 232 case DevToolsAgentHost::TYPE_SHARED_WORKER:
298 result.push_back(new WorkerTarget(agent_host)); 233 result.push_back(new WorkerTarget(agent_host));
299 break; 234 break;
300 case DevToolsAgentHost::TYPE_SERVICE_WORKER: 235 case DevToolsAgentHost::TYPE_SERVICE_WORKER:
301 result.push_back(new WorkerTarget(agent_host)); 236 result.push_back(new WorkerTarget(agent_host));
302 break; 237 break;
303 default: 238 default:
304 break; 239 break;
305 } 240 }
306 } 241 }
307 242 return result;
308 callback.Run(result);
309 } 243 }
OLDNEW
« no previous file with comments | « chrome/browser/devtools/devtools_target_impl.h ('k') | chrome/browser/devtools/devtools_targets_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698