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

Side by Side Diff: chrome/browser/safe_browsing/safe_browsing_navigation_observer_browsertest.cc

Issue 2612663002: Use main frame URL to identify referrer if sub-frame url is not available (Closed)
Patch Set: address comments from nparker@ Created 3 years, 11 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/safe_browsing/safe_browsing_navigation_observer_manager.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/safe_browsing/safe_browsing_navigation_observer_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698