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 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 } else { | 243 } else { |
244 ASSERT_EQ(1, actual_entry.ip_addresses_size()); | 244 ASSERT_EQ(1, actual_entry.ip_addresses_size()); |
245 EXPECT_EQ(expected_ip_address, actual_entry.ip_addresses(0)); | 245 EXPECT_EQ(expected_ip_address, actual_entry.ip_addresses(0)); |
246 } | 246 } |
247 EXPECT_EQ(expected_referrer_url.spec(), actual_entry.referrer_url()); | 247 EXPECT_EQ(expected_referrer_url.spec(), actual_entry.referrer_url()); |
248 EXPECT_EQ(expected_referrer_main_frame_url.spec(), | 248 EXPECT_EQ(expected_referrer_main_frame_url.spec(), |
249 actual_entry.referrer_main_frame_url()); | 249 actual_entry.referrer_main_frame_url()); |
250 EXPECT_EQ(expected_is_retargeting, actual_entry.is_retargeting()); | 250 EXPECT_EQ(expected_is_retargeting, actual_entry.is_retargeting()); |
251 } | 251 } |
252 | 252 |
253 std::vector<ReferrerChainEntry> IdentifyReferrerChain( | 253 std::vector<ReferrerChainEntry> IdentifyReferrerChainForDownload( |
254 DownloadItem* download) { | 254 DownloadItem* download) { |
255 std::vector<ReferrerChainEntry> referrer_chain; | 255 std::vector<ReferrerChainEntry> referrer_chain; |
256 int download_tab_id = | 256 int download_tab_id = |
257 SessionTabHelper::IdForTab(download->GetWebContents()); | 257 SessionTabHelper::IdForTab(download->GetWebContents()); |
258 // IdentifyReferrerChain should return SUCCESS(1), SUCCESS_LANDING_PAGE(2), | 258 // IdentifyReferrerChain should return SUCCESS(1), SUCCESS_LANDING_PAGE(2), |
259 // or SUCCESS_LANDING_REFERRER(3) in all these tests. | 259 // or SUCCESS_LANDING_REFERRER(3) in all these tests. |
260 EXPECT_LE(observer_manager_->IdentifyReferrerChain( | 260 EXPECT_LE(observer_manager_->IdentifyReferrerChainForDownload( |
261 download->GetURL(), download_tab_id, | 261 download->GetURL(), download_tab_id, |
262 2, // kDownloadAttributionUserGestureLimit | 262 2, // kDownloadAttributionUserGestureLimit |
263 &referrer_chain), | 263 &referrer_chain), |
264 SafeBrowsingNavigationObserverManager::SUCCESS_LANDING_REFERRER); | 264 SafeBrowsingNavigationObserverManager::SUCCESS_LANDING_REFERRER); |
265 return referrer_chain; | 265 return referrer_chain; |
266 } | 266 } |
267 | 267 |
| 268 std::vector<ReferrerChainEntry> IdentifyReferrerChainForPPAPIDownload( |
| 269 const GURL& initiating_frame_url, |
| 270 content::WebContents* web_contents) { |
| 271 std::vector<ReferrerChainEntry> referrer_chain; |
| 272 int tab_id = SessionTabHelper::IdForTab(web_contents); |
| 273 bool has_user_gesture = observer_manager_->HasUserGesture(web_contents); |
| 274 observer_manager_->OnUserGestureConsumed(web_contents, base::Time::Now()); |
| 275 EXPECT_LE(observer_manager_->IdentifyReferrerChainForPPAPIDownload( |
| 276 initiating_frame_url, |
| 277 tab_id, |
| 278 has_user_gesture, |
| 279 2, // kDownloadAttributionUserGestureLimit) |
| 280 &referrer_chain), |
| 281 SafeBrowsingNavigationObserverManager::SUCCESS_LANDING_REFERRER); |
| 282 return referrer_chain; |
| 283 } |
| 284 |
268 void VerifyHostToIpMap() { | 285 void VerifyHostToIpMap() { |
269 // Since all testing pages have the same host, there is only one entry in | 286 // Since all testing pages have the same host, there is only one entry in |
270 // host_to_ip_map_. | 287 // host_to_ip_map_. |
271 SafeBrowsingNavigationObserverManager::HostToIpMap* actual_host_ip_map = | 288 SafeBrowsingNavigationObserverManager::HostToIpMap* actual_host_ip_map = |
272 host_to_ip_map(); | 289 host_to_ip_map(); |
273 ASSERT_EQ(1U, actual_host_ip_map->size()); | 290 ASSERT_EQ(1U, actual_host_ip_map->size()); |
274 auto ip_list = | 291 auto ip_list = |
275 actual_host_ip_map->at(embedded_test_server()->base_url().host()); | 292 actual_host_ip_map->at(embedded_test_server()->base_url().host()); |
276 ASSERT_EQ(1U, ip_list.size()); | 293 ASSERT_EQ(1U, ip_list.size()); |
277 EXPECT_EQ(embedded_test_server()->host_port_pair().host(), | 294 EXPECT_EQ(embedded_test_server()->host_port_pair().host(), |
278 ip_list.back().ip); | 295 ip_list.back().ip); |
279 } | 296 } |
280 | 297 |
| 298 void SimulateUserGesture(){ |
| 299 observer_manager_->RecordUserGestureForWebContents( |
| 300 browser()->tab_strip_model()->GetActiveWebContents(), |
| 301 base::Time::Now()); |
| 302 } |
| 303 |
281 SafeBrowsingNavigationObserverManager::NavigationMap* navigation_map() { | 304 SafeBrowsingNavigationObserverManager::NavigationMap* navigation_map() { |
282 return observer_manager_->navigation_map(); | 305 return observer_manager_->navigation_map(); |
283 } | 306 } |
284 | 307 |
285 SafeBrowsingNavigationObserverManager::HostToIpMap* host_to_ip_map() { | 308 SafeBrowsingNavigationObserverManager::HostToIpMap* host_to_ip_map() { |
286 return observer_manager_->host_to_ip_map(); | 309 return observer_manager_->host_to_ip_map(); |
287 } | 310 } |
288 | 311 |
289 protected: | 312 protected: |
290 SafeBrowsingNavigationObserverManager* observer_manager_; | 313 SafeBrowsingNavigationObserverManager* observer_manager_; |
(...skipping 26 matching lines...) Expand all Loading... |
317 VerifyNavigationEvent(GURL(), // source_url | 340 VerifyNavigationEvent(GURL(), // source_url |
318 GURL(), // source_main_frame_url | 341 GURL(), // source_main_frame_url |
319 download_url, // original_request_url | 342 download_url, // original_request_url |
320 download_url, // destination_url | 343 download_url, // destination_url |
321 true, // is_user_initiated, | 344 true, // is_user_initiated, |
322 false, // has_committed | 345 false, // has_committed |
323 false, // has_server_redirect | 346 false, // has_server_redirect |
324 nav_map->at(download_url).at(0)); | 347 nav_map->at(download_url).at(0)); |
325 VerifyHostToIpMap(); | 348 VerifyHostToIpMap(); |
326 | 349 |
327 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 350 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
328 ASSERT_EQ(1U, referrer_chain.size()); | 351 ASSERT_EQ(1U, referrer_chain.size()); |
329 VerifyReferrerChainEntry(download_url, // url | 352 VerifyReferrerChainEntry(download_url, // url |
330 ReferrerChainEntry::DOWNLOAD_URL, // type | 353 ReferrerChainEntry::DOWNLOAD_URL, // type |
331 test_server_ip, // ip_address | 354 test_server_ip, // ip_address |
332 GURL(), // referrer_url | 355 GURL(), // referrer_url |
333 GURL(), // referrer_main_frame_url | 356 GURL(), // referrer_main_frame_url |
334 false, // is_retargeting | 357 false, // is_retargeting |
335 referrer_chain[0]); | 358 referrer_chain[0]); |
336 } | 359 } |
337 // Click on a link and start download on the same page. | 360 // Click on a link and start download on the same page. |
(...skipping 18 matching lines...) Expand all Loading... |
356 VerifyNavigationEvent(initial_url, // source_url | 379 VerifyNavigationEvent(initial_url, // source_url |
357 initial_url, // source_main_frame_url | 380 initial_url, // source_main_frame_url |
358 download_url, // original_request_url | 381 download_url, // original_request_url |
359 download_url, // destination_url | 382 download_url, // destination_url |
360 true, // is_user_initiated, | 383 true, // is_user_initiated, |
361 false, // has_committed | 384 false, // has_committed |
362 false, // has_server_redirect | 385 false, // has_server_redirect |
363 nav_map->at(download_url).at(0)); | 386 nav_map->at(download_url).at(0)); |
364 VerifyHostToIpMap(); | 387 VerifyHostToIpMap(); |
365 | 388 |
366 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 389 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
367 ASSERT_EQ(2U, referrer_chain.size()); | 390 ASSERT_EQ(2U, referrer_chain.size()); |
368 VerifyReferrerChainEntry(download_url, // url | 391 VerifyReferrerChainEntry(download_url, // url |
369 ReferrerChainEntry::DOWNLOAD_URL, // type | 392 ReferrerChainEntry::DOWNLOAD_URL, // type |
370 test_server_ip, // ip_address | 393 test_server_ip, // ip_address |
371 initial_url, // referrer_url | 394 initial_url, // referrer_url |
372 initial_url, // referrer_main_frame_url | 395 initial_url, // referrer_main_frame_url |
373 false, // is_retargeting | 396 false, // is_retargeting |
374 referrer_chain[0]); | 397 referrer_chain[0]); |
375 VerifyReferrerChainEntry(initial_url, // url | 398 VerifyReferrerChainEntry(initial_url, // url |
376 ReferrerChainEntry::LANDING_PAGE, // type | 399 ReferrerChainEntry::LANDING_PAGE, // type |
(...skipping 28 matching lines...) Expand all Loading... |
405 VerifyNavigationEvent(initial_url, // source_url | 428 VerifyNavigationEvent(initial_url, // source_url |
406 initial_url, // source_main_frame_url | 429 initial_url, // source_main_frame_url |
407 download_url, // original_request_url | 430 download_url, // original_request_url |
408 download_url, // destination_url | 431 download_url, // destination_url |
409 true, // is_user_initiated, | 432 true, // is_user_initiated, |
410 false, // has_committed | 433 false, // has_committed |
411 false, // has_server_redirect | 434 false, // has_server_redirect |
412 nav_map->at(download_url).at(0)); | 435 nav_map->at(download_url).at(0)); |
413 VerifyHostToIpMap(); | 436 VerifyHostToIpMap(); |
414 | 437 |
415 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 438 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
416 ASSERT_EQ(2U, referrer_chain.size()); | 439 ASSERT_EQ(2U, referrer_chain.size()); |
417 VerifyReferrerChainEntry(download_url, // url | 440 VerifyReferrerChainEntry(download_url, // url |
418 ReferrerChainEntry::DOWNLOAD_URL, // type | 441 ReferrerChainEntry::DOWNLOAD_URL, // type |
419 test_server_ip, // ip_address | 442 test_server_ip, // ip_address |
420 initial_url, // referrer_url | 443 initial_url, // referrer_url |
421 initial_url, // referrer_main_frame_url | 444 initial_url, // referrer_main_frame_url |
422 false, // is_retargeting | 445 false, // is_retargeting |
423 referrer_chain[0]); | 446 referrer_chain[0]); |
424 VerifyReferrerChainEntry(initial_url, // url | 447 VerifyReferrerChainEntry(initial_url, // url |
425 ReferrerChainEntry::LANDING_PAGE, // type | 448 ReferrerChainEntry::LANDING_PAGE, // type |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
468 VerifyNavigationEvent(GURL(), // source_url | 491 VerifyNavigationEvent(GURL(), // source_url |
469 GURL(), // source_main_frame_url | 492 GURL(), // source_main_frame_url |
470 download_url, // original_request_url | 493 download_url, // original_request_url |
471 download_url, // destination_url | 494 download_url, // destination_url |
472 false, // is_user_initiated, | 495 false, // is_user_initiated, |
473 false, // has_committed | 496 false, // has_committed |
474 false, // has_server_redirect | 497 false, // has_server_redirect |
475 nav_map->at(download_url).at(1)); | 498 nav_map->at(download_url).at(1)); |
476 VerifyHostToIpMap(); | 499 VerifyHostToIpMap(); |
477 | 500 |
478 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 501 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
479 ASSERT_EQ(2U, referrer_chain.size()); | 502 ASSERT_EQ(2U, referrer_chain.size()); |
480 VerifyReferrerChainEntry(download_url, // url | 503 VerifyReferrerChainEntry(download_url, // url |
481 ReferrerChainEntry::DOWNLOAD_URL, // type | 504 ReferrerChainEntry::DOWNLOAD_URL, // type |
482 test_server_ip, // ip_address | 505 test_server_ip, // ip_address |
483 initial_url, // referrer_url | 506 initial_url, // referrer_url |
484 initial_url, // referrer_main_frame_url | 507 initial_url, // referrer_main_frame_url |
485 true, // is_retargeting | 508 true, // is_retargeting |
486 referrer_chain[0]); | 509 referrer_chain[0]); |
487 VerifyReferrerChainEntry(initial_url, // url | 510 VerifyReferrerChainEntry(initial_url, // url |
488 ReferrerChainEntry::LANDING_PAGE, // type | 511 ReferrerChainEntry::LANDING_PAGE, // type |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
529 VerifyNavigationEvent(redirect_url, // source_url | 552 VerifyNavigationEvent(redirect_url, // source_url |
530 redirect_url, // source_main_frame_url | 553 redirect_url, // source_main_frame_url |
531 download_url, // original_request_url | 554 download_url, // original_request_url |
532 download_url, // destination_url | 555 download_url, // destination_url |
533 false, // is_user_initiated, | 556 false, // is_user_initiated, |
534 false, // has_committed | 557 false, // has_committed |
535 false, // has_server_redirect | 558 false, // has_server_redirect |
536 nav_map->at(download_url).at(0)); | 559 nav_map->at(download_url).at(0)); |
537 VerifyHostToIpMap(); | 560 VerifyHostToIpMap(); |
538 | 561 |
539 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 562 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
540 ASSERT_EQ(std::size_t(3), referrer_chain.size()); | 563 ASSERT_EQ(std::size_t(3), referrer_chain.size()); |
541 VerifyReferrerChainEntry(download_url, // url | 564 VerifyReferrerChainEntry(download_url, // url |
542 ReferrerChainEntry::DOWNLOAD_URL, // type | 565 ReferrerChainEntry::DOWNLOAD_URL, // type |
543 test_server_ip, // ip_address | 566 test_server_ip, // ip_address |
544 redirect_url, // referrer_url | 567 redirect_url, // referrer_url |
545 redirect_url, // referrer_main_frame_url | 568 redirect_url, // referrer_main_frame_url |
546 false, // is_retargeting | 569 false, // is_retargeting |
547 referrer_chain[0]); | 570 referrer_chain[0]); |
548 VerifyReferrerChainEntry(redirect_url, // url | 571 VerifyReferrerChainEntry(redirect_url, // url |
549 ReferrerChainEntry::CLIENT_REDIRECT, // type | 572 ReferrerChainEntry::CLIENT_REDIRECT, // type |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
606 VerifyNavigationEvent(redirect_url, // source_url | 629 VerifyNavigationEvent(redirect_url, // source_url |
607 redirect_url, // source_main_frame_url | 630 redirect_url, // source_main_frame_url |
608 download_url, // original_request_url | 631 download_url, // original_request_url |
609 download_url, // destination_url | 632 download_url, // destination_url |
610 false, // is_user_initiated, | 633 false, // is_user_initiated, |
611 false, // has_committed | 634 false, // has_committed |
612 false, // has_server_redirect | 635 false, // has_server_redirect |
613 nav_map->at(download_url).at(0)); | 636 nav_map->at(download_url).at(0)); |
614 VerifyHostToIpMap(); | 637 VerifyHostToIpMap(); |
615 | 638 |
616 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 639 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
617 ASSERT_EQ(std::size_t(3), referrer_chain.size()); | 640 ASSERT_EQ(std::size_t(3), referrer_chain.size()); |
618 VerifyReferrerChainEntry(download_url, // url | 641 VerifyReferrerChainEntry(download_url, // url |
619 ReferrerChainEntry::DOWNLOAD_URL, // type | 642 ReferrerChainEntry::DOWNLOAD_URL, // type |
620 test_server_ip, // ip_address | 643 test_server_ip, // ip_address |
621 redirect_url, // referrer_url | 644 redirect_url, // referrer_url |
622 redirect_url, // referrer_main_frame_url | 645 redirect_url, // referrer_main_frame_url |
623 false, // is_retargeting | 646 false, // is_retargeting |
624 referrer_chain[0]); | 647 referrer_chain[0]); |
625 VerifyReferrerChainEntry(redirect_url, // url | 648 VerifyReferrerChainEntry(redirect_url, // url |
626 ReferrerChainEntry::CLIENT_REDIRECT, // type | 649 ReferrerChainEntry::CLIENT_REDIRECT, // type |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
684 VerifyNavigationEvent(second_redirect_url, // source_url | 707 VerifyNavigationEvent(second_redirect_url, // source_url |
685 second_redirect_url, // source_main_frame_url | 708 second_redirect_url, // source_main_frame_url |
686 download_url, // original_request_url | 709 download_url, // original_request_url |
687 download_url, // destination_url | 710 download_url, // destination_url |
688 false, // is_user_initiated, | 711 false, // is_user_initiated, |
689 false, // has_committed | 712 false, // has_committed |
690 false, // has_server_redirect | 713 false, // has_server_redirect |
691 nav_map->at(download_url).at(0)); | 714 nav_map->at(download_url).at(0)); |
692 VerifyHostToIpMap(); | 715 VerifyHostToIpMap(); |
693 | 716 |
694 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 717 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
695 ASSERT_EQ(std::size_t(4), referrer_chain.size()); | 718 ASSERT_EQ(std::size_t(4), referrer_chain.size()); |
696 VerifyReferrerChainEntry(download_url, // url | 719 VerifyReferrerChainEntry(download_url, // url |
697 ReferrerChainEntry::DOWNLOAD_URL, // type | 720 ReferrerChainEntry::DOWNLOAD_URL, // type |
698 test_server_ip, // ip_address | 721 test_server_ip, // ip_address |
699 second_redirect_url, // referrer_url | 722 second_redirect_url, // referrer_url |
700 second_redirect_url, // referrer_main_frame_url | 723 second_redirect_url, // referrer_main_frame_url |
701 false, // is_retargeting | 724 false, // is_retargeting |
702 referrer_chain[0]); | 725 referrer_chain[0]); |
703 VerifyReferrerChainEntry(second_redirect_url, // url | 726 VerifyReferrerChainEntry(second_redirect_url, // url |
704 ReferrerChainEntry::CLIENT_REDIRECT, // type | 727 ReferrerChainEntry::CLIENT_REDIRECT, // type |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
746 nav_map->at(initial_url).at(0)); | 769 nav_map->at(initial_url).at(0)); |
747 VerifyNavigationEvent(initial_url, // source_url | 770 VerifyNavigationEvent(initial_url, // source_url |
748 initial_url, // source_main_frame_url | 771 initial_url, // source_main_frame_url |
749 download_url, // original_request_url | 772 download_url, // original_request_url |
750 download_url, // destination_url | 773 download_url, // destination_url |
751 true, // is_user_initiated, | 774 true, // is_user_initiated, |
752 false, // has_committed | 775 false, // has_committed |
753 false, // has_server_redirect | 776 false, // has_server_redirect |
754 nav_map->at(download_url).at(0)); | 777 nav_map->at(download_url).at(0)); |
755 | 778 |
756 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 779 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
757 ASSERT_EQ(2U, referrer_chain.size()); | 780 ASSERT_EQ(2U, referrer_chain.size()); |
758 VerifyReferrerChainEntry(download_url, // url | 781 VerifyReferrerChainEntry(download_url, // url |
759 ReferrerChainEntry::DOWNLOAD_URL, // type | 782 ReferrerChainEntry::DOWNLOAD_URL, // type |
760 test_server_ip, // ip_address | 783 test_server_ip, // ip_address |
761 initial_url, // referrer_url | 784 initial_url, // referrer_url |
762 initial_url, // referrer_main_frame_url | 785 initial_url, // referrer_main_frame_url |
763 false, // is_retargeting | 786 false, // is_retargeting |
764 referrer_chain[0]); | 787 referrer_chain[0]); |
765 VerifyReferrerChainEntry(initial_url, // url | 788 VerifyReferrerChainEntry(initial_url, // url |
766 ReferrerChainEntry::LANDING_PAGE, // type | 789 ReferrerChainEntry::LANDING_PAGE, // type |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
805 VerifyNavigationEvent(redirect_url, // source_url | 828 VerifyNavigationEvent(redirect_url, // source_url |
806 redirect_url, // source_main_frame_url | 829 redirect_url, // source_main_frame_url |
807 download_url, // original_request_url | 830 download_url, // original_request_url |
808 download_url, // destination_url | 831 download_url, // destination_url |
809 false, // is_user_initiated, | 832 false, // is_user_initiated, |
810 false, // has_committed | 833 false, // has_committed |
811 false, // has_server_redirect | 834 false, // has_server_redirect |
812 nav_map->at(download_url).at(0)); | 835 nav_map->at(download_url).at(0)); |
813 VerifyHostToIpMap(); | 836 VerifyHostToIpMap(); |
814 | 837 |
815 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 838 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
816 ASSERT_EQ(std::size_t(3), referrer_chain.size()); | 839 ASSERT_EQ(std::size_t(3), referrer_chain.size()); |
817 VerifyReferrerChainEntry(download_url, // url | 840 VerifyReferrerChainEntry(download_url, // url |
818 ReferrerChainEntry::DOWNLOAD_URL, // type | 841 ReferrerChainEntry::DOWNLOAD_URL, // type |
819 test_server_ip, // ip_address | 842 test_server_ip, // ip_address |
820 redirect_url, // referrer_url | 843 redirect_url, // referrer_url |
821 redirect_url, // referrer_main_frame_url | 844 redirect_url, // referrer_main_frame_url |
822 false, // is_retargeting | 845 false, // is_retargeting |
823 referrer_chain[0]); | 846 referrer_chain[0]); |
824 VerifyReferrerChainEntry(redirect_url, // url | 847 VerifyReferrerChainEntry(redirect_url, // url |
825 ReferrerChainEntry::CLIENT_REDIRECT, // type | 848 ReferrerChainEntry::CLIENT_REDIRECT, // type |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
884 download_url, // original_request_url | 907 download_url, // original_request_url |
885 download_url, // destination_url | 908 download_url, // destination_url |
886 false, // is_user_initiated, | 909 false, // is_user_initiated, |
887 false, // has_committed | 910 false, // has_committed |
888 false, // has_server_redirect | 911 false, // has_server_redirect |
889 nav_map->at(download_url).at(0)); | 912 nav_map->at(download_url).at(0)); |
890 EXPECT_EQ(nav_map->at(download_url).at(0).source_tab_id, | 913 EXPECT_EQ(nav_map->at(download_url).at(0).source_tab_id, |
891 nav_map->at(download_url).at(0).target_tab_id); | 914 nav_map->at(download_url).at(0).target_tab_id); |
892 VerifyHostToIpMap(); | 915 VerifyHostToIpMap(); |
893 | 916 |
894 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 917 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
895 ASSERT_EQ(std::size_t(3), referrer_chain.size()); | 918 ASSERT_EQ(std::size_t(3), referrer_chain.size()); |
896 VerifyReferrerChainEntry(download_url, // url | 919 VerifyReferrerChainEntry(download_url, // url |
897 ReferrerChainEntry::DOWNLOAD_URL, // type | 920 ReferrerChainEntry::DOWNLOAD_URL, // type |
898 test_server_ip, // ip_address | 921 test_server_ip, // ip_address |
899 blank_url, // referrer_url | 922 blank_url, // referrer_url |
900 blank_url, // referrer_main_frame_url | 923 blank_url, // referrer_main_frame_url |
901 false, // is_retargeting | 924 false, // is_retargeting |
902 referrer_chain[0]); | 925 referrer_chain[0]); |
903 VerifyReferrerChainEntry(blank_url, // url | 926 VerifyReferrerChainEntry(blank_url, // url |
904 ReferrerChainEntry::CLIENT_REDIRECT, // type | 927 ReferrerChainEntry::CLIENT_REDIRECT, // type |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
965 download_url, // original_request_url | 988 download_url, // original_request_url |
966 download_url, // destination_url | 989 download_url, // destination_url |
967 false, // is_user_initiated, | 990 false, // is_user_initiated, |
968 false, // has_committed | 991 false, // has_committed |
969 false, // has_server_redirect | 992 false, // has_server_redirect |
970 nav_map->at(download_url).at(0)); | 993 nav_map->at(download_url).at(0)); |
971 EXPECT_TRUE(nav_map->at(download_url).at(0).source_tab_id == | 994 EXPECT_TRUE(nav_map->at(download_url).at(0).source_tab_id == |
972 nav_map->at(download_url).at(0).target_tab_id); | 995 nav_map->at(download_url).at(0).target_tab_id); |
973 VerifyHostToIpMap(); | 996 VerifyHostToIpMap(); |
974 | 997 |
975 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 998 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
976 ASSERT_EQ(std::size_t(3), referrer_chain.size()); | 999 ASSERT_EQ(std::size_t(3), referrer_chain.size()); |
977 VerifyReferrerChainEntry(download_url, // url | 1000 VerifyReferrerChainEntry(download_url, // url |
978 ReferrerChainEntry::DOWNLOAD_URL, // type | 1001 ReferrerChainEntry::DOWNLOAD_URL, // type |
979 "", // ip_address | 1002 "", // ip_address |
980 blank_url, // referrer_url | 1003 blank_url, // referrer_url |
981 blank_url, // referrer_main_frame_url | 1004 blank_url, // referrer_main_frame_url |
982 false, // is_retargeting | 1005 false, // is_retargeting |
983 referrer_chain[0]); | 1006 referrer_chain[0]); |
984 VerifyReferrerChainEntry(blank_url, // url | 1007 VerifyReferrerChainEntry(blank_url, // url |
985 ReferrerChainEntry::CLIENT_REDIRECT, // type | 1008 ReferrerChainEntry::CLIENT_REDIRECT, // type |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1026 VerifyNavigationEvent(initial_url, // source_url | 1049 VerifyNavigationEvent(initial_url, // source_url |
1027 initial_url, // source_main_frame_url | 1050 initial_url, // source_main_frame_url |
1028 download_url, // original_request_url | 1051 download_url, // original_request_url |
1029 download_url, // destination_url | 1052 download_url, // destination_url |
1030 true, // is_user_initiated, | 1053 true, // is_user_initiated, |
1031 false, // has_committed | 1054 false, // has_committed |
1032 false, // has_server_redirect | 1055 false, // has_server_redirect |
1033 nav_map->at(download_url).at(0)); | 1056 nav_map->at(download_url).at(0)); |
1034 VerifyHostToIpMap(); | 1057 VerifyHostToIpMap(); |
1035 | 1058 |
1036 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 1059 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
1037 ASSERT_EQ(2U, referrer_chain.size()); | 1060 ASSERT_EQ(2U, referrer_chain.size()); |
1038 VerifyReferrerChainEntry(download_url, // url | 1061 VerifyReferrerChainEntry(download_url, // url |
1039 ReferrerChainEntry::DOWNLOAD_URL, // type | 1062 ReferrerChainEntry::DOWNLOAD_URL, // type |
1040 "", // ip_address | 1063 "", // ip_address |
1041 initial_url, // referrer_url | 1064 initial_url, // referrer_url |
1042 initial_url, // referrer_main_frame_url | 1065 initial_url, // referrer_main_frame_url |
1043 false, // is_retargeting | 1066 false, // is_retargeting |
1044 referrer_chain[0]); | 1067 referrer_chain[0]); |
1045 VerifyReferrerChainEntry(initial_url, // url | 1068 VerifyReferrerChainEntry(initial_url, // url |
1046 ReferrerChainEntry::LANDING_PAGE, // type | 1069 ReferrerChainEntry::LANDING_PAGE, // type |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1109 VerifyNavigationEvent(iframe_url, // source_url | 1132 VerifyNavigationEvent(iframe_url, // source_url |
1110 multi_frame_test_url, // source_main_frame_url | 1133 multi_frame_test_url, // source_main_frame_url |
1111 download_url, // original_request_url | 1134 download_url, // original_request_url |
1112 download_url, // destination_url | 1135 download_url, // destination_url |
1113 true, // is_user_initiated, | 1136 true, // is_user_initiated, |
1114 false, // has_committed | 1137 false, // has_committed |
1115 false, // has_server_redirect | 1138 false, // has_server_redirect |
1116 nav_map->at(download_url).at(0)); | 1139 nav_map->at(download_url).at(0)); |
1117 VerifyHostToIpMap(); | 1140 VerifyHostToIpMap(); |
1118 | 1141 |
1119 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 1142 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
1120 ASSERT_EQ(4U, referrer_chain.size()); | 1143 ASSERT_EQ(4U, referrer_chain.size()); |
1121 VerifyReferrerChainEntry(download_url, // url | 1144 VerifyReferrerChainEntry(download_url, // url |
1122 ReferrerChainEntry::DOWNLOAD_URL, // type | 1145 ReferrerChainEntry::DOWNLOAD_URL, // type |
1123 test_server_ip, // ip_address | 1146 test_server_ip, // ip_address |
1124 iframe_url, // referrer_url | 1147 iframe_url, // referrer_url |
1125 multi_frame_test_url, // referrer_main_frame_url | 1148 multi_frame_test_url, // referrer_main_frame_url |
1126 false, // is_retargeting | 1149 false, // is_retargeting |
1127 referrer_chain[0]); | 1150 referrer_chain[0]); |
1128 VerifyReferrerChainEntry(iframe_url, // url | 1151 VerifyReferrerChainEntry(iframe_url, // url |
1129 ReferrerChainEntry::LANDING_PAGE, // type | 1152 ReferrerChainEntry::LANDING_PAGE, // type |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1224 VerifyNavigationEvent(blank_url, // source_url | 1247 VerifyNavigationEvent(blank_url, // source_url |
1225 blank_url, // source_main_frame_url | 1248 blank_url, // source_main_frame_url |
1226 download_url, // original_request_url | 1249 download_url, // original_request_url |
1227 download_url, // destination_url | 1250 download_url, // destination_url |
1228 false, // is_user_initiated, | 1251 false, // is_user_initiated, |
1229 false, // has_committed | 1252 false, // has_committed |
1230 false, // has_server_redirect | 1253 false, // has_server_redirect |
1231 nav_map->at(download_url).at(0)); | 1254 nav_map->at(download_url).at(0)); |
1232 VerifyHostToIpMap(); | 1255 VerifyHostToIpMap(); |
1233 | 1256 |
1234 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 1257 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
1235 EXPECT_EQ(5U, referrer_chain.size()); | 1258 EXPECT_EQ(5U, referrer_chain.size()); |
1236 VerifyReferrerChainEntry(download_url, // url | 1259 VerifyReferrerChainEntry(download_url, // url |
1237 ReferrerChainEntry::DOWNLOAD_URL, // type | 1260 ReferrerChainEntry::DOWNLOAD_URL, // type |
1238 test_server_ip, // ip_address | 1261 test_server_ip, // ip_address |
1239 blank_url, // referrer_url | 1262 blank_url, // referrer_url |
1240 blank_url, // referrer_main_frame_url | 1263 blank_url, // referrer_main_frame_url |
1241 false, // is_retargeting | 1264 false, // is_retargeting |
1242 referrer_chain[0]); | 1265 referrer_chain[0]); |
1243 VerifyReferrerChainEntry(blank_url, // url | 1266 VerifyReferrerChainEntry(blank_url, // url |
1244 ReferrerChainEntry::CLIENT_REDIRECT, // type | 1267 ReferrerChainEntry::CLIENT_REDIRECT, // type |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1314 VerifyNavigationEvent(landing_url, // source_url | 1337 VerifyNavigationEvent(landing_url, // source_url |
1315 landing_url, // source_main_frame_url | 1338 landing_url, // source_main_frame_url |
1316 download_url, // original_request_url | 1339 download_url, // original_request_url |
1317 download_url, // destination_url | 1340 download_url, // destination_url |
1318 true, // is_user_initiated, | 1341 true, // is_user_initiated, |
1319 false, // has_committed | 1342 false, // has_committed |
1320 false, // has_server_redirect | 1343 false, // has_server_redirect |
1321 nav_map->at(download_url).at(0)); | 1344 nav_map->at(download_url).at(0)); |
1322 VerifyHostToIpMap(); | 1345 VerifyHostToIpMap(); |
1323 | 1346 |
1324 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 1347 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
1325 EXPECT_EQ(std::size_t(4), referrer_chain.size()); | 1348 EXPECT_EQ(std::size_t(4), referrer_chain.size()); |
1326 VerifyReferrerChainEntry(download_url, // url | 1349 VerifyReferrerChainEntry(download_url, // url |
1327 ReferrerChainEntry::DOWNLOAD_URL, // type | 1350 ReferrerChainEntry::DOWNLOAD_URL, // type |
1328 test_server_ip, // ip_address | 1351 test_server_ip, // ip_address |
1329 landing_url, // referrer_url | 1352 landing_url, // referrer_url |
1330 landing_url, // referrer_main_frame_url | 1353 landing_url, // referrer_main_frame_url |
1331 false, // is_retargeting | 1354 false, // is_retargeting |
1332 referrer_chain[0]); | 1355 referrer_chain[0]); |
1333 VerifyReferrerChainEntry(landing_url, // url | 1356 VerifyReferrerChainEntry(landing_url, // url |
1334 ReferrerChainEntry::LANDING_PAGE, // type | 1357 ReferrerChainEntry::LANDING_PAGE, // type |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1413 VerifyNavigationEvent(landing_url, // source_url | 1436 VerifyNavigationEvent(landing_url, // source_url |
1414 landing_url, // source_main_frame_url | 1437 landing_url, // source_main_frame_url |
1415 download_url, // original_request_url | 1438 download_url, // original_request_url |
1416 download_url, // destination_url | 1439 download_url, // destination_url |
1417 true, // is_user_initiated, | 1440 true, // is_user_initiated, |
1418 false, // has_committed | 1441 false, // has_committed |
1419 false, // has_server_redirect | 1442 false, // has_server_redirect |
1420 nav_map->at(download_url).at(0)); | 1443 nav_map->at(download_url).at(0)); |
1421 VerifyHostToIpMap(); | 1444 VerifyHostToIpMap(); |
1422 | 1445 |
1423 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 1446 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
1424 EXPECT_EQ(std::size_t(3), referrer_chain.size()); | 1447 EXPECT_EQ(std::size_t(3), referrer_chain.size()); |
1425 VerifyReferrerChainEntry(download_url, // url | 1448 VerifyReferrerChainEntry(download_url, // url |
1426 ReferrerChainEntry::DOWNLOAD_URL, // type | 1449 ReferrerChainEntry::DOWNLOAD_URL, // type |
1427 test_server_ip, // ip_address | 1450 test_server_ip, // ip_address |
1428 landing_url, // referrer_url | 1451 landing_url, // referrer_url |
1429 landing_url, // referrer_main_frame_url | 1452 landing_url, // referrer_main_frame_url |
1430 false, // is_retargeting | 1453 false, // is_retargeting |
1431 referrer_chain[0]); | 1454 referrer_chain[0]); |
1432 VerifyReferrerChainEntry(landing_url, // url | 1455 VerifyReferrerChainEntry(landing_url, // url |
1433 ReferrerChainEntry::LANDING_PAGE, // type | 1456 ReferrerChainEntry::LANDING_PAGE, // type |
1434 test_server_ip, // ip_address | 1457 test_server_ip, // ip_address |
1435 landing_referrer_url, // referrer_url | 1458 landing_referrer_url, // referrer_url |
1436 landing_referrer_url, // referrer_main_frame_url | 1459 landing_referrer_url, // referrer_main_frame_url |
1437 false, // is_retargeting | 1460 false, // is_retargeting |
1438 referrer_chain[1]); | 1461 referrer_chain[1]); |
1439 VerifyReferrerChainEntry( | 1462 VerifyReferrerChainEntry( |
1440 landing_referrer_url, // url | 1463 landing_referrer_url, // url |
1441 ReferrerChainEntry::LANDING_REFERRER, // type | 1464 ReferrerChainEntry::LANDING_REFERRER, // type |
1442 test_server_ip, // ip_address | 1465 test_server_ip, // ip_address |
1443 GURL(), // referrer_url is empty since this beyonds 2 clicks. | 1466 GURL(), // referrer_url is empty since this beyonds 2 clicks. |
1444 GURL(), // referrer_main_frame_url is empty for the same reason. | 1467 GURL(), // referrer_main_frame_url is empty for the same reason. |
1445 false, // is_retargeting | 1468 false, // is_retargeting |
1446 referrer_chain[2]); | 1469 referrer_chain[2]); |
1447 // page_before_landing_referrer_url is not in referrer chain. | 1470 // page_before_landing_referrer_url is not in referrer chain. |
1448 } | 1471 } |
1449 | 1472 |
| 1473 // Click a link which redirects to a PPAPI landing page. |
| 1474 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| 1475 PPAPIDownloadWithUserGestureOnHostingFrame) { |
| 1476 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
| 1477 ClickTestLink("complete_referrer_chain", 2, initial_url); |
| 1478 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); |
| 1479 GURL landing_url = embedded_test_server()->GetURL(kLandingURL); |
| 1480 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
| 1481 |
| 1482 // Simulate a user gesture on landing page. |
| 1483 SimulateUserGesture(); |
| 1484 auto nav_map = navigation_map(); |
| 1485 ASSERT_TRUE(nav_map); |
| 1486 ASSERT_EQ(std::size_t(3), nav_map->size()); |
| 1487 ASSERT_EQ(1U, nav_map->at(redirect_url).size()); |
| 1488 ASSERT_EQ(1U, nav_map->at(landing_url).size()); |
| 1489 ASSERT_EQ(1U, nav_map->at(initial_url).size()); |
| 1490 VerifyNavigationEvent(GURL(), // source_url |
| 1491 GURL(), // source_main_frame_url |
| 1492 initial_url, // original_request_url |
| 1493 initial_url, // destination_url |
| 1494 true, // is_user_initiated, |
| 1495 true, // has_committed |
| 1496 false, // has_server_redirect |
| 1497 nav_map->at(initial_url).at(0)); |
| 1498 VerifyNavigationEvent(initial_url, // source_url |
| 1499 initial_url, // source_main_frame_url |
| 1500 redirect_url, // original_request_url |
| 1501 redirect_url, // destination_url |
| 1502 true, // is_user_initiated, |
| 1503 true, // has_committed |
| 1504 false, // has_server_redirect |
| 1505 nav_map->at(redirect_url).at(0)); |
| 1506 VerifyNavigationEvent(redirect_url, // source_url |
| 1507 redirect_url, // source_main_frame_url |
| 1508 landing_url, // original_request_url |
| 1509 landing_url, // destination_url |
| 1510 false, // is_user_initiated, |
| 1511 true, // has_committed |
| 1512 false, // has_server_redirect |
| 1513 nav_map->at(landing_url).at(0)); |
| 1514 VerifyHostToIpMap(); |
| 1515 |
| 1516 auto referrer_chain = IdentifyReferrerChainForPPAPIDownload( |
| 1517 landing_url, browser()->tab_strip_model()->GetActiveWebContents()); |
| 1518 |
| 1519 EXPECT_EQ(std::size_t(3), referrer_chain.size()); |
| 1520 VerifyReferrerChainEntry(landing_url, // url |
| 1521 ReferrerChainEntry::LANDING_PAGE, // type |
| 1522 test_server_ip, // ip_address |
| 1523 redirect_url, // referrer_url |
| 1524 redirect_url, // referrer_main_frame_url |
| 1525 false, // is_retargeting |
| 1526 referrer_chain[0]); |
| 1527 VerifyReferrerChainEntry(redirect_url, // url |
| 1528 ReferrerChainEntry::CLIENT_REDIRECT, // type |
| 1529 test_server_ip, // ip_address |
| 1530 initial_url, // referrer_url |
| 1531 initial_url, // referrer_main_frame_url |
| 1532 false, // is_retargeting |
| 1533 referrer_chain[1]); |
| 1534 VerifyReferrerChainEntry( |
| 1535 initial_url, // url |
| 1536 ReferrerChainEntry::LANDING_REFERRER, // type |
| 1537 test_server_ip, // ip_address |
| 1538 GURL(), // referrer_url is empty since this beyonds 2 clicks. |
| 1539 GURL(), // referrer_main_frame_url is empty for the same reason. |
| 1540 false, // is_retargeting |
| 1541 referrer_chain[2]); |
| 1542 } |
| 1543 |
| 1544 // Click a link which redirects to a page that triggers PPAPI download without |
| 1545 // user gesture (a.k.a not a landing page). |
| 1546 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| 1547 PPAPIDownloadWithoutUserGestureOnHostingFrame) { |
| 1548 GURL landing_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
| 1549 ClickTestLink("complete_referrer_chain", 2, landing_url); |
| 1550 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); |
| 1551 GURL hosting_url = embedded_test_server()->GetURL(kLandingURL); |
| 1552 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
| 1553 |
| 1554 auto nav_map = navigation_map(); |
| 1555 ASSERT_TRUE(nav_map); |
| 1556 ASSERT_EQ(std::size_t(3), nav_map->size()); |
| 1557 ASSERT_EQ(1U, nav_map->at(redirect_url).size()); |
| 1558 ASSERT_EQ(1U, nav_map->at(hosting_url).size()); |
| 1559 ASSERT_EQ(1U, nav_map->at(landing_url).size()); |
| 1560 VerifyNavigationEvent(GURL(), // source_url |
| 1561 GURL(), // source_main_frame_url |
| 1562 landing_url, // original_request_url |
| 1563 landing_url, // destination_url |
| 1564 true, // is_user_initiated, |
| 1565 true, // has_committed |
| 1566 false, // has_server_redirect |
| 1567 nav_map->at(landing_url).at(0)); |
| 1568 VerifyNavigationEvent(landing_url, // source_url |
| 1569 landing_url, // source_main_frame_url |
| 1570 redirect_url, // original_request_url |
| 1571 redirect_url, // destination_url |
| 1572 true, // is_user_initiated, |
| 1573 true, // has_committed |
| 1574 false, // has_server_redirect |
| 1575 nav_map->at(redirect_url).at(0)); |
| 1576 VerifyNavigationEvent(redirect_url, // source_url |
| 1577 redirect_url, // source_main_frame_url |
| 1578 hosting_url, // original_request_url |
| 1579 hosting_url, // destination_url |
| 1580 false, // is_user_initiated, |
| 1581 true, // has_committed |
| 1582 false, // has_server_redirect |
| 1583 nav_map->at(hosting_url).at(0)); |
| 1584 VerifyHostToIpMap(); |
| 1585 |
| 1586 auto referrer_chain = IdentifyReferrerChainForPPAPIDownload( |
| 1587 hosting_url, browser()->tab_strip_model()->GetActiveWebContents()); |
| 1588 |
| 1589 EXPECT_EQ(std::size_t(3), referrer_chain.size()); |
| 1590 VerifyReferrerChainEntry(hosting_url, // url |
| 1591 ReferrerChainEntry::CLIENT_REDIRECT, // type |
| 1592 test_server_ip, // ip_address |
| 1593 redirect_url, // referrer_url |
| 1594 redirect_url, // referrer_main_frame_url |
| 1595 false, // is_retargeting |
| 1596 referrer_chain[0]); |
| 1597 VerifyReferrerChainEntry(redirect_url, // url |
| 1598 ReferrerChainEntry::CLIENT_REDIRECT, // type |
| 1599 test_server_ip, // ip_address |
| 1600 landing_url, // referrer_url |
| 1601 landing_url, // referrer_main_frame_url |
| 1602 false, // is_retargeting |
| 1603 referrer_chain[1]); |
| 1604 VerifyReferrerChainEntry(landing_url, // url |
| 1605 ReferrerChainEntry::LANDING_PAGE, // type |
| 1606 test_server_ip, // ip_address |
| 1607 GURL(), // no more referrer before landing_url |
| 1608 GURL(), |
| 1609 false, // is_retargeting |
| 1610 referrer_chain[2]); |
| 1611 } |
| 1612 |
1450 // Server-side redirect. | 1613 // Server-side redirect. |
1451 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, ServerRedirect) { | 1614 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, ServerRedirect) { |
1452 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 1615 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
1453 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); | 1616 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
1454 GURL request_url = | 1617 GURL request_url = |
1455 embedded_test_server()->GetURL("/server-redirect?" + download_url.spec()); | 1618 embedded_test_server()->GetURL("/server-redirect?" + download_url.spec()); |
1456 ui_test_utils::NavigateToURL(browser(), request_url); | 1619 ui_test_utils::NavigateToURL(browser(), request_url); |
1457 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); | 1620 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
1458 auto nav_map = navigation_map(); | 1621 auto nav_map = navigation_map(); |
1459 ASSERT_TRUE(nav_map); | 1622 ASSERT_TRUE(nav_map); |
(...skipping 10 matching lines...) Expand all Loading... |
1470 nav_map->at(initial_url).at(0)); | 1633 nav_map->at(initial_url).at(0)); |
1471 VerifyNavigationEvent(GURL(), // source_url | 1634 VerifyNavigationEvent(GURL(), // source_url |
1472 GURL(), // source_main_frame_url | 1635 GURL(), // source_main_frame_url |
1473 request_url, // original_request_url | 1636 request_url, // original_request_url |
1474 download_url, // destination_url | 1637 download_url, // destination_url |
1475 true, // is_user_initiated, | 1638 true, // is_user_initiated, |
1476 false, // has_committed | 1639 false, // has_committed |
1477 true, // has_server_redirect | 1640 true, // has_server_redirect |
1478 nav_map->at(download_url).at(0)); | 1641 nav_map->at(download_url).at(0)); |
1479 | 1642 |
1480 auto referrer_chain = IdentifyReferrerChain(GetDownload()); | 1643 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
1481 ASSERT_EQ(1U, referrer_chain.size()); | 1644 ASSERT_EQ(1U, referrer_chain.size()); |
1482 VerifyReferrerChainEntry(download_url, // url | 1645 VerifyReferrerChainEntry(download_url, // url |
1483 ReferrerChainEntry::DOWNLOAD_URL, // type | 1646 ReferrerChainEntry::DOWNLOAD_URL, // type |
1484 test_server_ip, // ip_address | 1647 test_server_ip, // ip_address |
1485 GURL(), // referrer_url | 1648 GURL(), // referrer_url |
1486 GURL(), // referrer_main_frame_url | 1649 GURL(), // referrer_main_frame_url |
1487 false, // is_retargeting | 1650 false, // is_retargeting |
1488 referrer_chain[0]); | 1651 referrer_chain[0]); |
1489 } | 1652 } |
1490 | 1653 |
| 1654 // Retargeting immediately followed by server-side redirect. |
| 1655 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| 1656 RetargetingAndServerRedirect) { |
| 1657 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
| 1658 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); |
| 1659 GURL request_url = |
| 1660 embedded_test_server()->GetURL("/server-redirect?" + download_url.spec()); |
| 1661 ClickTestLink("new_tab_download_with_server_redirect", 1, initial_url); |
| 1662 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
| 1663 auto nav_map = navigation_map(); |
| 1664 ASSERT_TRUE(nav_map); |
| 1665 ASSERT_EQ(3U, nav_map->size()); |
| 1666 ASSERT_EQ(1U, nav_map->at(request_url).size()); |
| 1667 ASSERT_EQ(1U, nav_map->at(download_url).size()); |
| 1668 ASSERT_EQ(1U, nav_map->at(initial_url).size()); |
| 1669 VerifyNavigationEvent(GURL(), // source_url |
| 1670 GURL(), // source_main_frame_url |
| 1671 initial_url, // original_request_url |
| 1672 initial_url, // destination_url |
| 1673 true, // is_user_initiated, |
| 1674 true, // has_committed |
| 1675 false, // has_server_redirect |
| 1676 nav_map->at(initial_url).at(0)); |
| 1677 VerifyNavigationEvent(initial_url, // source_url |
| 1678 initial_url, // source_main_frame_url |
| 1679 request_url, // original_request_url |
| 1680 request_url, // destination_url |
| 1681 true, // is_user_initiated, |
| 1682 false, // has_committed |
| 1683 false, // has_server_redirect |
| 1684 nav_map->at(request_url).at(0)); |
| 1685 VerifyNavigationEvent(GURL(), // source_url |
| 1686 GURL(), // source_main_frame_url |
| 1687 request_url, // original_request_url |
| 1688 download_url, // destination_url |
| 1689 false, // is_user_initiated, |
| 1690 false, // has_committed |
| 1691 true, // has_server_redirect |
| 1692 nav_map->at(download_url).at(0)); |
| 1693 |
| 1694 auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload()); |
| 1695 ASSERT_EQ(2U, referrer_chain.size()); |
| 1696 VerifyReferrerChainEntry(download_url, // url |
| 1697 ReferrerChainEntry::DOWNLOAD_URL, // type |
| 1698 test_server_ip, // ip_address |
| 1699 initial_url, // referrer_url |
| 1700 initial_url, // referrer_main_frame_url |
| 1701 true, // is_retargeting |
| 1702 referrer_chain[0]); |
| 1703 VerifyReferrerChainEntry(initial_url, // url |
| 1704 ReferrerChainEntry::LANDING_PAGE, // type |
| 1705 test_server_ip, // ip_address |
| 1706 GURL(), // referrer_url |
| 1707 GURL(), // referrer_main_frame_url |
| 1708 false, // is_retargeting |
| 1709 referrer_chain[1]); |
| 1710 } |
| 1711 |
1491 // host_to_ip_map_ size should increase by one after a new navigation. | 1712 // host_to_ip_map_ size should increase by one after a new navigation. |
1492 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, AddIPMapping) { | 1713 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, AddIPMapping) { |
1493 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); | 1714 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
1494 auto ip_map = host_to_ip_map(); | 1715 auto ip_map = host_to_ip_map(); |
1495 std::string test_server_host(embedded_test_server()->base_url().host()); | 1716 std::string test_server_host(embedded_test_server()->base_url().host()); |
1496 ip_map->clear(); | 1717 ip_map->clear(); |
1497 ip_map->insert( | 1718 ip_map->insert( |
1498 std::make_pair(test_server_host, std::vector<ResolvedIPAddress>())); | 1719 std::make_pair(test_server_host, std::vector<ResolvedIPAddress>())); |
1499 ASSERT_EQ(std::size_t(0), ip_map->at(test_server_host).size()); | 1720 ASSERT_EQ(std::size_t(0), ip_map->at(test_server_host).size()); |
1500 ClickTestLink("direct_download", 1, initial_url); | 1721 ClickTestLink("direct_download", 1, initial_url); |
(...skipping 16 matching lines...) Expand all Loading... |
1517 yesterday, embedded_test_server()->host_port_pair().host())); | 1738 yesterday, embedded_test_server()->host_port_pair().host())); |
1518 ASSERT_EQ(1U, ip_map->at(test_server_host).size()); | 1739 ASSERT_EQ(1U, ip_map->at(test_server_host).size()); |
1519 ClickTestLink("direct_download", 1, initial_url); | 1740 ClickTestLink("direct_download", 1, initial_url); |
1520 EXPECT_EQ(1U, ip_map->at(test_server_host).size()); | 1741 EXPECT_EQ(1U, ip_map->at(test_server_host).size()); |
1521 EXPECT_EQ(embedded_test_server()->host_port_pair().host(), | 1742 EXPECT_EQ(embedded_test_server()->host_port_pair().host(), |
1522 ip_map->at(test_server_host).back().ip); | 1743 ip_map->at(test_server_host).back().ip); |
1523 EXPECT_NE(yesterday, ip_map->at(test_server_host).front().timestamp); | 1744 EXPECT_NE(yesterday, ip_map->at(test_server_host).front().timestamp); |
1524 } | 1745 } |
1525 | 1746 |
1526 } // namespace safe_browsing | 1747 } // namespace safe_browsing |
OLD | NEW |