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 |