OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/strings/stringprintf.h" | 5 #include "base/strings/stringprintf.h" |
6 #include "chrome/common/safe_browsing/safebrowsing_messages.h" | 6 #include "chrome/common/safe_browsing/safebrowsing_messages.h" |
7 #include "chrome/renderer/safe_browsing/malware_dom_details.h" | 7 #include "chrome/renderer/safe_browsing/threat_dom_details.h" |
8 #include "chrome/test/base/chrome_render_view_test.h" | 8 #include "chrome/test/base/chrome_render_view_test.h" |
9 #include "net/base/escape.h" | 9 #include "net/base/escape.h" |
10 | 10 |
11 typedef ChromeRenderViewTest MalwareDOMDetailsTest; | 11 typedef ChromeRenderViewTest ThreatDOMDetailsTest; |
12 | 12 |
13 | 13 TEST_F(ThreatDOMDetailsTest, Everything) { |
14 TEST_F(MalwareDOMDetailsTest, Everything) { | 14 scoped_ptr<safe_browsing::ThreatDOMDetails> details( |
15 scoped_ptr<safe_browsing::MalwareDOMDetails> details( | 15 safe_browsing::ThreatDOMDetails::Create(view_)); |
16 safe_browsing::MalwareDOMDetails::Create(view_)); | |
17 // Lower kMaxNodes for the test. Loading 500 subframes in a | 16 // Lower kMaxNodes for the test. Loading 500 subframes in a |
18 // debug build takes a while. | 17 // debug build takes a while. |
19 details->kMaxNodes = 50; | 18 details->kMaxNodes = 50; |
20 | 19 |
21 const char urlprefix[] = "data:text/html;charset=utf-8,"; | 20 const char urlprefix[] = "data:text/html;charset=utf-8,"; |
22 | 21 |
23 { // An page with an internal script | 22 { // An page with an internal script |
24 std::string html = "<html><head><script></script></head></html>"; | 23 std::string html = "<html><head><script></script></head></html>"; |
25 LoadHTML(html.c_str()); | 24 LoadHTML(html.c_str()); |
26 std::vector<SafeBrowsingHostMsg_MalwareDOMDetails_Node> params; | 25 std::vector<SafeBrowsingHostMsg_ThreatDOMDetails_Node> params; |
27 details->ExtractResources(¶ms); | 26 details->ExtractResources(¶ms); |
28 ASSERT_EQ(1u, params.size()); | 27 ASSERT_EQ(1u, params.size()); |
29 EXPECT_EQ(GURL(urlprefix + html), params[0].url); | 28 EXPECT_EQ(GURL(urlprefix + html), params[0].url); |
30 } | 29 } |
31 | 30 |
32 { // A page with 2 external scripts. | 31 { // A page with 2 external scripts. |
33 // Note: This part of the test causes 2 leaks: LEAK: 5 WebCoreNode | 32 // Note: This part of the test causes 2 leaks: LEAK: 5 WebCoreNode |
34 // LEAK: 2 CachedResource. | 33 // LEAK: 2 CachedResource. |
35 GURL script1_url("data:text/javascript;charset=utf-8,var a=1;"); | 34 GURL script1_url("data:text/javascript;charset=utf-8,var a=1;"); |
36 GURL script2_url("data:text/javascript;charset=utf-8,var b=2;"); | 35 GURL script2_url("data:text/javascript;charset=utf-8,var b=2;"); |
37 std::string html = "<html><head><script src=\"" + script1_url.spec() + | 36 std::string html = "<html><head><script src=\"" + script1_url.spec() + |
38 "\"></script><script src=\"" + script2_url.spec() + | 37 "\"></script><script src=\"" + script2_url.spec() + |
39 "\"></script></head></html>"; | 38 "\"></script></head></html>"; |
40 GURL url(urlprefix + html); | 39 GURL url(urlprefix + html); |
41 | 40 |
42 LoadHTML(html.c_str()); | 41 LoadHTML(html.c_str()); |
43 std::vector<SafeBrowsingHostMsg_MalwareDOMDetails_Node> params; | 42 std::vector<SafeBrowsingHostMsg_ThreatDOMDetails_Node> params; |
44 details->ExtractResources(¶ms); | 43 details->ExtractResources(¶ms); |
45 ASSERT_EQ(3u, params.size()); | 44 ASSERT_EQ(3u, params.size()); |
46 EXPECT_EQ(script1_url, params[0].url); | 45 EXPECT_EQ(script1_url, params[0].url); |
47 EXPECT_EQ("SCRIPT", params[0].tag_name); | 46 EXPECT_EQ("SCRIPT", params[0].tag_name); |
48 EXPECT_EQ(script2_url, params[1].url); | 47 EXPECT_EQ(script2_url, params[1].url); |
49 EXPECT_EQ("SCRIPT", params[0].tag_name); | 48 EXPECT_EQ("SCRIPT", params[0].tag_name); |
50 EXPECT_EQ(url, params[2].url); | 49 EXPECT_EQ(url, params[2].url); |
51 } | 50 } |
52 | 51 |
53 { // A page with an iframe which in turn contains an iframe. | 52 { // A page with an iframe which in turn contains an iframe. |
54 // html | 53 // html |
55 // \ iframe1 | 54 // \ iframe1 |
56 // \ iframe2 | 55 // \ iframe2 |
57 std::string iframe2_html = "<html><body>iframe2</body></html>"; | 56 std::string iframe2_html = "<html><body>iframe2</body></html>"; |
58 GURL iframe2_url(urlprefix + iframe2_html); | 57 GURL iframe2_url(urlprefix + iframe2_html); |
59 std::string iframe1_html = "<iframe src=\"" + net::EscapeForHTML( | 58 std::string iframe1_html = "<iframe src=\"" + |
60 iframe2_url.spec()) + "\"></iframe>"; | 59 net::EscapeForHTML(iframe2_url.spec()) + |
| 60 "\"></iframe>"; |
61 GURL iframe1_url(urlprefix + iframe1_html); | 61 GURL iframe1_url(urlprefix + iframe1_html); |
62 std::string html = "<html><head><iframe src=\"" + net::EscapeForHTML( | 62 std::string html = "<html><head><iframe src=\"" + |
63 iframe1_url.spec()) + "\"></iframe></head></html>"; | 63 net::EscapeForHTML(iframe1_url.spec()) + |
| 64 "\"></iframe></head></html>"; |
64 GURL url(urlprefix + html); | 65 GURL url(urlprefix + html); |
65 | 66 |
66 LoadHTML(html.c_str()); | 67 LoadHTML(html.c_str()); |
67 std::vector<SafeBrowsingHostMsg_MalwareDOMDetails_Node> params; | 68 std::vector<SafeBrowsingHostMsg_ThreatDOMDetails_Node> params; |
68 details->ExtractResources(¶ms); | 69 details->ExtractResources(¶ms); |
69 ASSERT_EQ(5u, params.size()); | 70 ASSERT_EQ(5u, params.size()); |
70 | 71 |
71 EXPECT_EQ(iframe1_url, params[0].url); | 72 EXPECT_EQ(iframe1_url, params[0].url); |
72 EXPECT_EQ(url, params[0].parent); | 73 EXPECT_EQ(url, params[0].parent); |
73 EXPECT_EQ(0u, params[0].children.size()); | 74 EXPECT_EQ(0u, params[0].children.size()); |
74 EXPECT_EQ("IFRAME", params[0].tag_name); | 75 EXPECT_EQ("IFRAME", params[0].tag_name); |
75 | 76 |
76 EXPECT_EQ(url, params[1].url); | 77 EXPECT_EQ(url, params[1].url); |
77 EXPECT_EQ(GURL(), params[1].parent); | 78 EXPECT_EQ(GURL(), params[1].parent); |
(...skipping 11 matching lines...) Expand all Loading... |
89 EXPECT_EQ(iframe1_url, params[3].url); | 90 EXPECT_EQ(iframe1_url, params[3].url); |
90 EXPECT_EQ(GURL(), params[3].parent); | 91 EXPECT_EQ(GURL(), params[3].parent); |
91 EXPECT_EQ(1u, params[3].children.size()); | 92 EXPECT_EQ(1u, params[3].children.size()); |
92 EXPECT_EQ(iframe2_url, params[3].children[0]); | 93 EXPECT_EQ(iframe2_url, params[3].children[0]); |
93 | 94 |
94 EXPECT_EQ(iframe2_url, params[4].url); | 95 EXPECT_EQ(iframe2_url, params[4].url); |
95 EXPECT_EQ(GURL(), params[4].parent); | 96 EXPECT_EQ(GURL(), params[4].parent); |
96 EXPECT_EQ(0u, params[4].children.size()); | 97 EXPECT_EQ(0u, params[4].children.size()); |
97 } | 98 } |
98 | 99 |
99 { // >50 subframes, to verify kMaxNodes. | 100 { // >50 subframes, to verify kMaxNodes. |
100 std::string html; | 101 std::string html; |
101 for (int i = 0; i < 55; ++i) { | 102 for (int i = 0; i < 55; ++i) { |
102 // The iframe contents is just a number. | 103 // The iframe contents is just a number. |
103 GURL iframe_url(base::StringPrintf("%s%d", urlprefix, i)); | 104 GURL iframe_url(base::StringPrintf("%s%d", urlprefix, i)); |
104 html += "<iframe src=\"" + net::EscapeForHTML(iframe_url.spec()) + | 105 html += "<iframe src=\"" + net::EscapeForHTML(iframe_url.spec()) + |
105 "\"></iframe>"; | 106 "\"></iframe>"; |
106 } | 107 } |
107 GURL url(urlprefix + html); | 108 GURL url(urlprefix + html); |
108 | 109 |
109 LoadHTML(html.c_str()); | 110 LoadHTML(html.c_str()); |
110 std::vector<SafeBrowsingHostMsg_MalwareDOMDetails_Node> params; | 111 std::vector<SafeBrowsingHostMsg_ThreatDOMDetails_Node> params; |
111 details->ExtractResources(¶ms); | 112 details->ExtractResources(¶ms); |
112 ASSERT_EQ(51u, params.size()); | 113 ASSERT_EQ(51u, params.size()); |
113 } | 114 } |
114 | 115 |
115 { // A page with >50 scripts, to verify kMaxNodes. | 116 { // A page with >50 scripts, to verify kMaxNodes. |
116 std::string html; | 117 std::string html; |
117 for (int i = 0; i < 55; ++i) { | 118 for (int i = 0; i < 55; ++i) { |
118 // The iframe contents is just a number. | 119 // The iframe contents is just a number. |
119 GURL script_url(base::StringPrintf("%s%d", urlprefix, i)); | 120 GURL script_url(base::StringPrintf("%s%d", urlprefix, i)); |
120 html += "<script src=\"" + net::EscapeForHTML(script_url.spec()) + | 121 html += "<script src=\"" + net::EscapeForHTML(script_url.spec()) + |
121 "\"></script>"; | 122 "\"></script>"; |
122 } | 123 } |
123 GURL url(urlprefix + html); | 124 GURL url(urlprefix + html); |
124 | 125 |
125 LoadHTML(html.c_str()); | 126 LoadHTML(html.c_str()); |
126 std::vector<SafeBrowsingHostMsg_MalwareDOMDetails_Node> params; | 127 std::vector<SafeBrowsingHostMsg_ThreatDOMDetails_Node> params; |
127 details->ExtractResources(¶ms); | 128 details->ExtractResources(¶ms); |
128 ASSERT_EQ(51u, params.size()); | 129 ASSERT_EQ(51u, params.size()); |
129 } | 130 } |
130 } | 131 } |
OLD | NEW |