Index: headless/lib/browser/headless_web_contents_impl.cc |
diff --git a/headless/lib/browser/headless_web_contents_impl.cc b/headless/lib/browser/headless_web_contents_impl.cc |
index ad43eb9b12e01dc9497c381538041e3892fdeeb7..aea5aefc8f15bce048c19a4e765d00e8884c8c0e 100644 |
--- a/headless/lib/browser/headless_web_contents_impl.cc |
+++ b/headless/lib/browser/headless_web_contents_impl.cc |
@@ -213,6 +213,35 @@ void HeadlessWebContentsImpl::RenderFrameCreated( |
service.service_factory, |
browser()->BrowserMainThread()); |
} |
+ |
+ std::string devtools_agent_host_id = |
+ content::DevToolsAgentHost::GetOrCreateFor(render_frame_host)->GetId(); |
+ render_frame_host_to_devtools_agent_host_id_[render_frame_host] = |
+ devtools_agent_host_id; |
+ devtools_agent_id_to_frame_tree_node_id_[devtools_agent_host_id] = |
+ render_frame_host->GetFrameTreeNodeId(); |
+} |
+ |
+void HeadlessWebContentsImpl::RenderFrameDeleted( |
+ content::RenderFrameHost* render_frame_host) { |
+ auto find_it = |
+ render_frame_host_to_devtools_agent_host_id_.find(render_frame_host); |
+ if (find_it == render_frame_host_to_devtools_agent_host_id_.end()) |
+ return; |
+ |
+ devtools_agent_id_to_frame_tree_node_id_.erase(find_it->second); |
+ render_frame_host_to_devtools_agent_host_id_.erase(find_it); |
+} |
+ |
+bool HeadlessWebContentsImpl::GetFrameTreeNodeIdForDevToolsAgentHostId( |
+ const std::string& devtools_agent_host_id, |
+ int* frame_tree_node_id) const { |
+ const auto& find_it = |
+ devtools_agent_id_to_frame_tree_node_id_.find(devtools_agent_host_id); |
+ if (find_it == devtools_agent_id_to_frame_tree_node_id_.end()) |
+ return false; |
+ *frame_tree_node_id = find_it->second; |
+ return true; |
} |
bool HeadlessWebContentsImpl::OpenURL(const GURL& url) { |