Index: components/safe_browsing/renderer/threat_dom_details.cc |
diff --git a/components/safe_browsing/renderer/threat_dom_details.cc b/components/safe_browsing/renderer/threat_dom_details.cc |
index b790b965ff24fe9d029aab9999e9d3a59483841c..0a36545b6c535e0ed57da21f4d0b95786ccc141a 100644 |
--- a/components/safe_browsing/renderer/threat_dom_details.cc |
+++ b/components/safe_browsing/renderer/threat_dom_details.cc |
@@ -146,6 +146,15 @@ void HandleElement( |
child_node.tag_name = element.TagName().Utf8(); |
child_node.parent = summary_node->url; |
+ // The body of an iframe may be in a different renderer. Look up the routing |
+ // ID of the local or remote frame and store it with the iframe node. If this |
+ // element is not a frame then the result of the lookup will be null. |
+ blink::WebFrame* subframe = blink::WebFrame::FromFrameOwnerElement(element); |
+ if (subframe) { |
+ child_node.child_frame_routing_id = |
+ content::RenderFrame::GetRoutingIdForWebFrame(subframe); |
+ } |
+ |
// Populate the element's attributes, but only collect the ones that are |
// configured in the finch study. |
const auto& tag_attribute_iter = std::find_if( |