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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 virtual int GetTabId() const OVERRIDE; | 54 virtual int GetTabId() const OVERRIDE; |
55 virtual std::string GetExtensionId() const OVERRIDE; | 55 virtual std::string GetExtensionId() const OVERRIDE; |
56 virtual void Inspect(Profile* profile) const OVERRIDE; | 56 virtual void Inspect(Profile* profile) const OVERRIDE; |
57 | 57 |
58 private: | 58 private: |
59 int tab_id_; | 59 int tab_id_; |
60 std::string extension_id_; | 60 std::string extension_id_; |
61 }; | 61 }; |
62 | 62 |
63 RenderViewHostTarget::RenderViewHostTarget(RenderViewHost* rvh, bool is_tab) | 63 RenderViewHostTarget::RenderViewHostTarget(RenderViewHost* rvh, bool is_tab) |
64 : DevToolsTargetImpl(DevToolsAgentHost::GetOrCreateFor(rvh)), | 64 : DevToolsTargetImpl(DevToolsAgentHost::GetOrCreateFor( |
| 65 WebContents::FromRenderViewHost(rvh))), |
65 tab_id_(-1) { | 66 tab_id_(-1) { |
66 set_type(kTargetTypeOther); | 67 set_type(kTargetTypeOther); |
67 WebContents* web_contents = WebContents::FromRenderViewHost(rvh); | 68 WebContents* web_contents = WebContents::FromRenderViewHost(rvh); |
68 if (!web_contents) | 69 if (!web_contents) |
69 return; // Orphan RVH will show up with no title/url/icon in clients. | 70 return; // Orphan RVH will show up with no title/url/icon in clients. |
70 | 71 |
71 content::RenderFrameHost* rfh = rvh->GetMainFrame(); | 72 content::RenderFrameHost* rfh = rvh->GetMainFrame(); |
72 if (rfh->IsCrossProcessSubframe()) { | 73 if (rfh->IsCrossProcessSubframe()) { |
73 set_url(rfh->GetLastCommittedURL()); | 74 set_url(rfh->GetLastCommittedURL()); |
74 set_type(kTargetTypeIFrame); | 75 set_type(kTargetTypeIFrame); |
75 // TODO(kaznacheev) Try setting the title when the frame navigation | 76 // TODO(kaznacheev) Try setting the title when the frame navigation |
76 // refactoring is done. | 77 // refactoring is done. |
77 RenderViewHost* parent_rvh = rfh->GetParent()->GetRenderViewHost(); | 78 RenderViewHost* parent_rvh = rfh->GetParent()->GetRenderViewHost(); |
78 set_parent_id(DevToolsAgentHost::GetOrCreateFor(parent_rvh)->GetId()); | 79 set_parent_id(DevToolsAgentHost::GetOrCreateFor( |
| 80 WebContents::FromRenderViewHost(parent_rvh))->GetId()); |
79 return; | 81 return; |
80 } | 82 } |
81 | 83 |
82 set_title(base::UTF16ToUTF8(web_contents->GetTitle())); | 84 set_title(base::UTF16ToUTF8(web_contents->GetTitle())); |
83 set_url(web_contents->GetURL()); | 85 set_url(web_contents->GetURL()); |
84 content::NavigationController& controller = web_contents->GetController(); | 86 content::NavigationController& controller = web_contents->GetController(); |
85 content::NavigationEntry* entry = controller.GetActiveEntry(); | 87 content::NavigationEntry* entry = controller.GetActiveEntry(); |
86 if (entry != NULL && entry->GetURL().is_valid()) | 88 if (entry != NULL && entry->GetURL().is_valid()) |
87 set_favicon_url(entry->GetFavicon().url); | 89 set_favicon_url(entry->GetFavicon().url); |
88 set_last_activity_time(web_contents->GetLastActiveTime()); | 90 set_last_activity_time(web_contents->GetLastActiveTime()); |
89 | 91 |
90 GuestViewBase* guest = GuestViewBase::FromWebContents(web_contents); | 92 GuestViewBase* guest = GuestViewBase::FromWebContents(web_contents); |
91 WebContents* guest_contents = guest ? guest->embedder_web_contents() : NULL; | 93 WebContents* guest_contents = guest ? guest->embedder_web_contents() : NULL; |
92 RenderViewHost* guest_parent_rvh = | 94 if (guest_contents) { |
93 guest_contents ? guest_contents->GetRenderViewHost() : NULL; | |
94 if (guest_parent_rvh) { | |
95 set_type(kTargetTypeWebView); | 95 set_type(kTargetTypeWebView); |
96 set_parent_id(DevToolsAgentHost::GetOrCreateFor(guest_parent_rvh)->GetId()); | 96 set_parent_id(DevToolsAgentHost::GetOrCreateFor(guest_contents)->GetId()); |
97 return; | 97 return; |
98 } | 98 } |
99 | 99 |
100 if (is_tab) { | 100 if (is_tab) { |
101 set_type(kTargetTypePage); | 101 set_type(kTargetTypePage); |
102 tab_id_ = extensions::ExtensionTabUtil::GetTabId(web_contents); | 102 tab_id_ = extensions::ExtensionTabUtil::GetTabId(web_contents); |
103 return; | 103 return; |
104 } | 104 } |
105 | 105 |
106 const extensions::Extension* extension = extensions::ExtensionRegistry::Get( | 106 const extensions::Extension* extension = extensions::ExtensionRegistry::Get( |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 } | 161 } |
162 | 162 |
163 std::string RenderViewHostTarget::GetExtensionId() const { | 163 std::string RenderViewHostTarget::GetExtensionId() const { |
164 return extension_id_; | 164 return extension_id_; |
165 } | 165 } |
166 | 166 |
167 void RenderViewHostTarget::Inspect(Profile* profile) const { | 167 void RenderViewHostTarget::Inspect(Profile* profile) const { |
168 RenderViewHost* rvh = GetRenderViewHost(); | 168 RenderViewHost* rvh = GetRenderViewHost(); |
169 if (!rvh) | 169 if (!rvh) |
170 return; | 170 return; |
171 DevToolsWindow::OpenDevToolsWindow(rvh); | 171 WebContents* web_contents = WebContents::FromRenderViewHost(rvh); |
| 172 if (!web_contents) |
| 173 return; |
| 174 DevToolsWindow::OpenDevToolsWindow(web_contents); |
172 } | 175 } |
173 | 176 |
174 // WorkerTarget ---------------------------------------------------------------- | 177 // WorkerTarget ---------------------------------------------------------------- |
175 | 178 |
176 class WorkerTarget : public DevToolsTargetImpl { | 179 class WorkerTarget : public DevToolsTargetImpl { |
177 public: | 180 public: |
178 explicit WorkerTarget(const WorkerService::WorkerInfo& worker_info); | 181 explicit WorkerTarget(const WorkerService::WorkerInfo& worker_info); |
179 | 182 |
180 // content::DevToolsTarget overrides: | 183 // content::DevToolsTarget overrides: |
181 virtual bool Close() const OVERRIDE; | 184 virtual bool Close() const OVERRIDE; |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 | 355 |
353 // static | 356 // static |
354 void DevToolsTargetImpl::EnumerateAllTargets(Callback callback) { | 357 void DevToolsTargetImpl::EnumerateAllTargets(Callback callback) { |
355 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 358 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
356 content::BrowserThread::PostTask( | 359 content::BrowserThread::PostTask( |
357 content::BrowserThread::IO, | 360 content::BrowserThread::IO, |
358 FROM_HERE, | 361 FROM_HERE, |
359 base::Bind(&DevToolsTargetImpl::EnumerateWorkerTargets, | 362 base::Bind(&DevToolsTargetImpl::EnumerateWorkerTargets, |
360 base::Bind(&CollectAllTargets, callback))); | 363 base::Bind(&CollectAllTargets, callback))); |
361 } | 364 } |
OLD | NEW |