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

Unified Diff: content/browser/devtools/render_frame_devtools_agent_host.cc

Issue 976313003: [DevTools] Expose DevToolsAgentHost for OOPIF, display it in chrome://inspect. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/devtools/render_frame_devtools_agent_host.cc
diff --git a/content/browser/devtools/render_frame_devtools_agent_host.cc b/content/browser/devtools/render_frame_devtools_agent_host.cc
index e5e7ce7a2ede15d91b7af435ee81215f7ccc8ee0..1a4cbd9bccdec4a13a851de30a5b3484a251df9f 100644
--- a/content/browser/devtools/render_frame_devtools_agent_host.cc
+++ b/content/browser/devtools/render_frame_devtools_agent_host.cc
@@ -80,6 +80,24 @@ DevToolsAgentHost::GetOrCreateFor(WebContents* web_contents) {
}
// static
+scoped_refptr<DevToolsAgentHost> RenderFrameDevToolsAgentHost::GetOrCreateFor(
+ RenderFrameHost* host) {
+ RenderFrameDevToolsAgentHost* result = FindAgentHost(host);
+ if (!result)
+ result = new RenderFrameDevToolsAgentHost(host);
+ return result;
+}
+
+// static
+void RenderFrameDevToolsAgentHost::AppendAgentHostForFrameIfApplicable(
+ std::vector<scoped_refptr<DevToolsAgentHost>>* result,
+ RenderFrameHost* host) {
+ RenderFrameHostImpl* rfh = static_cast<RenderFrameHostImpl*>(host);
+ if (rfh->IsRenderFrameLive() && rfh->IsFrameGroupRoot())
+ result->push_back(RenderFrameDevToolsAgentHost::GetOrCreateFor(rfh));
+}
+
+// static
bool DevToolsAgentHost::HasFor(WebContents* web_contents) {
return FindAgentHost(web_contents) != NULL;
}
@@ -91,25 +109,13 @@ bool DevToolsAgentHost::IsDebuggerAttached(WebContents* web_contents) {
}
//static
-std::vector<WebContents*> DevToolsAgentHostImpl::GetInspectableWebContents() {
- std::set<WebContents*> set;
- scoped_ptr<RenderWidgetHostIterator> widgets(
- RenderWidgetHost::GetRenderWidgetHosts());
- while (RenderWidgetHost* widget = widgets->GetNextHost()) {
- // Ignore processes that don't have a connection, such as crashed contents.
- if (!widget->GetProcess()->HasConnection())
- continue;
- if (!widget->IsRenderView())
- continue;
-
- RenderViewHost* rvh = RenderViewHost::From(widget);
- WebContents* web_contents = WebContents::FromRenderViewHost(rvh);
- if (web_contents)
- set.insert(web_contents);
- }
- std::vector<WebContents*> result(set.size());
- std::copy(set.begin(), set.end(), result.begin());
- return result;
+void RenderFrameDevToolsAgentHost::AddAllAgentHosts(
+ std::vector<scoped_refptr<DevToolsAgentHost>>* result) {
+ base::Callback<void(RenderFrameHost*)> callback = base::Bind(
+ RenderFrameDevToolsAgentHost::AppendAgentHostForFrameIfApplicable,
+ base::Unretained(result));
+ for (const auto& wc : WebContentsImpl::GetAllWebContents())
+ wc->ForEachFrame(callback);
}
// static
@@ -443,16 +449,20 @@ void RenderFrameDevToolsAgentHost::ConnectWebContents(WebContents* wc) {
}
DevToolsAgentHost::Type RenderFrameDevToolsAgentHost::GetType() {
- return TYPE_WEB_CONTENTS;
+ return IsChildFrame() ? TYPE_FRAME : TYPE_WEB_CONTENTS;
}
std::string RenderFrameDevToolsAgentHost::GetTitle() {
+ if (IsChildFrame())
+ return GetURL().spec();
if (WebContents* web_contents = GetWebContents())
return base::UTF16ToUTF8(web_contents->GetTitle());
return "";
}
GURL RenderFrameDevToolsAgentHost::GetURL() {
+ if (IsChildFrame())
+ return render_frame_host_->GetLastCommittedURL();
nasko 2015/03/05 15:20:48 Why not return this in all cases?
dgozman 2015/03/06 16:14:14 Done.
if (WebContents* web_contents = GetWebContents())
return web_contents->GetVisibleURL();
nasko 2015/03/05 15:20:48 This is a bit orthogonal, but why do you need the
dgozman 2015/03/06 16:14:14 You are right, using last committed url.
return render_frame_host_ ?
@@ -529,4 +539,8 @@ void RenderFrameDevToolsAgentHost::DispatchOnInspectorFrontend(
SendMessageToClient(message);
}
+bool RenderFrameDevToolsAgentHost::IsChildFrame() {
+ return render_frame_host_ && render_frame_host_->GetParent();
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698