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

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

Issue 2601303002: Wireup SafeBrowsingNavigationObserverManager to help PPAPI download attribution (Closed)
Patch Set: add check for rfh Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/strings/stringprintf.h" 5 #include "base/strings/stringprintf.h"
6 #include "chrome/browser/chrome_notification_types.h" 6 #include "chrome/browser/chrome_notification_types.h"
7 #include "chrome/browser/download/download_prefs.h" 7 #include "chrome/browser/download/download_prefs.h"
8 #include "chrome/browser/profiles/profile.h" 8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/safe_browsing/download_protection_service.h" 9 #include "chrome/browser/safe_browsing/download_protection_service.h"
10 #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer.h" 10 #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer.h"
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698