| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/browser/chrome_notification_types.h" | 6 #include "chrome/browser/chrome_notification_types.h" |
| 7 #include "chrome/browser/download/download_prefs.h" | 7 #include "chrome/browser/download/download_prefs.h" |
| 8 #include "chrome/browser/profiles/profile.h" | 8 #include "chrome/browser/profiles/profile.h" |
| 9 #include "chrome/browser/safe_browsing/download_protection_service.h" | 9 #include "chrome/browser/safe_browsing/download_protection_service.h" |
| 10 #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer.h" | 10 #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer.h" |
| (...skipping 1036 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1047 test_server_ip, // ip_address | 1047 test_server_ip, // ip_address |
| 1048 GURL(), // referrer_url | 1048 GURL(), // referrer_url |
| 1049 GURL(), // referrer_main_frame_url | 1049 GURL(), // referrer_main_frame_url |
| 1050 false, // is_retargeting | 1050 false, // is_retargeting |
| 1051 referrer_chain[1]); | 1051 referrer_chain[1]); |
| 1052 } | 1052 } |
| 1053 | 1053 |
| 1054 // Click a link in a subframe and start download. | 1054 // Click a link in a subframe and start download. |
| 1055 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 1055 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| 1056 SubFrameDirectDownload) { | 1056 SubFrameDirectDownload) { |
| 1057 ui_test_utils::NavigateToURL( | 1057 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
| 1058 browser(), embedded_test_server()->GetURL(kMultiFrameTestURL)); | 1058 ClickTestLink("sub_frame_download_attribution", 1, initial_url); |
| 1059 std::string test_name = | 1059 std::string test_name = |
| 1060 base::StringPrintf("%s', '%s", "iframe1", "iframe_direct_download"); | 1060 base::StringPrintf("%s', '%s", "iframe1", "iframe_direct_download"); |
| 1061 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | |
| 1062 GURL multi_frame_test_url = | 1061 GURL multi_frame_test_url = |
| 1063 embedded_test_server()->GetURL(kMultiFrameTestURL); | 1062 embedded_test_server()->GetURL(kMultiFrameTestURL); |
| 1064 GURL iframe_url = embedded_test_server()->GetURL(kIframeDirectDownloadURL); | 1063 GURL iframe_url = embedded_test_server()->GetURL(kIframeDirectDownloadURL); |
| 1065 ClickTestLink(test_name.c_str(), 1, iframe_url); | 1064 ClickTestLink(test_name.c_str(), 1, iframe_url); |
| 1066 GURL iframe_retargeting_url = | 1065 GURL iframe_retargeting_url = |
| 1067 embedded_test_server()->GetURL(kIframeRetargetingURL); | 1066 embedded_test_server()->GetURL(kIframeRetargetingURL); |
| 1068 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 1067 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
| 1069 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 1068 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
| 1070 auto nav_map = navigation_map(); | 1069 auto nav_map = navigation_map(); |
| 1071 ASSERT_TRUE(nav_map); | 1070 ASSERT_TRUE(nav_map); |
| 1072 ASSERT_EQ(std::size_t(5), nav_map->size()); | 1071 ASSERT_EQ(std::size_t(5), nav_map->size()); |
| 1073 ASSERT_EQ(1U, nav_map->at(multi_frame_test_url).size()); | 1072 ASSERT_EQ(1U, nav_map->at(multi_frame_test_url).size()); |
| 1074 ASSERT_EQ(1U, nav_map->at(iframe_url).size()); | 1073 ASSERT_EQ(1U, nav_map->at(iframe_url).size()); |
| 1075 ASSERT_EQ(1U, nav_map->at(iframe_retargeting_url).size()); | 1074 ASSERT_EQ(1U, nav_map->at(iframe_retargeting_url).size()); |
| 1076 ASSERT_EQ(1U, nav_map->at(download_url).size()); | 1075 ASSERT_EQ(1U, nav_map->at(download_url).size()); |
| 1077 ASSERT_EQ(1U, nav_map->at(initial_url).size()); | 1076 ASSERT_EQ(1U, nav_map->at(initial_url).size()); |
| 1078 VerifyNavigationEvent(GURL(), // source_url | 1077 VerifyNavigationEvent(GURL(), // source_url |
| 1079 GURL(), // source_main_frame_url | 1078 GURL(), // source_main_frame_url |
| 1080 initial_url, // original_request_url | 1079 initial_url, // original_request_url |
| 1081 initial_url, // destination_url | 1080 initial_url, // destination_url |
| 1082 true, // is_user_initiated, | 1081 true, // is_user_initiated, |
| 1083 true, // has_committed | 1082 true, // has_committed |
| 1084 false, // has_server_redirect | 1083 false, // has_server_redirect |
| 1085 nav_map->at(initial_url).at(0)); | 1084 nav_map->at(initial_url).at(0)); |
| 1086 VerifyNavigationEvent(GURL(), // source_url | 1085 VerifyNavigationEvent(initial_url, // source_url |
| 1087 GURL(), // source_main_frame_url | 1086 initial_url, // source_main_frame_url |
| 1088 multi_frame_test_url, // original_request_url | 1087 multi_frame_test_url, // original_request_url |
| 1089 multi_frame_test_url, // destination_url | 1088 multi_frame_test_url, // destination_url |
| 1090 true, // is_user_initiated, | 1089 true, // is_user_initiated, |
| 1091 true, // has_committed | 1090 true, // has_committed |
| 1092 false, // has_server_redirect | 1091 false, // has_server_redirect |
| 1093 nav_map->at(multi_frame_test_url).at(0)); | 1092 nav_map->at(multi_frame_test_url).at(0)); |
| 1094 VerifyNavigationEvent(GURL(), // source_url | 1093 VerifyNavigationEvent(GURL(), // source_url |
| 1095 multi_frame_test_url, // source_main_frame_url | 1094 multi_frame_test_url, // source_main_frame_url |
| 1096 iframe_url, // original_request_url | 1095 iframe_url, // original_request_url |
| 1097 iframe_url, // destination_url | 1096 iframe_url, // destination_url |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1111 multi_frame_test_url, // source_main_frame_url | 1110 multi_frame_test_url, // source_main_frame_url |
| 1112 download_url, // original_request_url | 1111 download_url, // original_request_url |
| 1113 download_url, // destination_url | 1112 download_url, // destination_url |
| 1114 true, // is_user_initiated, | 1113 true, // is_user_initiated, |
| 1115 false, // has_committed | 1114 false, // has_committed |
| 1116 false, // has_server_redirect | 1115 false, // has_server_redirect |
| 1117 nav_map->at(download_url).at(0)); | 1116 nav_map->at(download_url).at(0)); |
| 1118 VerifyHostToIpMap(); | 1117 VerifyHostToIpMap(); |
| 1119 | 1118 |
| 1120 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 1119 auto referrer_chain = IdentifyReferrerChain(GetDownload()); |
| 1121 ASSERT_EQ(2U, referrer_chain.size()); | 1120 ASSERT_EQ(4U, referrer_chain.size()); |
| 1122 VerifyReferrerChainEntry(download_url, // url | 1121 VerifyReferrerChainEntry(download_url, // url |
| 1123 ReferrerChainEntry::DOWNLOAD_URL, // type | 1122 ReferrerChainEntry::DOWNLOAD_URL, // type |
| 1124 test_server_ip, // ip_address | 1123 test_server_ip, // ip_address |
| 1125 iframe_url, // referrer_url | 1124 iframe_url, // referrer_url |
| 1126 multi_frame_test_url, // referrer_main_frame_url | 1125 multi_frame_test_url, // referrer_main_frame_url |
| 1127 false, // is_retargeting | 1126 false, // is_retargeting |
| 1128 referrer_chain[0]); | 1127 referrer_chain[0]); |
| 1129 VerifyReferrerChainEntry(iframe_url, // url | 1128 VerifyReferrerChainEntry(iframe_url, // url |
| 1130 ReferrerChainEntry::LANDING_PAGE, // type | 1129 ReferrerChainEntry::LANDING_PAGE, // type |
| 1131 test_server_ip, // ip_address | 1130 test_server_ip, // ip_address |
| 1132 GURL(), // referrer_url | 1131 GURL(), // referrer_url |
| 1133 multi_frame_test_url, // referrer_main_frame_url | 1132 multi_frame_test_url, // referrer_main_frame_url |
| 1134 false, // is_retargeting | 1133 false, // is_retargeting |
| 1135 referrer_chain[1]); | 1134 referrer_chain[1]); |
| 1135 VerifyReferrerChainEntry(multi_frame_test_url, // url |
| 1136 ReferrerChainEntry::CLIENT_REDIRECT, // type |
| 1137 test_server_ip, // ip_address |
| 1138 initial_url, // referrer_url |
| 1139 initial_url, // referrer_main_frame_url |
| 1140 false, // is_retargeting |
| 1141 referrer_chain[2]); |
| 1142 VerifyReferrerChainEntry(initial_url, // url |
| 1143 ReferrerChainEntry::LANDING_REFERRER, // type |
| 1144 test_server_ip, // ip_address |
| 1145 GURL(), // referrer_url |
| 1146 GURL(), // referrer_main_frame_url |
| 1147 false, // is_retargeting |
| 1148 referrer_chain[3]); |
| 1136 } | 1149 } |
| 1137 | 1150 |
| 1138 // Click a link in a subframe and open download in a new tab. | 1151 // Click a link in a subframe and open download in a new tab. |
| 1139 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 1152 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| 1140 SubFrameNewTabDownload) { | 1153 SubFrameNewTabDownload) { |
| 1141 ui_test_utils::NavigateToURL( | 1154 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
| 1142 browser(), embedded_test_server()->GetURL(kMultiFrameTestURL)); | 1155 ClickTestLink("sub_frame_download_attribution", 1, initial_url); |
| 1143 std::string test_name = | 1156 std::string test_name = |
| 1144 base::StringPrintf("%s', '%s", "iframe2", "iframe_new_tab_download"); | 1157 base::StringPrintf("%s', '%s", "iframe2", "iframe_new_tab_download"); |
| 1145 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | |
| 1146 GURL multi_frame_test_url = | 1158 GURL multi_frame_test_url = |
| 1147 embedded_test_server()->GetURL(kMultiFrameTestURL); | 1159 embedded_test_server()->GetURL(kMultiFrameTestURL); |
| 1148 GURL iframe_url = embedded_test_server()->GetURL(kIframeDirectDownloadURL); | 1160 GURL iframe_url = embedded_test_server()->GetURL(kIframeDirectDownloadURL); |
| 1149 GURL iframe_retargeting_url = | 1161 GURL iframe_retargeting_url = |
| 1150 embedded_test_server()->GetURL(kIframeRetargetingURL); | 1162 embedded_test_server()->GetURL(kIframeRetargetingURL); |
| 1151 ClickTestLink(test_name.c_str(), 2, iframe_retargeting_url); | 1163 ClickTestLink(test_name.c_str(), 2, iframe_retargeting_url); |
| 1152 GURL blank_url = GURL(url::kAboutBlankURL); | 1164 GURL blank_url = GURL(url::kAboutBlankURL); |
| 1153 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 1165 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
| 1154 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 1166 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
| 1155 auto nav_map = navigation_map(); | 1167 auto nav_map = navigation_map(); |
| 1156 ASSERT_TRUE(nav_map); | 1168 ASSERT_TRUE(nav_map); |
| 1157 ASSERT_EQ(std::size_t(6), nav_map->size()); | 1169 ASSERT_EQ(6U, nav_map->size()); |
| 1158 ASSERT_EQ(1U, nav_map->at(multi_frame_test_url).size()); | 1170 ASSERT_EQ(1U, nav_map->at(multi_frame_test_url).size()); |
| 1159 ASSERT_EQ(1U, nav_map->at(iframe_url).size()); | 1171 ASSERT_EQ(1U, nav_map->at(iframe_url).size()); |
| 1160 ASSERT_EQ(1U, nav_map->at(iframe_retargeting_url).size()); | 1172 ASSERT_EQ(1U, nav_map->at(iframe_retargeting_url).size()); |
| 1161 ASSERT_EQ(2U, nav_map->at(blank_url).size()); | 1173 ASSERT_EQ(2U, nav_map->at(blank_url).size()); |
| 1162 ASSERT_EQ(1U, nav_map->at(download_url).size()); | 1174 ASSERT_EQ(1U, nav_map->at(download_url).size()); |
| 1163 ASSERT_EQ(1U, nav_map->at(initial_url).size()); | 1175 ASSERT_EQ(1U, nav_map->at(initial_url).size()); |
| 1164 VerifyNavigationEvent(GURL(), // source_url | 1176 VerifyNavigationEvent(GURL(), // source_url |
| 1165 GURL(), // source_main_frame_url | 1177 GURL(), // source_main_frame_url |
| 1166 initial_url, // original_request_url | 1178 initial_url, // original_request_url |
| 1167 initial_url, // destination_url | 1179 initial_url, // destination_url |
| 1168 true, // is_user_initiated, | 1180 true, // is_user_initiated, |
| 1169 true, // has_committed | 1181 true, // has_committed |
| 1170 false, // has_server_redirect | 1182 false, // has_server_redirect |
| 1171 nav_map->at(initial_url).at(0)); | 1183 nav_map->at(initial_url).at(0)); |
| 1172 VerifyNavigationEvent(GURL(), // source_url | 1184 VerifyNavigationEvent(initial_url, // source_url |
| 1173 GURL(), // source_main_frame_url | 1185 initial_url, // source_main_frame_url |
| 1174 multi_frame_test_url, // original_request_url | 1186 multi_frame_test_url, // original_request_url |
| 1175 multi_frame_test_url, // destination_url | 1187 multi_frame_test_url, // destination_url |
| 1176 true, // is_user_initiated, | 1188 true, // is_user_initiated, |
| 1177 true, // has_committed | 1189 true, // has_committed |
| 1178 false, // has_server_redirect | 1190 false, // has_server_redirect |
| 1179 nav_map->at(multi_frame_test_url).at(0)); | 1191 nav_map->at(multi_frame_test_url).at(0)); |
| 1180 VerifyNavigationEvent(GURL(), // source_url | 1192 VerifyNavigationEvent(GURL(), // source_url |
| 1181 multi_frame_test_url, // source_main_frame_url | 1193 multi_frame_test_url, // source_main_frame_url |
| 1182 iframe_url, // original_request_url | 1194 iframe_url, // original_request_url |
| 1183 iframe_url, // destination_url | 1195 iframe_url, // destination_url |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1213 blank_url, // source_main_frame_url | 1225 blank_url, // source_main_frame_url |
| 1214 download_url, // original_request_url | 1226 download_url, // original_request_url |
| 1215 download_url, // destination_url | 1227 download_url, // destination_url |
| 1216 false, // is_user_initiated, | 1228 false, // is_user_initiated, |
| 1217 false, // has_committed | 1229 false, // has_committed |
| 1218 false, // has_server_redirect | 1230 false, // has_server_redirect |
| 1219 nav_map->at(download_url).at(0)); | 1231 nav_map->at(download_url).at(0)); |
| 1220 VerifyHostToIpMap(); | 1232 VerifyHostToIpMap(); |
| 1221 | 1233 |
| 1222 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 1234 auto referrer_chain = IdentifyReferrerChain(GetDownload()); |
| 1223 EXPECT_EQ(std::size_t(3), referrer_chain.size()); | 1235 EXPECT_EQ(5U, referrer_chain.size()); |
| 1224 VerifyReferrerChainEntry(download_url, // url | 1236 VerifyReferrerChainEntry(download_url, // url |
| 1225 ReferrerChainEntry::DOWNLOAD_URL, // type | 1237 ReferrerChainEntry::DOWNLOAD_URL, // type |
| 1226 test_server_ip, // ip_address | 1238 test_server_ip, // ip_address |
| 1227 blank_url, // referrer_url | 1239 blank_url, // referrer_url |
| 1228 blank_url, // referrer_main_frame_url | 1240 blank_url, // referrer_main_frame_url |
| 1229 false, // is_retargeting | 1241 false, // is_retargeting |
| 1230 referrer_chain[0]); | 1242 referrer_chain[0]); |
| 1231 VerifyReferrerChainEntry(blank_url, // url | 1243 VerifyReferrerChainEntry(blank_url, // url |
| 1232 ReferrerChainEntry::CLIENT_REDIRECT, // type | 1244 ReferrerChainEntry::CLIENT_REDIRECT, // type |
| 1233 "", // ip_address | 1245 "", // ip_address |
| 1234 iframe_retargeting_url, // referrer_url | 1246 iframe_retargeting_url, // referrer_url |
| 1235 multi_frame_test_url, // referrer_main_frame_url | 1247 multi_frame_test_url, // referrer_main_frame_url |
| 1236 true, // is_retargeting | 1248 true, // is_retargeting |
| 1237 referrer_chain[1]); | 1249 referrer_chain[1]); |
| 1238 VerifyReferrerChainEntry(iframe_retargeting_url, // url | 1250 VerifyReferrerChainEntry(iframe_retargeting_url, // url |
| 1239 ReferrerChainEntry::LANDING_PAGE, // type | 1251 ReferrerChainEntry::LANDING_PAGE, // type |
| 1240 test_server_ip, // ip_address | 1252 test_server_ip, // ip_address |
| 1241 GURL(), // referrer_url | 1253 GURL(), // referrer_url |
| 1242 multi_frame_test_url, // referrer_main_frame_url | 1254 multi_frame_test_url, // referrer_main_frame_url |
| 1243 false, // is_retargeting | 1255 false, // is_retargeting |
| 1244 referrer_chain[2]); | 1256 referrer_chain[2]); |
| 1257 VerifyReferrerChainEntry(multi_frame_test_url, // url |
| 1258 ReferrerChainEntry::CLIENT_REDIRECT, // type |
| 1259 test_server_ip, // ip_address |
| 1260 initial_url, // referrer_url |
| 1261 initial_url, // referrer_main_frame_url |
| 1262 false, // is_retargeting |
| 1263 referrer_chain[3]); |
| 1264 VerifyReferrerChainEntry(initial_url, // url |
| 1265 ReferrerChainEntry::LANDING_REFERRER, // type |
| 1266 test_server_ip, // ip_address |
| 1267 GURL(), // referrer_url |
| 1268 GURL(), // referrer_main_frame_url |
| 1269 false, // is_retargeting |
| 1270 referrer_chain[4]); |
| 1245 } | 1271 } |
| 1246 | 1272 |
| 1247 // Click a link which redirects to the landing page, and then click on the | 1273 // Click a link which redirects to the landing page, and then click on the |
| 1248 // landing page to trigger download. | 1274 // landing page to trigger download. |
| 1249 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, CompleteReferrerChain) { | 1275 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, CompleteReferrerChain) { |
| 1250 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 1276 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
| 1251 ClickTestLink("complete_referrer_chain", 2, initial_url); | 1277 ClickTestLink("complete_referrer_chain", 2, initial_url); |
| 1252 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); | 1278 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); |
| 1253 GURL landing_url = embedded_test_server()->GetURL(kLandingURL); | 1279 GURL landing_url = embedded_test_server()->GetURL(kLandingURL); |
| 1254 ClickTestLink("download_on_landing_page", 1, landing_url); | 1280 ClickTestLink("download_on_landing_page", 1, landing_url); |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1491 yesterday, embedded_test_server()->host_port_pair().host())); | 1517 yesterday, embedded_test_server()->host_port_pair().host())); |
| 1492 ASSERT_EQ(1U, ip_map->at(test_server_host).size()); | 1518 ASSERT_EQ(1U, ip_map->at(test_server_host).size()); |
| 1493 ClickTestLink("direct_download", 1, initial_url); | 1519 ClickTestLink("direct_download", 1, initial_url); |
| 1494 EXPECT_EQ(1U, ip_map->at(test_server_host).size()); | 1520 EXPECT_EQ(1U, ip_map->at(test_server_host).size()); |
| 1495 EXPECT_EQ(embedded_test_server()->host_port_pair().host(), | 1521 EXPECT_EQ(embedded_test_server()->host_port_pair().host(), |
| 1496 ip_map->at(test_server_host).back().ip); | 1522 ip_map->at(test_server_host).back().ip); |
| 1497 EXPECT_NE(yesterday, ip_map->at(test_server_host).front().timestamp); | 1523 EXPECT_NE(yesterday, ip_map->at(test_server_host).front().timestamp); |
| 1498 } | 1524 } |
| 1499 | 1525 |
| 1500 } // namespace safe_browsing | 1526 } // namespace safe_browsing |
| OLD | NEW |