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 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
227 EXPECT_EQ(expected_has_server_redirect, | 227 EXPECT_EQ(expected_has_server_redirect, |
228 actual_nav_event.has_server_redirect); | 228 actual_nav_event.has_server_redirect); |
229 } | 229 } |
230 | 230 |
231 void VerifyReferrerChainEntry(const GURL& expected_url, | 231 void VerifyReferrerChainEntry(const GURL& expected_url, |
232 ReferrerChainEntry::URLType expected_type, | 232 ReferrerChainEntry::URLType expected_type, |
233 const std::string& expected_ip_address, | 233 const std::string& expected_ip_address, |
234 const GURL& expected_referrer_url, | 234 const GURL& expected_referrer_url, |
235 const GURL& expected_referrer_main_frame_url, | 235 const GURL& expected_referrer_main_frame_url, |
236 bool expected_is_retargeting, | 236 bool expected_is_retargeting, |
237 ReferrerChainEntry actual_entry) { | 237 ReferrerChainEntry* actual_entry) { |
238 EXPECT_EQ(expected_url.spec(), actual_entry.url()); | 238 EXPECT_EQ(expected_url.spec(), actual_entry->url()); |
239 EXPECT_EQ(expected_type, actual_entry.type()); | 239 EXPECT_EQ(expected_type, actual_entry->type()); |
240 if (expected_ip_address.empty()) { | 240 if (expected_ip_address.empty()) { |
241 ASSERT_EQ(0, actual_entry.ip_addresses_size()); | 241 ASSERT_EQ(0, actual_entry->ip_addresses_size()); |
242 } else { | 242 } else { |
243 ASSERT_EQ(1, actual_entry.ip_addresses_size()); | 243 ASSERT_EQ(1, actual_entry->ip_addresses_size()); |
244 EXPECT_EQ(expected_ip_address, actual_entry.ip_addresses(0)); | 244 EXPECT_EQ(expected_ip_address, actual_entry->ip_addresses(0)); |
245 } | 245 } |
246 EXPECT_EQ(expected_referrer_url.spec(), actual_entry.referrer_url()); | 246 EXPECT_EQ(expected_referrer_url.spec(), actual_entry->referrer_url()); |
247 EXPECT_EQ(expected_referrer_main_frame_url.spec(), | 247 EXPECT_EQ(expected_referrer_main_frame_url.spec(), |
248 actual_entry.referrer_main_frame_url()); | 248 actual_entry->referrer_main_frame_url()); |
249 EXPECT_EQ(expected_is_retargeting, actual_entry.is_retargeting()); | 249 EXPECT_EQ(expected_is_retargeting, actual_entry->is_retargeting()); |
250 } | 250 } |
251 | 251 |
252 std::vector<ReferrerChainEntry> IdentifyReferrerChainForDownload( | 252 void IdentifyReferrerChainForDownload( |
Nathan Parker
2017/01/10 01:25:13
Maybe add a comment that this populates referrer_c
Jialiu Lin
2017/01/10 02:15:12
Done.
| |
253 DownloadItem* download) { | 253 DownloadItem* download, |
254 std::vector<ReferrerChainEntry> referrer_chain; | 254 SafeBrowsingNavigationObserverManager::ReferrerChain* referrer_chain) { |
255 int download_tab_id = | 255 int download_tab_id = |
256 SessionTabHelper::IdForTab(download->GetWebContents()); | 256 SessionTabHelper::IdForTab(download->GetWebContents()); |
257 // IdentifyReferrerChain should return SUCCESS(1), SUCCESS_LANDING_PAGE(2), | 257 // IdentifyReferrerChain should return SUCCESS(1), SUCCESS_LANDING_PAGE(2), |
258 // or SUCCESS_LANDING_REFERRER(3) in all these tests. | 258 // or SUCCESS_LANDING_REFERRER(3) in all these tests. |
259 EXPECT_LE(observer_manager_->IdentifyReferrerChainForDownload( | 259 EXPECT_LE(observer_manager_->IdentifyReferrerChainForDownload( |
260 download->GetURL(), download_tab_id, | 260 download->GetURL(), download_tab_id, |
261 2, // kDownloadAttributionUserGestureLimit | 261 2, // kDownloadAttributionUserGestureLimit |
262 &referrer_chain), | 262 referrer_chain), |
263 SafeBrowsingNavigationObserverManager::SUCCESS_LANDING_REFERRER); | 263 SafeBrowsingNavigationObserverManager::SUCCESS_LANDING_REFERRER); |
264 return referrer_chain; | |
265 } | 264 } |
266 | 265 |
267 std::vector<ReferrerChainEntry> IdentifyReferrerChainForPPAPIDownload( | 266 void IdentifyReferrerChainForPPAPIDownload( |
268 const GURL& initiating_frame_url, | 267 const GURL& initiating_frame_url, |
269 content::WebContents* web_contents) { | 268 content::WebContents* web_contents, |
270 std::vector<ReferrerChainEntry> referrer_chain; | 269 SafeBrowsingNavigationObserverManager::ReferrerChain* referrer_chain) { |
271 int tab_id = SessionTabHelper::IdForTab(web_contents); | 270 int tab_id = SessionTabHelper::IdForTab(web_contents); |
272 bool has_user_gesture = observer_manager_->HasUserGesture(web_contents); | 271 bool has_user_gesture = observer_manager_->HasUserGesture(web_contents); |
273 observer_manager_->OnUserGestureConsumed(web_contents, base::Time::Now()); | 272 observer_manager_->OnUserGestureConsumed(web_contents, base::Time::Now()); |
274 EXPECT_LE(observer_manager_->IdentifyReferrerChainForPPAPIDownload( | 273 EXPECT_LE(observer_manager_->IdentifyReferrerChainForPPAPIDownload( |
275 initiating_frame_url, | 274 initiating_frame_url, |
276 tab_id, | 275 tab_id, |
277 has_user_gesture, | 276 has_user_gesture, |
278 2, // kDownloadAttributionUserGestureLimit) | 277 2, // kDownloadAttributionUserGestureLimit) |
279 &referrer_chain), | 278 referrer_chain), |
280 SafeBrowsingNavigationObserverManager::SUCCESS_LANDING_REFERRER); | 279 SafeBrowsingNavigationObserverManager::SUCCESS_LANDING_REFERRER); |
281 return referrer_chain; | |
282 } | 280 } |
283 | 281 |
284 void VerifyHostToIpMap() { | 282 void VerifyHostToIpMap() { |
285 // Since all testing pages have the same host, there is only one entry in | 283 // Since all testing pages have the same host, there is only one entry in |
286 // host_to_ip_map_. | 284 // host_to_ip_map_. |
287 SafeBrowsingNavigationObserverManager::HostToIpMap* actual_host_ip_map = | 285 SafeBrowsingNavigationObserverManager::HostToIpMap* actual_host_ip_map = |
288 host_to_ip_map(); | 286 host_to_ip_map(); |
289 ASSERT_EQ(1U, actual_host_ip_map->size()); | 287 ASSERT_EQ(1U, actual_host_ip_map->size()); |
290 auto ip_list = | 288 auto ip_list = |
291 actual_host_ip_map->at(embedded_test_server()->base_url().host()); | 289 actual_host_ip_map->at(embedded_test_server()->base_url().host()); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
339 VerifyNavigationEvent(GURL(), // source_url | 337 VerifyNavigationEvent(GURL(), // source_url |
340 GURL(), // source_main_frame_url | 338 GURL(), // source_main_frame_url |
341 download_url, // original_request_url | 339 download_url, // original_request_url |
342 download_url, // destination_url | 340 download_url, // destination_url |
343 true, // is_user_initiated, | 341 true, // is_user_initiated, |
344 false, // has_committed | 342 false, // has_committed |
345 false, // has_server_redirect | 343 false, // has_server_redirect |
346 nav_map->at(download_url).at(0)); | 344 nav_map->at(download_url).at(0)); |
347 VerifyHostToIpMap(); | 345 VerifyHostToIpMap(); |
348 | 346 |
349 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 347 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
348 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); | |
350 ASSERT_EQ(1U, referrer_chain.size()); | 349 ASSERT_EQ(1U, referrer_chain.size()); |
351 VerifyReferrerChainEntry(download_url, // url | 350 VerifyReferrerChainEntry(download_url, // url |
352 ReferrerChainEntry::DOWNLOAD_URL, // type | 351 ReferrerChainEntry::DOWNLOAD_URL, // type |
353 test_server_ip, // ip_address | 352 test_server_ip, // ip_address |
354 GURL(), // referrer_url | 353 GURL(), // referrer_url |
355 GURL(), // referrer_main_frame_url | 354 GURL(), // referrer_main_frame_url |
356 false, // is_retargeting | 355 false, // is_retargeting |
357 referrer_chain[0]); | 356 referrer_chain[0].get()); |
358 } | 357 } |
359 // Click on a link and start download on the same page. | 358 // Click on a link and start download on the same page. |
360 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, DirectDownload) { | 359 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, DirectDownload) { |
361 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 360 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
362 ClickTestLink("direct_download", 1, initial_url); | 361 ClickTestLink("direct_download", 1, initial_url); |
363 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 362 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
364 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 363 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
365 auto nav_map = navigation_map(); | 364 auto nav_map = navigation_map(); |
366 ASSERT_TRUE(nav_map); | 365 ASSERT_TRUE(nav_map); |
367 ASSERT_EQ(2U, nav_map->size()); | 366 ASSERT_EQ(2U, nav_map->size()); |
(...skipping 10 matching lines...) Expand all Loading... | |
378 VerifyNavigationEvent(initial_url, // source_url | 377 VerifyNavigationEvent(initial_url, // source_url |
379 initial_url, // source_main_frame_url | 378 initial_url, // source_main_frame_url |
380 download_url, // original_request_url | 379 download_url, // original_request_url |
381 download_url, // destination_url | 380 download_url, // destination_url |
382 true, // is_user_initiated, | 381 true, // is_user_initiated, |
383 false, // has_committed | 382 false, // has_committed |
384 false, // has_server_redirect | 383 false, // has_server_redirect |
385 nav_map->at(download_url).at(0)); | 384 nav_map->at(download_url).at(0)); |
386 VerifyHostToIpMap(); | 385 VerifyHostToIpMap(); |
387 | 386 |
388 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 387 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
388 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); | |
389 ASSERT_EQ(2U, referrer_chain.size()); | 389 ASSERT_EQ(2U, referrer_chain.size()); |
390 VerifyReferrerChainEntry(download_url, // url | 390 VerifyReferrerChainEntry(download_url, // url |
391 ReferrerChainEntry::DOWNLOAD_URL, // type | 391 ReferrerChainEntry::DOWNLOAD_URL, // type |
392 test_server_ip, // ip_address | 392 test_server_ip, // ip_address |
393 initial_url, // referrer_url | 393 initial_url, // referrer_url |
394 initial_url, // referrer_main_frame_url | 394 initial_url, // referrer_main_frame_url |
395 false, // is_retargeting | 395 false, // is_retargeting |
396 referrer_chain[0]); | 396 referrer_chain[0].get()); |
397 VerifyReferrerChainEntry(initial_url, // url | 397 VerifyReferrerChainEntry(initial_url, // url |
398 ReferrerChainEntry::LANDING_PAGE, // type | 398 ReferrerChainEntry::LANDING_PAGE, // type |
399 test_server_ip, // ip_address | 399 test_server_ip, // ip_address |
400 GURL(), // referrer_url | 400 GURL(), // referrer_url |
401 GURL(), // referrer_main_frame_url | 401 GURL(), // referrer_main_frame_url |
402 false, // is_retargeting | 402 false, // is_retargeting |
403 referrer_chain[1]); | 403 referrer_chain[1].get()); |
404 } | 404 } |
405 | 405 |
406 // Click on a link with rel="noreferrer" attribute, and start download on the | 406 // Click on a link with rel="noreferrer" attribute, and start download on the |
407 // same page. | 407 // same page. |
408 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 408 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
409 DirectDownloadNoReferrer) { | 409 DirectDownloadNoReferrer) { |
410 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 410 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
411 ClickTestLink("direct_download_noreferrer", 1, initial_url); | 411 ClickTestLink("direct_download_noreferrer", 1, initial_url); |
412 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 412 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
413 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 413 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
(...skipping 13 matching lines...) Expand all Loading... | |
427 VerifyNavigationEvent(initial_url, // source_url | 427 VerifyNavigationEvent(initial_url, // source_url |
428 initial_url, // source_main_frame_url | 428 initial_url, // source_main_frame_url |
429 download_url, // original_request_url | 429 download_url, // original_request_url |
430 download_url, // destination_url | 430 download_url, // destination_url |
431 true, // is_user_initiated, | 431 true, // is_user_initiated, |
432 false, // has_committed | 432 false, // has_committed |
433 false, // has_server_redirect | 433 false, // has_server_redirect |
434 nav_map->at(download_url).at(0)); | 434 nav_map->at(download_url).at(0)); |
435 VerifyHostToIpMap(); | 435 VerifyHostToIpMap(); |
436 | 436 |
437 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 437 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
Nathan Parker
2017/01/10 01:25:13
(You could consider typedeffing these to "Referrer
Jialiu Lin
2017/01/10 02:15:12
Done.
| |
438 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); | |
438 ASSERT_EQ(2U, referrer_chain.size()); | 439 ASSERT_EQ(2U, referrer_chain.size()); |
439 VerifyReferrerChainEntry(download_url, // url | 440 VerifyReferrerChainEntry(download_url, // url |
440 ReferrerChainEntry::DOWNLOAD_URL, // type | 441 ReferrerChainEntry::DOWNLOAD_URL, // type |
441 test_server_ip, // ip_address | 442 test_server_ip, // ip_address |
442 initial_url, // referrer_url | 443 initial_url, // referrer_url |
443 initial_url, // referrer_main_frame_url | 444 initial_url, // referrer_main_frame_url |
444 false, // is_retargeting | 445 false, // is_retargeting |
445 referrer_chain[0]); | 446 referrer_chain[0].get()); |
446 VerifyReferrerChainEntry(initial_url, // url | 447 VerifyReferrerChainEntry(initial_url, // url |
447 ReferrerChainEntry::LANDING_PAGE, // type | 448 ReferrerChainEntry::LANDING_PAGE, // type |
448 test_server_ip, // ip_address | 449 test_server_ip, // ip_address |
449 GURL(), // referrer_url | 450 GURL(), // referrer_url |
450 GURL(), // referrer_main_frame_url | 451 GURL(), // referrer_main_frame_url |
451 false, // is_retargeting | 452 false, // is_retargeting |
452 referrer_chain[1]); | 453 referrer_chain[1].get()); |
453 } | 454 } |
454 | 455 |
455 // Click on a link with rel="noreferrer" attribute, and start download in a | 456 // Click on a link with rel="noreferrer" attribute, and start download in a |
456 // new tab using target=_blank. | 457 // new tab using target=_blank. |
457 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 458 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
458 DirectDownloadNoReferrerTargetBlank) { | 459 DirectDownloadNoReferrerTargetBlank) { |
459 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 460 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
460 ClickTestLink("direct_download_noreferrer_target_blank", 1, initial_url); | 461 ClickTestLink("direct_download_noreferrer_target_blank", 1, initial_url); |
461 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 462 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
462 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 463 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
(...skipping 27 matching lines...) Expand all Loading... | |
490 VerifyNavigationEvent(GURL(), // source_url | 491 VerifyNavigationEvent(GURL(), // source_url |
491 GURL(), // source_main_frame_url | 492 GURL(), // source_main_frame_url |
492 download_url, // original_request_url | 493 download_url, // original_request_url |
493 download_url, // destination_url | 494 download_url, // destination_url |
494 false, // is_user_initiated, | 495 false, // is_user_initiated, |
495 false, // has_committed | 496 false, // has_committed |
496 false, // has_server_redirect | 497 false, // has_server_redirect |
497 nav_map->at(download_url).at(1)); | 498 nav_map->at(download_url).at(1)); |
498 VerifyHostToIpMap(); | 499 VerifyHostToIpMap(); |
499 | 500 |
500 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 501 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
502 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); | |
501 ASSERT_EQ(2U, referrer_chain.size()); | 503 ASSERT_EQ(2U, referrer_chain.size()); |
502 VerifyReferrerChainEntry(download_url, // url | 504 VerifyReferrerChainEntry(download_url, // url |
503 ReferrerChainEntry::DOWNLOAD_URL, // type | 505 ReferrerChainEntry::DOWNLOAD_URL, // type |
504 test_server_ip, // ip_address | 506 test_server_ip, // ip_address |
505 initial_url, // referrer_url | 507 initial_url, // referrer_url |
506 initial_url, // referrer_main_frame_url | 508 initial_url, // referrer_main_frame_url |
507 true, // is_retargeting | 509 true, // is_retargeting |
508 referrer_chain[0]); | 510 referrer_chain[0].get()); |
509 VerifyReferrerChainEntry(initial_url, // url | 511 VerifyReferrerChainEntry(initial_url, // url |
510 ReferrerChainEntry::LANDING_PAGE, // type | 512 ReferrerChainEntry::LANDING_PAGE, // type |
511 test_server_ip, // ip_address | 513 test_server_ip, // ip_address |
512 GURL(), // referrer_url | 514 GURL(), // referrer_url |
513 GURL(), // referrer_main_frame_url | 515 GURL(), // referrer_main_frame_url |
514 false, // is_retargeting | 516 false, // is_retargeting |
515 referrer_chain[1]); | 517 referrer_chain[1].get()); |
516 } | 518 } |
517 | 519 |
518 // Click on a link which navigates to a page then redirects to a download using | 520 // Click on a link which navigates to a page then redirects to a download using |
519 // META HTTP-EQUIV="refresh". All transitions happen in the same tab. | 521 // META HTTP-EQUIV="refresh". All transitions happen in the same tab. |
520 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 522 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
521 SingleMetaRefreshRedirect) { | 523 SingleMetaRefreshRedirect) { |
522 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 524 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
523 ClickTestLink("single_meta_refresh_redirect", 2, initial_url); | 525 ClickTestLink("single_meta_refresh_redirect", 2, initial_url); |
524 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL); | 526 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL); |
525 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 527 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
526 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 528 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
527 auto nav_map = navigation_map(); | 529 auto nav_map = navigation_map(); |
528 ASSERT_TRUE(nav_map); | 530 ASSERT_TRUE(nav_map); |
529 // Since unlike server redirects client redirects commit and then generate a | 531 // Since unlike server redirects client redirects commit and then generate a |
530 // second navigation, our observer records two NavigationEvents for this test. | 532 // second navigation, our observer records two NavigationEvents for this test. |
531 ASSERT_EQ(std::size_t(3), nav_map->size()); | 533 ASSERT_EQ(3U, nav_map->size()); |
532 ASSERT_EQ(1U, nav_map->at(redirect_url).size()); | 534 ASSERT_EQ(1U, nav_map->at(redirect_url).size()); |
533 ASSERT_EQ(1U, nav_map->at(download_url).size()); | 535 ASSERT_EQ(1U, nav_map->at(download_url).size()); |
534 ASSERT_EQ(1U, nav_map->at(initial_url).size()); | 536 ASSERT_EQ(1U, nav_map->at(initial_url).size()); |
535 VerifyNavigationEvent(GURL(), // source_url | 537 VerifyNavigationEvent(GURL(), // source_url |
536 GURL(), // source_main_frame_url | 538 GURL(), // source_main_frame_url |
537 initial_url, // original_request_url | 539 initial_url, // original_request_url |
538 initial_url, // destination_url | 540 initial_url, // destination_url |
539 true, // is_user_initiated, | 541 true, // is_user_initiated, |
540 true, // has_committed | 542 true, // has_committed |
541 false, // has_server_redirect | 543 false, // has_server_redirect |
542 nav_map->at(initial_url).at(0)); | 544 nav_map->at(initial_url).at(0)); |
543 VerifyNavigationEvent(initial_url, // source_url | 545 VerifyNavigationEvent(initial_url, // source_url |
544 initial_url, // source_main_frame_url | 546 initial_url, // source_main_frame_url |
545 redirect_url, // original_request_url | 547 redirect_url, // original_request_url |
546 redirect_url, // destination_url | 548 redirect_url, // destination_url |
547 true, // is_user_initiated, | 549 true, // is_user_initiated, |
548 true, // has_committed | 550 true, // has_committed |
549 false, // has_server_redirect | 551 false, // has_server_redirect |
550 nav_map->at(redirect_url).at(0)); | 552 nav_map->at(redirect_url).at(0)); |
551 VerifyNavigationEvent(redirect_url, // source_url | 553 VerifyNavigationEvent(redirect_url, // source_url |
552 redirect_url, // source_main_frame_url | 554 redirect_url, // source_main_frame_url |
553 download_url, // original_request_url | 555 download_url, // original_request_url |
554 download_url, // destination_url | 556 download_url, // destination_url |
555 false, // is_user_initiated, | 557 false, // is_user_initiated, |
556 false, // has_committed | 558 false, // has_committed |
557 false, // has_server_redirect | 559 false, // has_server_redirect |
558 nav_map->at(download_url).at(0)); | 560 nav_map->at(download_url).at(0)); |
559 VerifyHostToIpMap(); | 561 VerifyHostToIpMap(); |
560 | 562 |
561 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 563 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
562 ASSERT_EQ(std::size_t(3), referrer_chain.size()); | 564 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
565 ASSERT_EQ(3U, referrer_chain.size()); | |
563 VerifyReferrerChainEntry(download_url, // url | 566 VerifyReferrerChainEntry(download_url, // url |
564 ReferrerChainEntry::DOWNLOAD_URL, // type | 567 ReferrerChainEntry::DOWNLOAD_URL, // type |
565 test_server_ip, // ip_address | 568 test_server_ip, // ip_address |
566 redirect_url, // referrer_url | 569 redirect_url, // referrer_url |
567 redirect_url, // referrer_main_frame_url | 570 redirect_url, // referrer_main_frame_url |
568 false, // is_retargeting | 571 false, // is_retargeting |
569 referrer_chain[0]); | 572 referrer_chain[0].get()); |
570 VerifyReferrerChainEntry(redirect_url, // url | 573 VerifyReferrerChainEntry(redirect_url, // url |
571 ReferrerChainEntry::CLIENT_REDIRECT, // type | 574 ReferrerChainEntry::CLIENT_REDIRECT, // type |
572 test_server_ip, // ip_address | 575 test_server_ip, // ip_address |
573 initial_url, // referrer_url | 576 initial_url, // referrer_url |
574 initial_url, // referrer_main_frame_url | 577 initial_url, // referrer_main_frame_url |
575 false, // is_retargeting | 578 false, // is_retargeting |
576 referrer_chain[1]); | 579 referrer_chain[1].get()); |
577 VerifyReferrerChainEntry(initial_url, // url | 580 VerifyReferrerChainEntry(initial_url, // url |
578 ReferrerChainEntry::LANDING_PAGE, // type | 581 ReferrerChainEntry::LANDING_PAGE, // type |
579 test_server_ip, // ip_address | 582 test_server_ip, // ip_address |
580 GURL(), // referrer_url | 583 GURL(), // referrer_url |
581 GURL(), // referrer_main_frame_url | 584 GURL(), // referrer_main_frame_url |
582 false, // is_retargeting | 585 false, // is_retargeting |
583 referrer_chain[2]); | 586 referrer_chain[2].get()); |
584 } | 587 } |
585 | 588 |
586 // Click on a link which navigates to a page then redirects to a download using | 589 // Click on a link which navigates to a page then redirects to a download using |
587 // META HTTP-EQUIV="refresh". First navigation happens in target blank. | 590 // META HTTP-EQUIV="refresh". First navigation happens in target blank. |
588 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 591 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
589 SingleMetaRefreshRedirectTargetBlank) { | 592 SingleMetaRefreshRedirectTargetBlank) { |
590 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 593 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
591 ClickTestLink("single_meta_refresh_redirect_target_blank", 2, initial_url); | 594 ClickTestLink("single_meta_refresh_redirect_target_blank", 2, initial_url); |
592 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL); | 595 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL); |
593 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 596 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
594 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 597 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
595 auto nav_map = navigation_map(); | 598 auto nav_map = navigation_map(); |
596 ASSERT_TRUE(nav_map); | 599 ASSERT_TRUE(nav_map); |
597 ASSERT_EQ(std::size_t(3), nav_map->size()); | 600 ASSERT_EQ(3U, nav_map->size()); |
598 ASSERT_EQ(2U, nav_map->at(redirect_url).size()); | 601 ASSERT_EQ(2U, nav_map->at(redirect_url).size()); |
599 ASSERT_EQ(1U, nav_map->at(download_url).size()); | 602 ASSERT_EQ(1U, nav_map->at(download_url).size()); |
600 ASSERT_EQ(1U, nav_map->at(initial_url).size()); | 603 ASSERT_EQ(1U, nav_map->at(initial_url).size()); |
601 VerifyNavigationEvent(GURL(), // source_url | 604 VerifyNavigationEvent(GURL(), // source_url |
602 GURL(), // source_main_frame_url | 605 GURL(), // source_main_frame_url |
603 initial_url, // original_request_url | 606 initial_url, // original_request_url |
604 initial_url, // destination_url | 607 initial_url, // destination_url |
605 true, // is_user_initiated, | 608 true, // is_user_initiated, |
606 true, // has_committed | 609 true, // has_committed |
607 false, // has_server_redirect | 610 false, // has_server_redirect |
(...skipping 20 matching lines...) Expand all Loading... | |
628 VerifyNavigationEvent(redirect_url, // source_url | 631 VerifyNavigationEvent(redirect_url, // source_url |
629 redirect_url, // source_main_frame_url | 632 redirect_url, // source_main_frame_url |
630 download_url, // original_request_url | 633 download_url, // original_request_url |
631 download_url, // destination_url | 634 download_url, // destination_url |
632 false, // is_user_initiated, | 635 false, // is_user_initiated, |
633 false, // has_committed | 636 false, // has_committed |
634 false, // has_server_redirect | 637 false, // has_server_redirect |
635 nav_map->at(download_url).at(0)); | 638 nav_map->at(download_url).at(0)); |
636 VerifyHostToIpMap(); | 639 VerifyHostToIpMap(); |
637 | 640 |
638 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 641 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
639 ASSERT_EQ(std::size_t(3), referrer_chain.size()); | 642 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
643 ASSERT_EQ(3U, referrer_chain.size()); | |
640 VerifyReferrerChainEntry(download_url, // url | 644 VerifyReferrerChainEntry(download_url, // url |
641 ReferrerChainEntry::DOWNLOAD_URL, // type | 645 ReferrerChainEntry::DOWNLOAD_URL, // type |
642 test_server_ip, // ip_address | 646 test_server_ip, // ip_address |
643 redirect_url, // referrer_url | 647 redirect_url, // referrer_url |
644 redirect_url, // referrer_main_frame_url | 648 redirect_url, // referrer_main_frame_url |
645 false, // is_retargeting | 649 false, // is_retargeting |
646 referrer_chain[0]); | 650 referrer_chain[0].get()); |
647 VerifyReferrerChainEntry(redirect_url, // url | 651 VerifyReferrerChainEntry(redirect_url, // url |
648 ReferrerChainEntry::CLIENT_REDIRECT, // type | 652 ReferrerChainEntry::CLIENT_REDIRECT, // type |
649 test_server_ip, // ip_address | 653 test_server_ip, // ip_address |
650 initial_url, // referrer_url | 654 initial_url, // referrer_url |
651 initial_url, // referrer_main_frame_url | 655 initial_url, // referrer_main_frame_url |
652 true, // is_retargeting | 656 true, // is_retargeting |
653 referrer_chain[1]); | 657 referrer_chain[1].get()); |
654 VerifyReferrerChainEntry(initial_url, // url | 658 VerifyReferrerChainEntry(initial_url, // url |
655 ReferrerChainEntry::LANDING_PAGE, // type | 659 ReferrerChainEntry::LANDING_PAGE, // type |
656 test_server_ip, // ip_address | 660 test_server_ip, // ip_address |
657 GURL(), // referrer_url | 661 GURL(), // referrer_url |
658 GURL(), // referrer_main_frame_url | 662 GURL(), // referrer_main_frame_url |
659 false, // is_retargeting | 663 false, // is_retargeting |
660 referrer_chain[2]); | 664 referrer_chain[2].get()); |
661 } | 665 } |
662 | 666 |
663 // Click on a link which redirects twice before reaching download using | 667 // Click on a link which redirects twice before reaching download using |
664 // META HTTP-EQUIV="refresh". All transitions happen in the same tab. | 668 // META HTTP-EQUIV="refresh". All transitions happen in the same tab. |
665 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 669 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
666 MultiMetaRefreshRedirects) { | 670 MultiMetaRefreshRedirects) { |
667 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 671 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
668 ClickTestLink("multiple_meta_refresh_redirects", 3, initial_url); | 672 ClickTestLink("multiple_meta_refresh_redirects", 3, initial_url); |
669 GURL first_redirect_url = embedded_test_server()->GetURL( | 673 GURL first_redirect_url = embedded_test_server()->GetURL( |
670 "/safe_browsing/download_protection/navigation_observer/" | 674 "/safe_browsing/download_protection/navigation_observer/" |
671 "double_redirect.html"); | 675 "double_redirect.html"); |
672 GURL second_redirect_url = embedded_test_server()->GetURL(kRedirectURL); | 676 GURL second_redirect_url = embedded_test_server()->GetURL(kRedirectURL); |
673 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 677 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
674 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 678 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
675 auto nav_map = navigation_map(); | 679 auto nav_map = navigation_map(); |
676 ASSERT_TRUE(nav_map); | 680 ASSERT_TRUE(nav_map); |
677 ASSERT_EQ(std::size_t(4), nav_map->size()); | 681 ASSERT_EQ(4U, nav_map->size()); |
678 ASSERT_EQ(1U, nav_map->at(first_redirect_url).size()); | 682 ASSERT_EQ(1U, nav_map->at(first_redirect_url).size()); |
679 ASSERT_EQ(1U, nav_map->at(second_redirect_url).size()); | 683 ASSERT_EQ(1U, nav_map->at(second_redirect_url).size()); |
680 ASSERT_EQ(1U, nav_map->at(download_url).size()); | 684 ASSERT_EQ(1U, nav_map->at(download_url).size()); |
681 ASSERT_EQ(1U, nav_map->at(initial_url).size()); | 685 ASSERT_EQ(1U, nav_map->at(initial_url).size()); |
682 VerifyNavigationEvent(GURL(), // source_url | 686 VerifyNavigationEvent(GURL(), // source_url |
683 GURL(), // source_main_frame_url | 687 GURL(), // source_main_frame_url |
684 initial_url, // original_request_url | 688 initial_url, // original_request_url |
685 initial_url, // destination_url | 689 initial_url, // destination_url |
686 true, // is_user_initiated, | 690 true, // is_user_initiated, |
687 true, // has_committed | 691 true, // has_committed |
(...skipping 18 matching lines...) Expand all Loading... | |
706 VerifyNavigationEvent(second_redirect_url, // source_url | 710 VerifyNavigationEvent(second_redirect_url, // source_url |
707 second_redirect_url, // source_main_frame_url | 711 second_redirect_url, // source_main_frame_url |
708 download_url, // original_request_url | 712 download_url, // original_request_url |
709 download_url, // destination_url | 713 download_url, // destination_url |
710 false, // is_user_initiated, | 714 false, // is_user_initiated, |
711 false, // has_committed | 715 false, // has_committed |
712 false, // has_server_redirect | 716 false, // has_server_redirect |
713 nav_map->at(download_url).at(0)); | 717 nav_map->at(download_url).at(0)); |
714 VerifyHostToIpMap(); | 718 VerifyHostToIpMap(); |
715 | 719 |
716 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 720 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
717 ASSERT_EQ(std::size_t(4), referrer_chain.size()); | 721 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
722 ASSERT_EQ(4U, referrer_chain.size()); | |
718 VerifyReferrerChainEntry(download_url, // url | 723 VerifyReferrerChainEntry(download_url, // url |
719 ReferrerChainEntry::DOWNLOAD_URL, // type | 724 ReferrerChainEntry::DOWNLOAD_URL, // type |
720 test_server_ip, // ip_address | 725 test_server_ip, // ip_address |
721 second_redirect_url, // referrer_url | 726 second_redirect_url, // referrer_url |
722 second_redirect_url, // referrer_main_frame_url | 727 second_redirect_url, // referrer_main_frame_url |
723 false, // is_retargeting | 728 false, // is_retargeting |
724 referrer_chain[0]); | 729 referrer_chain[0].get()); |
725 VerifyReferrerChainEntry(second_redirect_url, // url | 730 VerifyReferrerChainEntry(second_redirect_url, // url |
726 ReferrerChainEntry::CLIENT_REDIRECT, // type | 731 ReferrerChainEntry::CLIENT_REDIRECT, // type |
727 test_server_ip, // ip_address | 732 test_server_ip, // ip_address |
728 first_redirect_url, // referrer_url | 733 first_redirect_url, // referrer_url |
729 first_redirect_url, // referrer_main_frame_url | 734 first_redirect_url, // referrer_main_frame_url |
730 false, // is_retargeting | 735 false, // is_retargeting |
731 referrer_chain[1]); | 736 referrer_chain[1].get()); |
732 VerifyReferrerChainEntry(first_redirect_url, // url | 737 VerifyReferrerChainEntry(first_redirect_url, // url |
733 ReferrerChainEntry::CLIENT_REDIRECT, // type | 738 ReferrerChainEntry::CLIENT_REDIRECT, // type |
734 test_server_ip, // ip_address | 739 test_server_ip, // ip_address |
735 initial_url, // referrer_url | 740 initial_url, // referrer_url |
736 initial_url, // referrer_main_frame_url | 741 initial_url, // referrer_main_frame_url |
737 false, // is_retargeting | 742 false, // is_retargeting |
738 referrer_chain[2]); | 743 referrer_chain[2].get()); |
739 VerifyReferrerChainEntry(initial_url, // url | 744 VerifyReferrerChainEntry(initial_url, // url |
740 ReferrerChainEntry::LANDING_PAGE, // type | 745 ReferrerChainEntry::LANDING_PAGE, // type |
741 test_server_ip, // ip_address | 746 test_server_ip, // ip_address |
742 GURL(), // referrer_url | 747 GURL(), // referrer_url |
743 GURL(), // referrer_main_frame_url | 748 GURL(), // referrer_main_frame_url |
744 false, // is_retargeting | 749 false, // is_retargeting |
745 referrer_chain[3]); | 750 referrer_chain[3].get()); |
746 } | 751 } |
747 | 752 |
748 // Click on a link which redirects to download using window.location. | 753 // Click on a link which redirects to download using window.location. |
749 // All transitions happen in the same tab. | 754 // All transitions happen in the same tab. |
750 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 755 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
751 WindowLocationRedirect) { | 756 WindowLocationRedirect) { |
752 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 757 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
753 ClickTestLink("window_location_redirection", 1, initial_url); | 758 ClickTestLink("window_location_redirection", 1, initial_url); |
754 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 759 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
755 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 760 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
(...skipping 12 matching lines...) Expand all Loading... | |
768 nav_map->at(initial_url).at(0)); | 773 nav_map->at(initial_url).at(0)); |
769 VerifyNavigationEvent(initial_url, // source_url | 774 VerifyNavigationEvent(initial_url, // source_url |
770 initial_url, // source_main_frame_url | 775 initial_url, // source_main_frame_url |
771 download_url, // original_request_url | 776 download_url, // original_request_url |
772 download_url, // destination_url | 777 download_url, // destination_url |
773 true, // is_user_initiated, | 778 true, // is_user_initiated, |
774 false, // has_committed | 779 false, // has_committed |
775 false, // has_server_redirect | 780 false, // has_server_redirect |
776 nav_map->at(download_url).at(0)); | 781 nav_map->at(download_url).at(0)); |
777 | 782 |
778 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 783 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
784 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); | |
779 ASSERT_EQ(2U, referrer_chain.size()); | 785 ASSERT_EQ(2U, referrer_chain.size()); |
780 VerifyReferrerChainEntry(download_url, // url | 786 VerifyReferrerChainEntry(download_url, // url |
781 ReferrerChainEntry::DOWNLOAD_URL, // type | 787 ReferrerChainEntry::DOWNLOAD_URL, // type |
782 test_server_ip, // ip_address | 788 test_server_ip, // ip_address |
783 initial_url, // referrer_url | 789 initial_url, // referrer_url |
784 initial_url, // referrer_main_frame_url | 790 initial_url, // referrer_main_frame_url |
785 false, // is_retargeting | 791 false, // is_retargeting |
786 referrer_chain[0]); | 792 referrer_chain[0].get()); |
787 VerifyReferrerChainEntry(initial_url, // url | 793 VerifyReferrerChainEntry(initial_url, // url |
788 ReferrerChainEntry::LANDING_PAGE, // type | 794 ReferrerChainEntry::LANDING_PAGE, // type |
789 test_server_ip, // ip_address | 795 test_server_ip, // ip_address |
790 GURL(), // referrer_url | 796 GURL(), // referrer_url |
791 GURL(), // referrer_main_frame_url | 797 GURL(), // referrer_main_frame_url |
792 false, // is_retargeting | 798 false, // is_retargeting |
793 referrer_chain[1]); | 799 referrer_chain[1].get()); |
794 } | 800 } |
795 | 801 |
796 // Click on a link which redirects twice until it reaches download using a | 802 // Click on a link which redirects twice until it reaches download using a |
797 // mixture of meta refresh and window.location. All transitions happen in the | 803 // mixture of meta refresh and window.location. All transitions happen in the |
798 // same tab. | 804 // same tab. |
799 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, MixRedirects) { | 805 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, MixRedirects) { |
800 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 806 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
801 ClickTestLink("mix_redirects", 2, initial_url); | 807 ClickTestLink("mix_redirects", 2, initial_url); |
802 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL); | 808 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL); |
803 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 809 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
804 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 810 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
805 auto nav_map = navigation_map(); | 811 auto nav_map = navigation_map(); |
806 ASSERT_TRUE(nav_map); | 812 ASSERT_TRUE(nav_map); |
807 ASSERT_EQ(std::size_t(3), nav_map->size()); | 813 ASSERT_EQ(3U, nav_map->size()); |
808 ASSERT_EQ(1U, nav_map->at(redirect_url).size()); | 814 ASSERT_EQ(1U, nav_map->at(redirect_url).size()); |
809 ASSERT_EQ(1U, nav_map->at(download_url).size()); | 815 ASSERT_EQ(1U, nav_map->at(download_url).size()); |
810 ASSERT_EQ(1U, nav_map->at(initial_url).size()); | 816 ASSERT_EQ(1U, nav_map->at(initial_url).size()); |
811 VerifyNavigationEvent(GURL(), // source_url | 817 VerifyNavigationEvent(GURL(), // source_url |
812 GURL(), // source_main_frame_url | 818 GURL(), // source_main_frame_url |
813 initial_url, // original_request_url | 819 initial_url, // original_request_url |
814 initial_url, // destination_url | 820 initial_url, // destination_url |
815 true, // is_user_initiated, | 821 true, // is_user_initiated, |
816 true, // has_committed | 822 true, // has_committed |
817 false, // has_server_redirect | 823 false, // has_server_redirect |
818 nav_map->at(initial_url).at(0)); | 824 nav_map->at(initial_url).at(0)); |
819 VerifyNavigationEvent(initial_url, // source_url | 825 VerifyNavigationEvent(initial_url, // source_url |
820 initial_url, // source_main_frame_url | 826 initial_url, // source_main_frame_url |
821 redirect_url, // original_request_url | 827 redirect_url, // original_request_url |
822 redirect_url, // destination_url | 828 redirect_url, // destination_url |
823 true, // is_user_initiated, | 829 true, // is_user_initiated, |
824 true, // has_committed | 830 true, // has_committed |
825 false, // has_server_redirect | 831 false, // has_server_redirect |
826 nav_map->at(redirect_url).at(0)); | 832 nav_map->at(redirect_url).at(0)); |
827 VerifyNavigationEvent(redirect_url, // source_url | 833 VerifyNavigationEvent(redirect_url, // source_url |
828 redirect_url, // source_main_frame_url | 834 redirect_url, // source_main_frame_url |
829 download_url, // original_request_url | 835 download_url, // original_request_url |
830 download_url, // destination_url | 836 download_url, // destination_url |
831 false, // is_user_initiated, | 837 false, // is_user_initiated, |
832 false, // has_committed | 838 false, // has_committed |
833 false, // has_server_redirect | 839 false, // has_server_redirect |
834 nav_map->at(download_url).at(0)); | 840 nav_map->at(download_url).at(0)); |
835 VerifyHostToIpMap(); | 841 VerifyHostToIpMap(); |
836 | 842 |
837 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 843 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
838 ASSERT_EQ(std::size_t(3), referrer_chain.size()); | 844 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
845 ASSERT_EQ(3U, referrer_chain.size()); | |
839 VerifyReferrerChainEntry(download_url, // url | 846 VerifyReferrerChainEntry(download_url, // url |
840 ReferrerChainEntry::DOWNLOAD_URL, // type | 847 ReferrerChainEntry::DOWNLOAD_URL, // type |
841 test_server_ip, // ip_address | 848 test_server_ip, // ip_address |
842 redirect_url, // referrer_url | 849 redirect_url, // referrer_url |
843 redirect_url, // referrer_main_frame_url | 850 redirect_url, // referrer_main_frame_url |
844 false, // is_retargeting | 851 false, // is_retargeting |
845 referrer_chain[0]); | 852 referrer_chain[0].get()); |
846 VerifyReferrerChainEntry(redirect_url, // url | 853 VerifyReferrerChainEntry(redirect_url, // url |
847 ReferrerChainEntry::CLIENT_REDIRECT, // type | 854 ReferrerChainEntry::CLIENT_REDIRECT, // type |
848 test_server_ip, // ip_address | 855 test_server_ip, // ip_address |
849 initial_url, // referrer_url | 856 initial_url, // referrer_url |
850 initial_url, // referrer_main_frame_url | 857 initial_url, // referrer_main_frame_url |
851 false, // is_retargeting | 858 false, // is_retargeting |
852 referrer_chain[1]); | 859 referrer_chain[1].get()); |
853 VerifyReferrerChainEntry(initial_url, // url | 860 VerifyReferrerChainEntry(initial_url, // url |
854 ReferrerChainEntry::LANDING_PAGE, // type | 861 ReferrerChainEntry::LANDING_PAGE, // type |
855 test_server_ip, // ip_address | 862 test_server_ip, // ip_address |
856 GURL(), // referrer_url | 863 GURL(), // referrer_url |
857 GURL(), // referrer_main_frame_url | 864 GURL(), // referrer_main_frame_url |
858 false, // is_retargeting | 865 false, // is_retargeting |
859 referrer_chain[2]); | 866 referrer_chain[2].get()); |
860 } | 867 } |
861 | 868 |
862 // Use javascript to open download in a new tab. | 869 // Use javascript to open download in a new tab. |
863 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, NewTabDownload) { | 870 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, NewTabDownload) { |
864 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 871 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
865 ClickTestLink("new_tab_download", 2, initial_url); | 872 ClickTestLink("new_tab_download", 2, initial_url); |
866 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 873 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
867 GURL blank_url = GURL(url::kAboutBlankURL); | 874 GURL blank_url = GURL(url::kAboutBlankURL); |
868 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 875 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
869 auto nav_map = navigation_map(); | 876 auto nav_map = navigation_map(); |
870 ASSERT_TRUE(nav_map); | 877 ASSERT_TRUE(nav_map); |
871 ASSERT_EQ(std::size_t(3), nav_map->size()); | 878 ASSERT_EQ(3U, nav_map->size()); |
872 ASSERT_EQ(2U, nav_map->at(blank_url).size()); | 879 ASSERT_EQ(2U, nav_map->at(blank_url).size()); |
873 ASSERT_EQ(1U, nav_map->at(download_url).size()); | 880 ASSERT_EQ(1U, nav_map->at(download_url).size()); |
874 ASSERT_EQ(1U, nav_map->at(initial_url).size()); | 881 ASSERT_EQ(1U, nav_map->at(initial_url).size()); |
875 VerifyNavigationEvent(GURL(), // source_url | 882 VerifyNavigationEvent(GURL(), // source_url |
876 GURL(), // source_main_frame_url | 883 GURL(), // source_main_frame_url |
877 initial_url, // original_request_url | 884 initial_url, // original_request_url |
878 initial_url, // destination_url | 885 initial_url, // destination_url |
879 true, // is_user_initiated, | 886 true, // is_user_initiated, |
880 true, // has_committed | 887 true, // has_committed |
881 false, // has_server_redirect | 888 false, // has_server_redirect |
(...skipping 24 matching lines...) Expand all Loading... | |
906 download_url, // original_request_url | 913 download_url, // original_request_url |
907 download_url, // destination_url | 914 download_url, // destination_url |
908 false, // is_user_initiated, | 915 false, // is_user_initiated, |
909 false, // has_committed | 916 false, // has_committed |
910 false, // has_server_redirect | 917 false, // has_server_redirect |
911 nav_map->at(download_url).at(0)); | 918 nav_map->at(download_url).at(0)); |
912 EXPECT_EQ(nav_map->at(download_url).at(0).source_tab_id, | 919 EXPECT_EQ(nav_map->at(download_url).at(0).source_tab_id, |
913 nav_map->at(download_url).at(0).target_tab_id); | 920 nav_map->at(download_url).at(0).target_tab_id); |
914 VerifyHostToIpMap(); | 921 VerifyHostToIpMap(); |
915 | 922 |
916 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 923 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
917 ASSERT_EQ(std::size_t(3), referrer_chain.size()); | 924 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
925 ASSERT_EQ(3U, referrer_chain.size()); | |
918 VerifyReferrerChainEntry(download_url, // url | 926 VerifyReferrerChainEntry(download_url, // url |
919 ReferrerChainEntry::DOWNLOAD_URL, // type | 927 ReferrerChainEntry::DOWNLOAD_URL, // type |
920 test_server_ip, // ip_address | 928 test_server_ip, // ip_address |
921 blank_url, // referrer_url | 929 blank_url, // referrer_url |
922 blank_url, // referrer_main_frame_url | 930 blank_url, // referrer_main_frame_url |
923 false, // is_retargeting | 931 false, // is_retargeting |
924 referrer_chain[0]); | 932 referrer_chain[0].get()); |
925 VerifyReferrerChainEntry(blank_url, // url | 933 VerifyReferrerChainEntry(blank_url, // url |
926 ReferrerChainEntry::CLIENT_REDIRECT, // type | 934 ReferrerChainEntry::CLIENT_REDIRECT, // type |
927 "", // ip_address | 935 "", // ip_address |
928 initial_url, // referrer_url | 936 initial_url, // referrer_url |
929 initial_url, // referrer_main_frame_url | 937 initial_url, // referrer_main_frame_url |
930 true, // is_retargeting | 938 true, // is_retargeting |
931 referrer_chain[1]); | 939 referrer_chain[1].get()); |
932 VerifyReferrerChainEntry(initial_url, // url | 940 VerifyReferrerChainEntry(initial_url, // url |
933 ReferrerChainEntry::LANDING_PAGE, // type | 941 ReferrerChainEntry::LANDING_PAGE, // type |
934 test_server_ip, // ip_address | 942 test_server_ip, // ip_address |
935 GURL(), // referrer_url | 943 GURL(), // referrer_url |
936 GURL(), // referrer_main_frame_url | 944 GURL(), // referrer_main_frame_url |
937 false, // is_retargeting | 945 false, // is_retargeting |
938 referrer_chain[2]); | 946 referrer_chain[2].get()); |
939 } | 947 } |
940 | 948 |
941 // Use javascript to open download in a new tab and download has a data url. | 949 // Use javascript to open download in a new tab and download has a data url. |
942 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 950 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
943 NewTabDownloadWithDataURL) { | 951 NewTabDownloadWithDataURL) { |
944 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 952 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
945 ClickTestLink("new_tab_download_with_data_url", 2, initial_url); | 953 ClickTestLink("new_tab_download_with_data_url", 2, initial_url); |
946 GURL download_url = GURL(kDownloadDataURL); | 954 GURL download_url = GURL(kDownloadDataURL); |
947 GURL blank_url = GURL(url::kAboutBlankURL); | 955 GURL blank_url = GURL(url::kAboutBlankURL); |
948 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 956 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
949 auto nav_map = navigation_map(); | 957 auto nav_map = navigation_map(); |
950 ASSERT_TRUE(nav_map); | 958 ASSERT_TRUE(nav_map); |
951 ASSERT_EQ(std::size_t(3), nav_map->size()); | 959 ASSERT_EQ(3U, nav_map->size()); |
952 ASSERT_EQ(2U, nav_map->at(blank_url).size()); | 960 ASSERT_EQ(2U, nav_map->at(blank_url).size()); |
953 ASSERT_EQ(1U, nav_map->at(download_url).size()); | 961 ASSERT_EQ(1U, nav_map->at(download_url).size()); |
954 ASSERT_EQ(1U, nav_map->at(initial_url).size()); | 962 ASSERT_EQ(1U, nav_map->at(initial_url).size()); |
955 VerifyNavigationEvent(GURL(), // source_url | 963 VerifyNavigationEvent(GURL(), // source_url |
956 GURL(), // source_main_frame_url | 964 GURL(), // source_main_frame_url |
957 initial_url, // original_request_url | 965 initial_url, // original_request_url |
958 initial_url, // destination_url | 966 initial_url, // destination_url |
959 true, // is_user_initiated, | 967 true, // is_user_initiated, |
960 true, // has_committed | 968 true, // has_committed |
961 false, // has_server_redirect | 969 false, // has_server_redirect |
(...skipping 25 matching lines...) Expand all Loading... | |
987 download_url, // original_request_url | 995 download_url, // original_request_url |
988 download_url, // destination_url | 996 download_url, // destination_url |
989 false, // is_user_initiated, | 997 false, // is_user_initiated, |
990 false, // has_committed | 998 false, // has_committed |
991 false, // has_server_redirect | 999 false, // has_server_redirect |
992 nav_map->at(download_url).at(0)); | 1000 nav_map->at(download_url).at(0)); |
993 EXPECT_TRUE(nav_map->at(download_url).at(0).source_tab_id == | 1001 EXPECT_TRUE(nav_map->at(download_url).at(0).source_tab_id == |
994 nav_map->at(download_url).at(0).target_tab_id); | 1002 nav_map->at(download_url).at(0).target_tab_id); |
995 VerifyHostToIpMap(); | 1003 VerifyHostToIpMap(); |
996 | 1004 |
997 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 1005 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
998 ASSERT_EQ(std::size_t(3), referrer_chain.size()); | 1006 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
1007 ASSERT_EQ(3U, referrer_chain.size()); | |
999 VerifyReferrerChainEntry(download_url, // url | 1008 VerifyReferrerChainEntry(download_url, // url |
1000 ReferrerChainEntry::DOWNLOAD_URL, // type | 1009 ReferrerChainEntry::DOWNLOAD_URL, // type |
1001 "", // ip_address | 1010 "", // ip_address |
1002 blank_url, // referrer_url | 1011 blank_url, // referrer_url |
1003 blank_url, // referrer_main_frame_url | 1012 blank_url, // referrer_main_frame_url |
1004 false, // is_retargeting | 1013 false, // is_retargeting |
1005 referrer_chain[0]); | 1014 referrer_chain[0].get()); |
1006 VerifyReferrerChainEntry(blank_url, // url | 1015 VerifyReferrerChainEntry(blank_url, // url |
1007 ReferrerChainEntry::CLIENT_REDIRECT, // type | 1016 ReferrerChainEntry::CLIENT_REDIRECT, // type |
1008 "", // ip_address | 1017 "", // ip_address |
1009 initial_url, // referrer_url | 1018 initial_url, // referrer_url |
1010 initial_url, // referrer_main_frame_url | 1019 initial_url, // referrer_main_frame_url |
1011 true, // is_retargeting | 1020 true, // is_retargeting |
1012 referrer_chain[1]); | 1021 referrer_chain[1].get()); |
1013 VerifyReferrerChainEntry(initial_url, // url | 1022 VerifyReferrerChainEntry(initial_url, // url |
1014 ReferrerChainEntry::LANDING_PAGE, // type | 1023 ReferrerChainEntry::LANDING_PAGE, // type |
1015 test_server_ip, // ip_address | 1024 test_server_ip, // ip_address |
1016 GURL(), // referrer_url | 1025 GURL(), // referrer_url |
1017 GURL(), // referrer_main_frame_url | 1026 GURL(), // referrer_main_frame_url |
1018 false, // is_retargeting | 1027 false, // is_retargeting |
1019 referrer_chain[2]); | 1028 referrer_chain[2].get()); |
1020 } | 1029 } |
1021 | 1030 |
1022 // TODO(jialiul): Need to figure out why this test is failing on Windows and | 1031 // TODO(jialiul): Need to figure out why this test is failing on Windows and |
1023 // flaky on other platforms. | 1032 // flaky on other platforms. |
1024 #define MAYBE_DownloadViaHTML5FileApi DISABLED_DownloadViaHTML5FileApi | 1033 #define MAYBE_DownloadViaHTML5FileApi DISABLED_DownloadViaHTML5FileApi |
1025 // Download via html5 file API. | 1034 // Download via html5 file API. |
1026 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 1035 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
1027 MAYBE_DownloadViaHTML5FileApi) { | 1036 MAYBE_DownloadViaHTML5FileApi) { |
1028 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 1037 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
1029 ClickTestLink("html5_file_api", 1, initial_url); | 1038 ClickTestLink("html5_file_api", 1, initial_url); |
(...skipping 18 matching lines...) Expand all Loading... | |
1048 VerifyNavigationEvent(initial_url, // source_url | 1057 VerifyNavigationEvent(initial_url, // source_url |
1049 initial_url, // source_main_frame_url | 1058 initial_url, // source_main_frame_url |
1050 download_url, // original_request_url | 1059 download_url, // original_request_url |
1051 download_url, // destination_url | 1060 download_url, // destination_url |
1052 true, // is_user_initiated, | 1061 true, // is_user_initiated, |
1053 false, // has_committed | 1062 false, // has_committed |
1054 false, // has_server_redirect | 1063 false, // has_server_redirect |
1055 nav_map->at(download_url).at(0)); | 1064 nav_map->at(download_url).at(0)); |
1056 VerifyHostToIpMap(); | 1065 VerifyHostToIpMap(); |
1057 | 1066 |
1058 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 1067 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
1068 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); | |
1059 ASSERT_EQ(2U, referrer_chain.size()); | 1069 ASSERT_EQ(2U, referrer_chain.size()); |
1060 VerifyReferrerChainEntry(download_url, // url | 1070 VerifyReferrerChainEntry(download_url, // url |
1061 ReferrerChainEntry::DOWNLOAD_URL, // type | 1071 ReferrerChainEntry::DOWNLOAD_URL, // type |
1062 "", // ip_address | 1072 "", // ip_address |
1063 initial_url, // referrer_url | 1073 initial_url, // referrer_url |
1064 initial_url, // referrer_main_frame_url | 1074 initial_url, // referrer_main_frame_url |
1065 false, // is_retargeting | 1075 false, // is_retargeting |
1066 referrer_chain[0]); | 1076 referrer_chain[0].get()); |
1067 VerifyReferrerChainEntry(initial_url, // url | 1077 VerifyReferrerChainEntry(initial_url, // url |
1068 ReferrerChainEntry::LANDING_PAGE, // type | 1078 ReferrerChainEntry::LANDING_PAGE, // type |
1069 test_server_ip, // ip_address | 1079 test_server_ip, // ip_address |
1070 GURL(), // referrer_url | 1080 GURL(), // referrer_url |
1071 GURL(), // referrer_main_frame_url | 1081 GURL(), // referrer_main_frame_url |
1072 false, // is_retargeting | 1082 false, // is_retargeting |
1073 referrer_chain[1]); | 1083 referrer_chain[1].get()); |
1074 } | 1084 } |
1075 | 1085 |
1076 // Click a link in a subframe and start download. | 1086 // Click a link in a subframe and start download. |
1077 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 1087 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
1078 SubFrameDirectDownload) { | 1088 SubFrameDirectDownload) { |
1079 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 1089 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
1080 ClickTestLink("sub_frame_download_attribution", 1, initial_url); | 1090 ClickTestLink("sub_frame_download_attribution", 1, initial_url); |
1081 std::string test_name = | 1091 std::string test_name = |
1082 base::StringPrintf("%s', '%s", "iframe1", "iframe_direct_download"); | 1092 base::StringPrintf("%s', '%s", "iframe1", "iframe_direct_download"); |
1083 GURL multi_frame_test_url = | 1093 GURL multi_frame_test_url = |
1084 embedded_test_server()->GetURL(kMultiFrameTestURL); | 1094 embedded_test_server()->GetURL(kMultiFrameTestURL); |
1085 GURL iframe_url = embedded_test_server()->GetURL(kIframeDirectDownloadURL); | 1095 GURL iframe_url = embedded_test_server()->GetURL(kIframeDirectDownloadURL); |
1086 ClickTestLink(test_name.c_str(), 1, iframe_url); | 1096 ClickTestLink(test_name.c_str(), 1, iframe_url); |
1087 GURL iframe_retargeting_url = | 1097 GURL iframe_retargeting_url = |
1088 embedded_test_server()->GetURL(kIframeRetargetingURL); | 1098 embedded_test_server()->GetURL(kIframeRetargetingURL); |
1089 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 1099 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
1090 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 1100 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
1091 auto nav_map = navigation_map(); | 1101 auto nav_map = navigation_map(); |
1092 ASSERT_TRUE(nav_map); | 1102 ASSERT_TRUE(nav_map); |
1093 ASSERT_EQ(std::size_t(5), nav_map->size()); | 1103 ASSERT_EQ(5U, nav_map->size()); |
1094 ASSERT_EQ(1U, nav_map->at(multi_frame_test_url).size()); | 1104 ASSERT_EQ(1U, nav_map->at(multi_frame_test_url).size()); |
1095 ASSERT_EQ(1U, nav_map->at(iframe_url).size()); | 1105 ASSERT_EQ(1U, nav_map->at(iframe_url).size()); |
1096 ASSERT_EQ(1U, nav_map->at(iframe_retargeting_url).size()); | 1106 ASSERT_EQ(1U, nav_map->at(iframe_retargeting_url).size()); |
1097 ASSERT_EQ(1U, nav_map->at(download_url).size()); | 1107 ASSERT_EQ(1U, nav_map->at(download_url).size()); |
1098 ASSERT_EQ(1U, nav_map->at(initial_url).size()); | 1108 ASSERT_EQ(1U, nav_map->at(initial_url).size()); |
1099 VerifyNavigationEvent(GURL(), // source_url | 1109 VerifyNavigationEvent(GURL(), // source_url |
1100 GURL(), // source_main_frame_url | 1110 GURL(), // source_main_frame_url |
1101 initial_url, // original_request_url | 1111 initial_url, // original_request_url |
1102 initial_url, // destination_url | 1112 initial_url, // destination_url |
1103 true, // is_user_initiated, | 1113 true, // is_user_initiated, |
(...skipping 27 matching lines...) Expand all Loading... | |
1131 VerifyNavigationEvent(iframe_url, // source_url | 1141 VerifyNavigationEvent(iframe_url, // source_url |
1132 multi_frame_test_url, // source_main_frame_url | 1142 multi_frame_test_url, // source_main_frame_url |
1133 download_url, // original_request_url | 1143 download_url, // original_request_url |
1134 download_url, // destination_url | 1144 download_url, // destination_url |
1135 true, // is_user_initiated, | 1145 true, // is_user_initiated, |
1136 false, // has_committed | 1146 false, // has_committed |
1137 false, // has_server_redirect | 1147 false, // has_server_redirect |
1138 nav_map->at(download_url).at(0)); | 1148 nav_map->at(download_url).at(0)); |
1139 VerifyHostToIpMap(); | 1149 VerifyHostToIpMap(); |
1140 | 1150 |
1141 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 1151 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
1152 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); | |
1142 ASSERT_EQ(4U, referrer_chain.size()); | 1153 ASSERT_EQ(4U, referrer_chain.size()); |
1143 VerifyReferrerChainEntry(download_url, // url | 1154 VerifyReferrerChainEntry(download_url, // url |
1144 ReferrerChainEntry::DOWNLOAD_URL, // type | 1155 ReferrerChainEntry::DOWNLOAD_URL, // type |
1145 test_server_ip, // ip_address | 1156 test_server_ip, // ip_address |
1146 iframe_url, // referrer_url | 1157 iframe_url, // referrer_url |
1147 multi_frame_test_url, // referrer_main_frame_url | 1158 multi_frame_test_url, // referrer_main_frame_url |
1148 false, // is_retargeting | 1159 false, // is_retargeting |
1149 referrer_chain[0]); | 1160 referrer_chain[0].get()); |
1150 VerifyReferrerChainEntry(iframe_url, // url | 1161 VerifyReferrerChainEntry(iframe_url, // url |
1151 ReferrerChainEntry::LANDING_PAGE, // type | 1162 ReferrerChainEntry::LANDING_PAGE, // type |
1152 test_server_ip, // ip_address | 1163 test_server_ip, // ip_address |
1153 GURL(), // referrer_url | 1164 GURL(), // referrer_url |
1154 multi_frame_test_url, // referrer_main_frame_url | 1165 multi_frame_test_url, // referrer_main_frame_url |
1155 false, // is_retargeting | 1166 false, // is_retargeting |
1156 referrer_chain[1]); | 1167 referrer_chain[1].get()); |
1157 VerifyReferrerChainEntry(multi_frame_test_url, // url | 1168 VerifyReferrerChainEntry(multi_frame_test_url, // url |
1158 ReferrerChainEntry::CLIENT_REDIRECT, // type | 1169 ReferrerChainEntry::CLIENT_REDIRECT, // type |
1159 test_server_ip, // ip_address | 1170 test_server_ip, // ip_address |
1160 initial_url, // referrer_url | 1171 initial_url, // referrer_url |
1161 initial_url, // referrer_main_frame_url | 1172 initial_url, // referrer_main_frame_url |
1162 false, // is_retargeting | 1173 false, // is_retargeting |
1163 referrer_chain[2]); | 1174 referrer_chain[2].get()); |
1164 VerifyReferrerChainEntry(initial_url, // url | 1175 VerifyReferrerChainEntry(initial_url, // url |
1165 ReferrerChainEntry::LANDING_REFERRER, // type | 1176 ReferrerChainEntry::LANDING_REFERRER, // type |
1166 test_server_ip, // ip_address | 1177 test_server_ip, // ip_address |
1167 GURL(), // referrer_url | 1178 GURL(), // referrer_url |
1168 GURL(), // referrer_main_frame_url | 1179 GURL(), // referrer_main_frame_url |
1169 false, // is_retargeting | 1180 false, // is_retargeting |
1170 referrer_chain[3]); | 1181 referrer_chain[3].get()); |
1171 } | 1182 } |
1172 | 1183 |
1173 // Click a link in a subframe and open download in a new tab. | 1184 // Click a link in a subframe and open download in a new tab. |
1174 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 1185 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
1175 SubFrameNewTabDownload) { | 1186 SubFrameNewTabDownload) { |
1176 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 1187 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
1177 ClickTestLink("sub_frame_download_attribution", 1, initial_url); | 1188 ClickTestLink("sub_frame_download_attribution", 1, initial_url); |
1178 std::string test_name = | 1189 std::string test_name = |
1179 base::StringPrintf("%s', '%s", "iframe2", "iframe_new_tab_download"); | 1190 base::StringPrintf("%s', '%s", "iframe2", "iframe_new_tab_download"); |
1180 GURL multi_frame_test_url = | 1191 GURL multi_frame_test_url = |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1246 VerifyNavigationEvent(blank_url, // source_url | 1257 VerifyNavigationEvent(blank_url, // source_url |
1247 blank_url, // source_main_frame_url | 1258 blank_url, // source_main_frame_url |
1248 download_url, // original_request_url | 1259 download_url, // original_request_url |
1249 download_url, // destination_url | 1260 download_url, // destination_url |
1250 false, // is_user_initiated, | 1261 false, // is_user_initiated, |
1251 false, // has_committed | 1262 false, // has_committed |
1252 false, // has_server_redirect | 1263 false, // has_server_redirect |
1253 nav_map->at(download_url).at(0)); | 1264 nav_map->at(download_url).at(0)); |
1254 VerifyHostToIpMap(); | 1265 VerifyHostToIpMap(); |
1255 | 1266 |
1256 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 1267 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
1268 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); | |
1257 EXPECT_EQ(5U, referrer_chain.size()); | 1269 EXPECT_EQ(5U, referrer_chain.size()); |
1258 VerifyReferrerChainEntry(download_url, // url | 1270 VerifyReferrerChainEntry(download_url, // url |
1259 ReferrerChainEntry::DOWNLOAD_URL, // type | 1271 ReferrerChainEntry::DOWNLOAD_URL, // type |
1260 test_server_ip, // ip_address | 1272 test_server_ip, // ip_address |
1261 blank_url, // referrer_url | 1273 blank_url, // referrer_url |
1262 blank_url, // referrer_main_frame_url | 1274 blank_url, // referrer_main_frame_url |
1263 false, // is_retargeting | 1275 false, // is_retargeting |
1264 referrer_chain[0]); | 1276 referrer_chain[0].get()); |
1265 VerifyReferrerChainEntry(blank_url, // url | 1277 VerifyReferrerChainEntry(blank_url, // url |
1266 ReferrerChainEntry::CLIENT_REDIRECT, // type | 1278 ReferrerChainEntry::CLIENT_REDIRECT, // type |
1267 "", // ip_address | 1279 "", // ip_address |
1268 iframe_retargeting_url, // referrer_url | 1280 iframe_retargeting_url, // referrer_url |
1269 multi_frame_test_url, // referrer_main_frame_url | 1281 multi_frame_test_url, // referrer_main_frame_url |
1270 true, // is_retargeting | 1282 true, // is_retargeting |
1271 referrer_chain[1]); | 1283 referrer_chain[1].get()); |
1272 VerifyReferrerChainEntry(iframe_retargeting_url, // url | 1284 VerifyReferrerChainEntry(iframe_retargeting_url, // url |
1273 ReferrerChainEntry::LANDING_PAGE, // type | 1285 ReferrerChainEntry::LANDING_PAGE, // type |
1274 test_server_ip, // ip_address | 1286 test_server_ip, // ip_address |
1275 GURL(), // referrer_url | 1287 GURL(), // referrer_url |
1276 multi_frame_test_url, // referrer_main_frame_url | 1288 multi_frame_test_url, // referrer_main_frame_url |
1277 false, // is_retargeting | 1289 false, // is_retargeting |
1278 referrer_chain[2]); | 1290 referrer_chain[2].get()); |
1279 VerifyReferrerChainEntry(multi_frame_test_url, // url | 1291 VerifyReferrerChainEntry(multi_frame_test_url, // url |
1280 ReferrerChainEntry::CLIENT_REDIRECT, // type | 1292 ReferrerChainEntry::CLIENT_REDIRECT, // type |
1281 test_server_ip, // ip_address | 1293 test_server_ip, // ip_address |
1282 initial_url, // referrer_url | 1294 initial_url, // referrer_url |
1283 initial_url, // referrer_main_frame_url | 1295 initial_url, // referrer_main_frame_url |
1284 false, // is_retargeting | 1296 false, // is_retargeting |
1285 referrer_chain[3]); | 1297 referrer_chain[3].get()); |
1286 VerifyReferrerChainEntry(initial_url, // url | 1298 VerifyReferrerChainEntry(initial_url, // url |
1287 ReferrerChainEntry::LANDING_REFERRER, // type | 1299 ReferrerChainEntry::LANDING_REFERRER, // type |
1288 test_server_ip, // ip_address | 1300 test_server_ip, // ip_address |
1289 GURL(), // referrer_url | 1301 GURL(), // referrer_url |
1290 GURL(), // referrer_main_frame_url | 1302 GURL(), // referrer_main_frame_url |
1291 false, // is_retargeting | 1303 false, // is_retargeting |
1292 referrer_chain[4]); | 1304 referrer_chain[4].get()); |
1293 } | 1305 } |
1294 | 1306 |
1295 // Click a link which redirects to the landing page, and then click on the | 1307 // Click a link which redirects to the landing page, and then click on the |
1296 // landing page to trigger download. | 1308 // landing page to trigger download. |
1297 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, CompleteReferrerChain) { | 1309 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, CompleteReferrerChain) { |
1298 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 1310 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
1299 ClickTestLink("complete_referrer_chain", 2, initial_url); | 1311 ClickTestLink("complete_referrer_chain", 2, initial_url); |
1300 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); | 1312 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); |
1301 GURL landing_url = embedded_test_server()->GetURL(kLandingURL); | 1313 GURL landing_url = embedded_test_server()->GetURL(kLandingURL); |
1302 ClickTestLink("download_on_landing_page", 1, landing_url); | 1314 ClickTestLink("download_on_landing_page", 1, landing_url); |
1303 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 1315 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
1304 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 1316 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
1305 auto nav_map = navigation_map(); | 1317 auto nav_map = navigation_map(); |
1306 ASSERT_TRUE(nav_map); | 1318 ASSERT_TRUE(nav_map); |
1307 ASSERT_EQ(std::size_t(4), nav_map->size()); | 1319 ASSERT_EQ(4U, nav_map->size()); |
1308 ASSERT_EQ(1U, nav_map->at(redirect_url).size()); | 1320 ASSERT_EQ(1U, nav_map->at(redirect_url).size()); |
1309 ASSERT_EQ(1U, nav_map->at(landing_url).size()); | 1321 ASSERT_EQ(1U, nav_map->at(landing_url).size()); |
1310 ASSERT_EQ(1U, nav_map->at(download_url).size()); | 1322 ASSERT_EQ(1U, nav_map->at(download_url).size()); |
1311 ASSERT_EQ(1U, nav_map->at(initial_url).size()); | 1323 ASSERT_EQ(1U, nav_map->at(initial_url).size()); |
1312 VerifyNavigationEvent(GURL(), // source_url | 1324 VerifyNavigationEvent(GURL(), // source_url |
1313 GURL(), // source_main_frame_url | 1325 GURL(), // source_main_frame_url |
1314 initial_url, // original_request_url | 1326 initial_url, // original_request_url |
1315 initial_url, // destination_url | 1327 initial_url, // destination_url |
1316 true, // is_user_initiated, | 1328 true, // is_user_initiated, |
1317 true, // has_committed | 1329 true, // has_committed |
(...skipping 18 matching lines...) Expand all Loading... | |
1336 VerifyNavigationEvent(landing_url, // source_url | 1348 VerifyNavigationEvent(landing_url, // source_url |
1337 landing_url, // source_main_frame_url | 1349 landing_url, // source_main_frame_url |
1338 download_url, // original_request_url | 1350 download_url, // original_request_url |
1339 download_url, // destination_url | 1351 download_url, // destination_url |
1340 true, // is_user_initiated, | 1352 true, // is_user_initiated, |
1341 false, // has_committed | 1353 false, // has_committed |
1342 false, // has_server_redirect | 1354 false, // has_server_redirect |
1343 nav_map->at(download_url).at(0)); | 1355 nav_map->at(download_url).at(0)); |
1344 VerifyHostToIpMap(); | 1356 VerifyHostToIpMap(); |
1345 | 1357 |
1346 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 1358 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
1347 EXPECT_EQ(std::size_t(4), referrer_chain.size()); | 1359 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
1360 EXPECT_EQ(4U, referrer_chain.size()); | |
1348 VerifyReferrerChainEntry(download_url, // url | 1361 VerifyReferrerChainEntry(download_url, // url |
1349 ReferrerChainEntry::DOWNLOAD_URL, // type | 1362 ReferrerChainEntry::DOWNLOAD_URL, // type |
1350 test_server_ip, // ip_address | 1363 test_server_ip, // ip_address |
1351 landing_url, // referrer_url | 1364 landing_url, // referrer_url |
1352 landing_url, // referrer_main_frame_url | 1365 landing_url, // referrer_main_frame_url |
1353 false, // is_retargeting | 1366 false, // is_retargeting |
1354 referrer_chain[0]); | 1367 referrer_chain[0].get()); |
1355 VerifyReferrerChainEntry(landing_url, // url | 1368 VerifyReferrerChainEntry(landing_url, // url |
1356 ReferrerChainEntry::LANDING_PAGE, // type | 1369 ReferrerChainEntry::LANDING_PAGE, // type |
1357 test_server_ip, // ip_address | 1370 test_server_ip, // ip_address |
1358 redirect_url, // referrer_url | 1371 redirect_url, // referrer_url |
1359 redirect_url, // referrer_main_frame_url | 1372 redirect_url, // referrer_main_frame_url |
1360 false, // is_retargeting | 1373 false, // is_retargeting |
1361 referrer_chain[1]); | 1374 referrer_chain[1].get()); |
1362 VerifyReferrerChainEntry(redirect_url, // url | 1375 VerifyReferrerChainEntry(redirect_url, // url |
1363 ReferrerChainEntry::CLIENT_REDIRECT, // type | 1376 ReferrerChainEntry::CLIENT_REDIRECT, // type |
1364 test_server_ip, // ip_address | 1377 test_server_ip, // ip_address |
1365 initial_url, // referrer_url | 1378 initial_url, // referrer_url |
1366 initial_url, // referrer_main_frame_url | 1379 initial_url, // referrer_main_frame_url |
1367 false, // is_retargeting | 1380 false, // is_retargeting |
1368 referrer_chain[2]); | 1381 referrer_chain[2].get()); |
1369 VerifyReferrerChainEntry( | 1382 VerifyReferrerChainEntry( |
1370 initial_url, // url | 1383 initial_url, // url |
1371 ReferrerChainEntry::LANDING_REFERRER, // type | 1384 ReferrerChainEntry::LANDING_REFERRER, // type |
1372 test_server_ip, // ip_address | 1385 test_server_ip, // ip_address |
1373 GURL(), // referrer_url is empty since this beyonds 2 clicks. | 1386 GURL(), // referrer_url is empty since this beyonds 2 clicks. |
1374 GURL(), // referrer_main_frame_url is empty for the same reason. | 1387 GURL(), // referrer_main_frame_url is empty for the same reason. |
1375 false, // is_retargeting | 1388 false, // is_retargeting |
1376 referrer_chain[3]); | 1389 referrer_chain[3].get()); |
1377 } | 1390 } |
1378 | 1391 |
1379 // Click three links before reaching download. | 1392 // Click three links before reaching download. |
1380 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 1393 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
1381 ReferrerAttributionWithinTwoUserGestures) { | 1394 ReferrerAttributionWithinTwoUserGestures) { |
1382 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 1395 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
1383 ClickTestLink("attribution_within_two_user_gestures", 1, initial_url); | 1396 ClickTestLink("attribution_within_two_user_gestures", 1, initial_url); |
1384 GURL page_before_landing_referrer_url = | 1397 GURL page_before_landing_referrer_url = |
1385 embedded_test_server()->GetURL(kPageBeforeLandingReferrerURL); | 1398 embedded_test_server()->GetURL(kPageBeforeLandingReferrerURL); |
1386 ClickTestLink("link_to_landing_referrer", 1, | 1399 ClickTestLink("link_to_landing_referrer", 1, |
1387 page_before_landing_referrer_url); | 1400 page_before_landing_referrer_url); |
1388 GURL landing_referrer_url = | 1401 GURL landing_referrer_url = |
1389 embedded_test_server()->GetURL(kLandingReferrerURL); | 1402 embedded_test_server()->GetURL(kLandingReferrerURL); |
1390 ClickTestLink("link_to_landing", 1, landing_referrer_url); | 1403 ClickTestLink("link_to_landing", 1, landing_referrer_url); |
1391 GURL landing_url = embedded_test_server()->GetURL(kLandingURL); | 1404 GURL landing_url = embedded_test_server()->GetURL(kLandingURL); |
1392 ClickTestLink("download_on_landing_page", 1, landing_url); | 1405 ClickTestLink("download_on_landing_page", 1, landing_url); |
1393 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 1406 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
1394 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 1407 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
1395 auto nav_map = navigation_map(); | 1408 auto nav_map = navigation_map(); |
1396 ASSERT_TRUE(nav_map); | 1409 ASSERT_TRUE(nav_map); |
1397 ASSERT_EQ(std::size_t(5), nav_map->size()); | 1410 ASSERT_EQ(5U, nav_map->size()); |
1398 ASSERT_EQ(1U, nav_map->at(initial_url).size()); | 1411 ASSERT_EQ(1U, nav_map->at(initial_url).size()); |
1399 ASSERT_EQ(1U, nav_map->at(page_before_landing_referrer_url).size()); | 1412 ASSERT_EQ(1U, nav_map->at(page_before_landing_referrer_url).size()); |
1400 ASSERT_EQ(1U, nav_map->at(landing_referrer_url).size()); | 1413 ASSERT_EQ(1U, nav_map->at(landing_referrer_url).size()); |
1401 ASSERT_EQ(1U, nav_map->at(landing_url).size()); | 1414 ASSERT_EQ(1U, nav_map->at(landing_url).size()); |
1402 ASSERT_EQ(1U, nav_map->at(download_url).size()); | 1415 ASSERT_EQ(1U, nav_map->at(download_url).size()); |
1403 VerifyNavigationEvent(GURL(), // source_url | 1416 VerifyNavigationEvent(GURL(), // source_url |
1404 GURL(), // source_main_frame_url | 1417 GURL(), // source_main_frame_url |
1405 initial_url, // original_request_url | 1418 initial_url, // original_request_url |
1406 initial_url, // destination_url | 1419 initial_url, // destination_url |
1407 true, // is_user_initiated, | 1420 true, // is_user_initiated, |
(...skipping 27 matching lines...) Expand all Loading... | |
1435 VerifyNavigationEvent(landing_url, // source_url | 1448 VerifyNavigationEvent(landing_url, // source_url |
1436 landing_url, // source_main_frame_url | 1449 landing_url, // source_main_frame_url |
1437 download_url, // original_request_url | 1450 download_url, // original_request_url |
1438 download_url, // destination_url | 1451 download_url, // destination_url |
1439 true, // is_user_initiated, | 1452 true, // is_user_initiated, |
1440 false, // has_committed | 1453 false, // has_committed |
1441 false, // has_server_redirect | 1454 false, // has_server_redirect |
1442 nav_map->at(download_url).at(0)); | 1455 nav_map->at(download_url).at(0)); |
1443 VerifyHostToIpMap(); | 1456 VerifyHostToIpMap(); |
1444 | 1457 |
1445 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 1458 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
1446 EXPECT_EQ(std::size_t(3), referrer_chain.size()); | 1459 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
1460 EXPECT_EQ(3U, referrer_chain.size()); | |
1447 VerifyReferrerChainEntry(download_url, // url | 1461 VerifyReferrerChainEntry(download_url, // url |
1448 ReferrerChainEntry::DOWNLOAD_URL, // type | 1462 ReferrerChainEntry::DOWNLOAD_URL, // type |
1449 test_server_ip, // ip_address | 1463 test_server_ip, // ip_address |
1450 landing_url, // referrer_url | 1464 landing_url, // referrer_url |
1451 landing_url, // referrer_main_frame_url | 1465 landing_url, // referrer_main_frame_url |
1452 false, // is_retargeting | 1466 false, // is_retargeting |
1453 referrer_chain[0]); | 1467 referrer_chain[0].get()); |
1454 VerifyReferrerChainEntry(landing_url, // url | 1468 VerifyReferrerChainEntry(landing_url, // url |
1455 ReferrerChainEntry::LANDING_PAGE, // type | 1469 ReferrerChainEntry::LANDING_PAGE, // type |
1456 test_server_ip, // ip_address | 1470 test_server_ip, // ip_address |
1457 landing_referrer_url, // referrer_url | 1471 landing_referrer_url, // referrer_url |
1458 landing_referrer_url, // referrer_main_frame_url | 1472 landing_referrer_url, // referrer_main_frame_url |
1459 false, // is_retargeting | 1473 false, // is_retargeting |
1460 referrer_chain[1]); | 1474 referrer_chain[1].get()); |
1461 VerifyReferrerChainEntry( | 1475 VerifyReferrerChainEntry( |
1462 landing_referrer_url, // url | 1476 landing_referrer_url, // url |
1463 ReferrerChainEntry::LANDING_REFERRER, // type | 1477 ReferrerChainEntry::LANDING_REFERRER, // type |
1464 test_server_ip, // ip_address | 1478 test_server_ip, // ip_address |
1465 GURL(), // referrer_url is empty since this beyonds 2 clicks. | 1479 GURL(), // referrer_url is empty since this beyonds 2 clicks. |
1466 GURL(), // referrer_main_frame_url is empty for the same reason. | 1480 GURL(), // referrer_main_frame_url is empty for the same reason. |
1467 false, // is_retargeting | 1481 false, // is_retargeting |
1468 referrer_chain[2]); | 1482 referrer_chain[2].get()); |
1469 // page_before_landing_referrer_url is not in referrer chain. | 1483 // page_before_landing_referrer_url is not in referrer chain. |
1470 } | 1484 } |
1471 | 1485 |
1472 // Click a link which redirects to a PPAPI landing page. | 1486 // Click a link which redirects to a PPAPI landing page. |
1473 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 1487 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
1474 PPAPIDownloadWithUserGestureOnHostingFrame) { | 1488 PPAPIDownloadWithUserGestureOnHostingFrame) { |
1475 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 1489 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
1476 ClickTestLink("complete_referrer_chain", 2, initial_url); | 1490 ClickTestLink("complete_referrer_chain", 2, initial_url); |
1477 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); | 1491 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); |
1478 GURL landing_url = embedded_test_server()->GetURL(kLandingURL); | 1492 GURL landing_url = embedded_test_server()->GetURL(kLandingURL); |
1479 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 1493 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
1480 | 1494 |
1481 // Simulate a user gesture on landing page. | 1495 // Simulate a user gesture on landing page. |
1482 SimulateUserGesture(); | 1496 SimulateUserGesture(); |
1483 auto nav_map = navigation_map(); | 1497 auto nav_map = navigation_map(); |
1484 ASSERT_TRUE(nav_map); | 1498 ASSERT_TRUE(nav_map); |
1485 ASSERT_EQ(std::size_t(3), nav_map->size()); | 1499 ASSERT_EQ(3U, nav_map->size()); |
1486 ASSERT_EQ(1U, nav_map->at(redirect_url).size()); | 1500 ASSERT_EQ(1U, nav_map->at(redirect_url).size()); |
1487 ASSERT_EQ(1U, nav_map->at(landing_url).size()); | 1501 ASSERT_EQ(1U, nav_map->at(landing_url).size()); |
1488 ASSERT_EQ(1U, nav_map->at(initial_url).size()); | 1502 ASSERT_EQ(1U, nav_map->at(initial_url).size()); |
1489 VerifyNavigationEvent(GURL(), // source_url | 1503 VerifyNavigationEvent(GURL(), // source_url |
1490 GURL(), // source_main_frame_url | 1504 GURL(), // source_main_frame_url |
1491 initial_url, // original_request_url | 1505 initial_url, // original_request_url |
1492 initial_url, // destination_url | 1506 initial_url, // destination_url |
1493 true, // is_user_initiated, | 1507 true, // is_user_initiated, |
1494 true, // has_committed | 1508 true, // has_committed |
1495 false, // has_server_redirect | 1509 false, // has_server_redirect |
1496 nav_map->at(initial_url).at(0)); | 1510 nav_map->at(initial_url).at(0)); |
1497 VerifyNavigationEvent(initial_url, // source_url | 1511 VerifyNavigationEvent(initial_url, // source_url |
1498 initial_url, // source_main_frame_url | 1512 initial_url, // source_main_frame_url |
1499 redirect_url, // original_request_url | 1513 redirect_url, // original_request_url |
1500 redirect_url, // destination_url | 1514 redirect_url, // destination_url |
1501 true, // is_user_initiated, | 1515 true, // is_user_initiated, |
1502 true, // has_committed | 1516 true, // has_committed |
1503 false, // has_server_redirect | 1517 false, // has_server_redirect |
1504 nav_map->at(redirect_url).at(0)); | 1518 nav_map->at(redirect_url).at(0)); |
1505 VerifyNavigationEvent(redirect_url, // source_url | 1519 VerifyNavigationEvent(redirect_url, // source_url |
1506 redirect_url, // source_main_frame_url | 1520 redirect_url, // source_main_frame_url |
1507 landing_url, // original_request_url | 1521 landing_url, // original_request_url |
1508 landing_url, // destination_url | 1522 landing_url, // destination_url |
1509 false, // is_user_initiated, | 1523 false, // is_user_initiated, |
1510 true, // has_committed | 1524 true, // has_committed |
1511 false, // has_server_redirect | 1525 false, // has_server_redirect |
1512 nav_map->at(landing_url).at(0)); | 1526 nav_map->at(landing_url).at(0)); |
1513 VerifyHostToIpMap(); | 1527 VerifyHostToIpMap(); |
1514 | 1528 |
1515 auto referrer_chain = IdentifyReferrerChainForPPAPIDownload( | 1529 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
1516 landing_url, browser()->tab_strip_model()->GetActiveWebContents()); | 1530 IdentifyReferrerChainForPPAPIDownload( |
1517 | 1531 landing_url, |
1518 EXPECT_EQ(std::size_t(3), referrer_chain.size()); | 1532 browser()->tab_strip_model()->GetActiveWebContents(), |
1533 &referrer_chain); | |
1534 EXPECT_EQ(3U, referrer_chain.size()); | |
1519 VerifyReferrerChainEntry(landing_url, // url | 1535 VerifyReferrerChainEntry(landing_url, // url |
1520 ReferrerChainEntry::LANDING_PAGE, // type | 1536 ReferrerChainEntry::LANDING_PAGE, // type |
1521 test_server_ip, // ip_address | 1537 test_server_ip, // ip_address |
1522 redirect_url, // referrer_url | 1538 redirect_url, // referrer_url |
1523 redirect_url, // referrer_main_frame_url | 1539 redirect_url, // referrer_main_frame_url |
1524 false, // is_retargeting | 1540 false, // is_retargeting |
1525 referrer_chain[0]); | 1541 referrer_chain[0].get()); |
1526 VerifyReferrerChainEntry(redirect_url, // url | 1542 VerifyReferrerChainEntry(redirect_url, // url |
1527 ReferrerChainEntry::CLIENT_REDIRECT, // type | 1543 ReferrerChainEntry::CLIENT_REDIRECT, // type |
1528 test_server_ip, // ip_address | 1544 test_server_ip, // ip_address |
1529 initial_url, // referrer_url | 1545 initial_url, // referrer_url |
1530 initial_url, // referrer_main_frame_url | 1546 initial_url, // referrer_main_frame_url |
1531 false, // is_retargeting | 1547 false, // is_retargeting |
1532 referrer_chain[1]); | 1548 referrer_chain[1].get()); |
1533 VerifyReferrerChainEntry( | 1549 VerifyReferrerChainEntry( |
1534 initial_url, // url | 1550 initial_url, // url |
1535 ReferrerChainEntry::LANDING_REFERRER, // type | 1551 ReferrerChainEntry::LANDING_REFERRER, // type |
1536 test_server_ip, // ip_address | 1552 test_server_ip, // ip_address |
1537 GURL(), // referrer_url is empty since this beyonds 2 clicks. | 1553 GURL(), // referrer_url is empty since this beyonds 2 clicks. |
1538 GURL(), // referrer_main_frame_url is empty for the same reason. | 1554 GURL(), // referrer_main_frame_url is empty for the same reason. |
1539 false, // is_retargeting | 1555 false, // is_retargeting |
1540 referrer_chain[2]); | 1556 referrer_chain[2].get()); |
1541 } | 1557 } |
1542 | 1558 |
1543 // Click a link which redirects to a page that triggers PPAPI download without | 1559 // Click a link which redirects to a page that triggers PPAPI download without |
1544 // user gesture (a.k.a not a landing page). | 1560 // user gesture (a.k.a not a landing page). |
1545 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 1561 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
1546 PPAPIDownloadWithoutUserGestureOnHostingFrame) { | 1562 PPAPIDownloadWithoutUserGestureOnHostingFrame) { |
1547 GURL landing_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 1563 GURL landing_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
1548 ClickTestLink("complete_referrer_chain", 2, landing_url); | 1564 ClickTestLink("complete_referrer_chain", 2, landing_url); |
1549 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); | 1565 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); |
1550 GURL hosting_url = embedded_test_server()->GetURL(kLandingURL); | 1566 GURL hosting_url = embedded_test_server()->GetURL(kLandingURL); |
1551 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 1567 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
1552 | 1568 |
1553 auto nav_map = navigation_map(); | 1569 auto nav_map = navigation_map(); |
1554 ASSERT_TRUE(nav_map); | 1570 ASSERT_TRUE(nav_map); |
1555 ASSERT_EQ(std::size_t(3), nav_map->size()); | 1571 ASSERT_EQ(3U, nav_map->size()); |
1556 ASSERT_EQ(1U, nav_map->at(redirect_url).size()); | 1572 ASSERT_EQ(1U, nav_map->at(redirect_url).size()); |
1557 ASSERT_EQ(1U, nav_map->at(hosting_url).size()); | 1573 ASSERT_EQ(1U, nav_map->at(hosting_url).size()); |
1558 ASSERT_EQ(1U, nav_map->at(landing_url).size()); | 1574 ASSERT_EQ(1U, nav_map->at(landing_url).size()); |
1559 VerifyNavigationEvent(GURL(), // source_url | 1575 VerifyNavigationEvent(GURL(), // source_url |
1560 GURL(), // source_main_frame_url | 1576 GURL(), // source_main_frame_url |
1561 landing_url, // original_request_url | 1577 landing_url, // original_request_url |
1562 landing_url, // destination_url | 1578 landing_url, // destination_url |
1563 true, // is_user_initiated, | 1579 true, // is_user_initiated, |
1564 true, // has_committed | 1580 true, // has_committed |
1565 false, // has_server_redirect | 1581 false, // has_server_redirect |
1566 nav_map->at(landing_url).at(0)); | 1582 nav_map->at(landing_url).at(0)); |
1567 VerifyNavigationEvent(landing_url, // source_url | 1583 VerifyNavigationEvent(landing_url, // source_url |
1568 landing_url, // source_main_frame_url | 1584 landing_url, // source_main_frame_url |
1569 redirect_url, // original_request_url | 1585 redirect_url, // original_request_url |
1570 redirect_url, // destination_url | 1586 redirect_url, // destination_url |
1571 true, // is_user_initiated, | 1587 true, // is_user_initiated, |
1572 true, // has_committed | 1588 true, // has_committed |
1573 false, // has_server_redirect | 1589 false, // has_server_redirect |
1574 nav_map->at(redirect_url).at(0)); | 1590 nav_map->at(redirect_url).at(0)); |
1575 VerifyNavigationEvent(redirect_url, // source_url | 1591 VerifyNavigationEvent(redirect_url, // source_url |
1576 redirect_url, // source_main_frame_url | 1592 redirect_url, // source_main_frame_url |
1577 hosting_url, // original_request_url | 1593 hosting_url, // original_request_url |
1578 hosting_url, // destination_url | 1594 hosting_url, // destination_url |
1579 false, // is_user_initiated, | 1595 false, // is_user_initiated, |
1580 true, // has_committed | 1596 true, // has_committed |
1581 false, // has_server_redirect | 1597 false, // has_server_redirect |
1582 nav_map->at(hosting_url).at(0)); | 1598 nav_map->at(hosting_url).at(0)); |
1583 VerifyHostToIpMap(); | 1599 VerifyHostToIpMap(); |
1584 | 1600 |
1585 auto referrer_chain = IdentifyReferrerChainForPPAPIDownload( | 1601 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
1586 hosting_url, browser()->tab_strip_model()->GetActiveWebContents()); | 1602 IdentifyReferrerChainForPPAPIDownload( |
1587 | 1603 hosting_url, |
1588 EXPECT_EQ(std::size_t(3), referrer_chain.size()); | 1604 browser()->tab_strip_model()->GetActiveWebContents(), |
1605 &referrer_chain); | |
1606 EXPECT_EQ(3U, referrer_chain.size()); | |
1589 VerifyReferrerChainEntry(hosting_url, // url | 1607 VerifyReferrerChainEntry(hosting_url, // url |
1590 ReferrerChainEntry::CLIENT_REDIRECT, // type | 1608 ReferrerChainEntry::CLIENT_REDIRECT, // type |
1591 test_server_ip, // ip_address | 1609 test_server_ip, // ip_address |
1592 redirect_url, // referrer_url | 1610 redirect_url, // referrer_url |
1593 redirect_url, // referrer_main_frame_url | 1611 redirect_url, // referrer_main_frame_url |
1594 false, // is_retargeting | 1612 false, // is_retargeting |
1595 referrer_chain[0]); | 1613 referrer_chain[0].get()); |
1596 VerifyReferrerChainEntry(redirect_url, // url | 1614 VerifyReferrerChainEntry(redirect_url, // url |
1597 ReferrerChainEntry::CLIENT_REDIRECT, // type | 1615 ReferrerChainEntry::CLIENT_REDIRECT, // type |
1598 test_server_ip, // ip_address | 1616 test_server_ip, // ip_address |
1599 landing_url, // referrer_url | 1617 landing_url, // referrer_url |
1600 landing_url, // referrer_main_frame_url | 1618 landing_url, // referrer_main_frame_url |
1601 false, // is_retargeting | 1619 false, // is_retargeting |
1602 referrer_chain[1]); | 1620 referrer_chain[1].get()); |
1603 VerifyReferrerChainEntry(landing_url, // url | 1621 VerifyReferrerChainEntry(landing_url, // url |
1604 ReferrerChainEntry::LANDING_PAGE, // type | 1622 ReferrerChainEntry::LANDING_PAGE, // type |
1605 test_server_ip, // ip_address | 1623 test_server_ip, // ip_address |
1606 GURL(), // no more referrer before landing_url | 1624 GURL(), // no more referrer before landing_url |
1607 GURL(), | 1625 GURL(), |
1608 false, // is_retargeting | 1626 false, // is_retargeting |
1609 referrer_chain[2]); | 1627 referrer_chain[2].get()); |
1610 } | 1628 } |
1611 | 1629 |
1612 // Server-side redirect. | 1630 // Server-side redirect. |
1613 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, ServerRedirect) { | 1631 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, ServerRedirect) { |
1614 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 1632 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
1615 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 1633 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
1616 GURL request_url = | 1634 GURL request_url = |
1617 embedded_test_server()->GetURL("/server-redirect?" + download_url.spec()); | 1635 embedded_test_server()->GetURL("/server-redirect?" + download_url.spec()); |
1618 ui_test_utils::NavigateToURL(browser(), request_url); | 1636 ui_test_utils::NavigateToURL(browser(), request_url); |
1619 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 1637 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
(...skipping 12 matching lines...) Expand all Loading... | |
1632 nav_map->at(initial_url).at(0)); | 1650 nav_map->at(initial_url).at(0)); |
1633 VerifyNavigationEvent(GURL(), // source_url | 1651 VerifyNavigationEvent(GURL(), // source_url |
1634 GURL(), // source_main_frame_url | 1652 GURL(), // source_main_frame_url |
1635 request_url, // original_request_url | 1653 request_url, // original_request_url |
1636 download_url, // destination_url | 1654 download_url, // destination_url |
1637 true, // is_user_initiated, | 1655 true, // is_user_initiated, |
1638 false, // has_committed | 1656 false, // has_committed |
1639 true, // has_server_redirect | 1657 true, // has_server_redirect |
1640 nav_map->at(download_url).at(0)); | 1658 nav_map->at(download_url).at(0)); |
1641 | 1659 |
1642 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 1660 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
1661 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); | |
1643 ASSERT_EQ(1U, referrer_chain.size()); | 1662 ASSERT_EQ(1U, referrer_chain.size()); |
1644 VerifyReferrerChainEntry(download_url, // url | 1663 VerifyReferrerChainEntry(download_url, // url |
1645 ReferrerChainEntry::DOWNLOAD_URL, // type | 1664 ReferrerChainEntry::DOWNLOAD_URL, // type |
1646 test_server_ip, // ip_address | 1665 test_server_ip, // ip_address |
1647 GURL(), // referrer_url | 1666 GURL(), // referrer_url |
1648 GURL(), // referrer_main_frame_url | 1667 GURL(), // referrer_main_frame_url |
1649 false, // is_retargeting | 1668 false, // is_retargeting |
1650 referrer_chain[0]); | 1669 referrer_chain[0].get()); |
1651 } | 1670 } |
1652 | 1671 |
1653 // Retargeting immediately followed by server-side redirect. | 1672 // Retargeting immediately followed by server-side redirect. |
1654 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, | 1673 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
1655 RetargetingAndServerRedirect) { | 1674 RetargetingAndServerRedirect) { |
1656 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 1675 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
1657 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 1676 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
1658 GURL request_url = | 1677 GURL request_url = |
1659 embedded_test_server()->GetURL("/server-redirect?" + download_url.spec()); | 1678 embedded_test_server()->GetURL("/server-redirect?" + download_url.spec()); |
1660 ClickTestLink("new_tab_download_with_server_redirect", 1, initial_url); | 1679 ClickTestLink("new_tab_download_with_server_redirect", 1, initial_url); |
(...skipping 22 matching lines...) Expand all Loading... | |
1683 nav_map->at(request_url).at(0)); | 1702 nav_map->at(request_url).at(0)); |
1684 VerifyNavigationEvent(GURL(), // source_url | 1703 VerifyNavigationEvent(GURL(), // source_url |
1685 GURL(), // source_main_frame_url | 1704 GURL(), // source_main_frame_url |
1686 request_url, // original_request_url | 1705 request_url, // original_request_url |
1687 download_url, // destination_url | 1706 download_url, // destination_url |
1688 false, // is_user_initiated, | 1707 false, // is_user_initiated, |
1689 false, // has_committed | 1708 false, // has_committed |
1690 true, // has_server_redirect | 1709 true, // has_server_redirect |
1691 nav_map->at(download_url).at(0)); | 1710 nav_map->at(download_url).at(0)); |
1692 | 1711 |
1693 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); | 1712 SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain; |
1713 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); | |
1694 ASSERT_EQ(2U, referrer_chain.size()); | 1714 ASSERT_EQ(2U, referrer_chain.size()); |
1695 VerifyReferrerChainEntry(download_url, // url | 1715 VerifyReferrerChainEntry(download_url, // url |
1696 ReferrerChainEntry::DOWNLOAD_URL, // type | 1716 ReferrerChainEntry::DOWNLOAD_URL, // type |
1697 test_server_ip, // ip_address | 1717 test_server_ip, // ip_address |
1698 initial_url, // referrer_url | 1718 initial_url, // referrer_url |
1699 initial_url, // referrer_main_frame_url | 1719 initial_url, // referrer_main_frame_url |
1700 true, // is_retargeting | 1720 true, // is_retargeting |
1701 referrer_chain[0]); | 1721 referrer_chain[0].get()); |
1702 VerifyReferrerChainEntry(initial_url, // url | 1722 VerifyReferrerChainEntry(initial_url, // url |
1703 ReferrerChainEntry::LANDING_PAGE, // type | 1723 ReferrerChainEntry::LANDING_PAGE, // type |
1704 test_server_ip, // ip_address | 1724 test_server_ip, // ip_address |
1705 GURL(), // referrer_url | 1725 GURL(), // referrer_url |
1706 GURL(), // referrer_main_frame_url | 1726 GURL(), // referrer_main_frame_url |
1707 false, // is_retargeting | 1727 false, // is_retargeting |
1708 referrer_chain[1]); | 1728 referrer_chain[1].get()); |
1709 } | 1729 } |
1710 | 1730 |
1711 // host_to_ip_map_ size should increase by one after a new navigation. | 1731 // host_to_ip_map_ size should increase by one after a new navigation. |
1712 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, AddIPMapping) { | 1732 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, AddIPMapping) { |
1713 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 1733 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
1714 auto ip_map = host_to_ip_map(); | 1734 auto ip_map = host_to_ip_map(); |
1715 std::string test_server_host(embedded_test_server()->base_url().host()); | 1735 std::string test_server_host(embedded_test_server()->base_url().host()); |
1716 ip_map->clear(); | 1736 ip_map->clear(); |
1717 ip_map->insert( | 1737 ip_map->insert( |
1718 std::make_pair(test_server_host, std::vector<ResolvedIPAddress>())); | 1738 std::make_pair(test_server_host, std::vector<ResolvedIPAddress>())); |
(...skipping 18 matching lines...) Expand all Loading... | |
1737 yesterday, embedded_test_server()->host_port_pair().host())); | 1757 yesterday, embedded_test_server()->host_port_pair().host())); |
1738 ASSERT_EQ(1U, ip_map->at(test_server_host).size()); | 1758 ASSERT_EQ(1U, ip_map->at(test_server_host).size()); |
1739 ClickTestLink("direct_download", 1, initial_url); | 1759 ClickTestLink("direct_download", 1, initial_url); |
1740 EXPECT_EQ(1U, ip_map->at(test_server_host).size()); | 1760 EXPECT_EQ(1U, ip_map->at(test_server_host).size()); |
1741 EXPECT_EQ(embedded_test_server()->host_port_pair().host(), | 1761 EXPECT_EQ(embedded_test_server()->host_port_pair().host(), |
1742 ip_map->at(test_server_host).back().ip); | 1762 ip_map->at(test_server_host).back().ip); |
1743 EXPECT_NE(yesterday, ip_map->at(test_server_host).front().timestamp); | 1763 EXPECT_NE(yesterday, ip_map->at(test_server_host).front().timestamp); |
1744 } | 1764 } |
1745 | 1765 |
1746 } // namespace safe_browsing | 1766 } // namespace safe_browsing |
OLD | NEW |