Index: chrome/browser/safe_browsing/threat_details_unittest.cc |
diff --git a/chrome/browser/safe_browsing/threat_details_unittest.cc b/chrome/browser/safe_browsing/threat_details_unittest.cc |
index 4e9ef9cdcca8c424ba402f3c12447b69386ae1d7..30077b6d729e59c479ccb8f5e05570272269969e 100644 |
--- a/chrome/browser/safe_browsing/threat_details_unittest.cc |
+++ b/chrome/browser/safe_browsing/threat_details_unittest.cc |
@@ -540,17 +540,29 @@ TEST_F(ThreatDetailsTest, ThreatDOMDetails) { |
// Tests creating a threat report when receiving data from multiple renderers. |
// We use three layers in this test: |
// kDOMParentURL |
-// \- <iframe src=kDOMChildURL> |
-// \- <script src=kDOMChildURL2> |
+// \- <div id=outer> |
+// \- <iframe src=kDOMChildURL> |
+// \- <div id=inner/> - div and script are at the same level. |
+// \- <script src=kDOMChildURL2> |
TEST_F(ThreatDetailsTest, ThreatDOMDetails_MultipleFrames) { |
// Define two sets of DOM nodes - one for an outer page containing an iframe, |
// and then another for the inner page containing the contents of that iframe. |
std::vector<SafeBrowsingHostMsg_ThreatDOMDetails_Node> outer_params; |
- SafeBrowsingHostMsg_ThreatDOMDetails_Node outer_child_node; |
- outer_child_node.url = GURL(kDOMChildURL); |
- outer_child_node.tag_name = "iframe"; |
- outer_child_node.parent = GURL(kDOMParentURL); |
- outer_params.push_back(outer_child_node); |
+ SafeBrowsingHostMsg_ThreatDOMDetails_Node outer_child_div; |
+ outer_child_div.node_id = 1; |
+ outer_child_div.child_node_ids.push_back(2); |
+ outer_child_div.tag_name = "div"; |
+ outer_child_div.parent = GURL(kDOMParentURL); |
+ outer_params.push_back(outer_child_div); |
+ |
+ SafeBrowsingHostMsg_ThreatDOMDetails_Node outer_child_iframe; |
+ outer_child_iframe.node_id = 2; |
+ outer_child_iframe.parent_node_id = 1; |
+ outer_child_iframe.url = GURL(kDOMChildURL); |
+ outer_child_iframe.tag_name = "iframe"; |
+ outer_child_iframe.parent = GURL(kDOMParentURL); |
+ outer_params.push_back(outer_child_iframe); |
+ |
SafeBrowsingHostMsg_ThreatDOMDetails_Node outer_summary_node; |
outer_summary_node.url = GURL(kDOMParentURL); |
outer_summary_node.children.push_back(GURL(kDOMChildURL)); |
@@ -558,11 +570,19 @@ TEST_F(ThreatDetailsTest, ThreatDOMDetails_MultipleFrames) { |
// Now define some more nodes for the body of the iframe. |
std::vector<SafeBrowsingHostMsg_ThreatDOMDetails_Node> inner_params; |
- SafeBrowsingHostMsg_ThreatDOMDetails_Node inner_child_node; |
- inner_child_node.url = GURL(kDOMChildUrl2); |
- inner_child_node.tag_name = "script"; |
- inner_child_node.parent = GURL(kDOMChildURL); |
- inner_params.push_back(inner_child_node); |
+ SafeBrowsingHostMsg_ThreatDOMDetails_Node inner_child_div; |
+ inner_child_div.node_id = 1; |
+ inner_child_div.tag_name = "div"; |
+ inner_child_div.parent = GURL(kDOMChildURL); |
+ inner_params.push_back(inner_child_div); |
+ |
+ SafeBrowsingHostMsg_ThreatDOMDetails_Node inner_child_script; |
+ inner_child_script.node_id = 2; |
+ inner_child_script.url = GURL(kDOMChildUrl2); |
+ inner_child_script.tag_name = "script"; |
+ inner_child_script.parent = GURL(kDOMChildURL); |
+ inner_params.push_back(inner_child_script); |
+ |
SafeBrowsingHostMsg_ThreatDOMDetails_Node inner_summary_node; |
inner_summary_node.url = GURL(kDOMChildURL); |
inner_summary_node.children.push_back(GURL(kDOMChildUrl2)); |
@@ -606,20 +626,30 @@ TEST_F(ThreatDetailsTest, ThreatDOMDetails_MultipleFrames) { |
expected.set_complete(false); // Since the cache was missing. |
- HTMLElement* elem_dom_child = expected.add_dom(); |
- elem_dom_child->set_id(0); |
- elem_dom_child->set_tag("IFRAME"); |
- elem_dom_child->set_resource_id(res_dom_child->id()); |
- elem_dom_child->add_attribute()->set_name("SRC"); |
- elem_dom_child->mutable_attribute(0)->set_value(kDOMChildURL); |
- elem_dom_child->add_child_ids(1); |
- |
- HTMLElement* elem_dom_child2 = expected.add_dom(); |
- elem_dom_child2->set_id(1); |
- elem_dom_child2->set_tag("SCRIPT"); |
- elem_dom_child2->set_resource_id(res_dom_child2->id()); |
- elem_dom_child2->add_attribute()->set_name("SRC"); |
- elem_dom_child2->mutable_attribute(0)->set_value(kDOMChildUrl2); |
+ HTMLElement* elem_dom_outer_div = expected.add_dom(); |
+ elem_dom_outer_div->set_id(0); |
+ elem_dom_outer_div->set_tag("DIV"); |
+ elem_dom_outer_div->add_child_ids(1); |
+ |
+ HTMLElement* elem_dom_outer_iframe = expected.add_dom(); |
+ elem_dom_outer_iframe->set_id(1); |
+ elem_dom_outer_iframe->set_tag("IFRAME"); |
+ elem_dom_outer_iframe->set_resource_id(res_dom_child->id()); |
+ elem_dom_outer_iframe->add_attribute()->set_name("SRC"); |
+ elem_dom_outer_iframe->mutable_attribute(0)->set_value(kDOMChildURL); |
+ elem_dom_outer_iframe->add_child_ids(2); |
+ elem_dom_outer_iframe->add_child_ids(3); |
+ |
+ HTMLElement* elem_dom_inner_div = expected.add_dom(); |
+ elem_dom_inner_div->set_id(2); |
+ elem_dom_inner_div->set_tag("DIV"); |
+ |
+ HTMLElement* elem_dom_inner_script = expected.add_dom(); |
+ elem_dom_inner_script->set_id(3); |
+ elem_dom_inner_script->set_tag("SCRIPT"); |
+ elem_dom_inner_script->set_resource_id(res_dom_child2->id()); |
+ elem_dom_inner_script->add_attribute()->set_name("SRC"); |
+ elem_dom_inner_script->mutable_attribute(0)->set_value(kDOMChildUrl2); |
content::WebContentsTester::For(web_contents()) |
->NavigateAndCommit(GURL(kLandingURL)); |
@@ -647,8 +677,8 @@ TEST_F(ThreatDetailsTest, ThreatDOMDetails_MultipleFrames) { |
// Try again but with the messages coming in a different order. The IDs change |
// slightly, but everything else remains the same. |
{ |
- // Adjust the expected IDs: the inner params come first, so DomChild2 and |
- // DomChild appear before DomParent |
+ // Adjust the expected IDs: the inner params come first, so InnerScript and |
+ // appear before DomParent |
res_dom_child2->set_id(2); |
res_dom_child2->set_parent_id(3); |
res_dom_child->set_id(3); |
@@ -659,14 +689,20 @@ TEST_F(ThreatDetailsTest, ThreatDOMDetails_MultipleFrames) { |
res_dom_parent->clear_child_ids(); |
res_dom_parent->add_child_ids(3); |
- // Also adjust the elements - they change order since DomChild2 comes in |
- // first. |
- elem_dom_child2->set_id(0); |
- elem_dom_child2->set_resource_id(res_dom_child2->id()); |
- elem_dom_child->set_id(1); |
- elem_dom_child->set_resource_id(res_dom_child->id()); |
- elem_dom_child->clear_child_ids(); |
- elem_dom_child->add_child_ids(0); |
+ // Also adjust the elements - they change order since InnerDiv and |
+ // InnerScript come in first. |
+ elem_dom_inner_div->set_id(0); |
+ elem_dom_inner_script->set_id(1); |
+ elem_dom_inner_script->set_resource_id(res_dom_child2->id()); |
+ |
+ elem_dom_outer_div->set_id(2); |
+ elem_dom_outer_div->clear_child_ids(); |
+ elem_dom_outer_div->add_child_ids(3); |
+ elem_dom_outer_iframe->set_id(3); |
+ elem_dom_outer_iframe->set_resource_id(res_dom_child->id()); |
+ elem_dom_outer_iframe->clear_child_ids(); |
+ elem_dom_outer_iframe->add_child_ids(0); |
+ elem_dom_outer_iframe->add_child_ids(1); |
scoped_refptr<ThreatDetailsWrap> report = new ThreatDetailsWrap( |
ui_manager_.get(), web_contents(), resource, NULL); |