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

Unified Diff: chrome/browser/safe_browsing/threat_details_unittest.cc

Issue 2713233002: Update ThreatDOMDetails to be able to collect non-resource HTML Elements based on their attributes. (Closed)
Patch Set: Sync Created 3 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
« no previous file with comments | « chrome/browser/safe_browsing/threat_details.cc ('k') | chrome/renderer/safe_browsing/threat_dom_details.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « chrome/browser/safe_browsing/threat_details.cc ('k') | chrome/renderer/safe_browsing/threat_dom_details.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698