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

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

Issue 2681783003: Since SafeBrowsingNavigationObserverManager cleans up navigation events every two minutes, if downl… (Closed)
Patch Set: Created 3 years, 10 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 15 matching lines...) Expand all
26 #include "content/public/test/test_utils.h" 26 #include "content/public/test/test_utils.h"
27 #include "net/dns/mock_host_resolver.h" 27 #include "net/dns/mock_host_resolver.h"
28 #include "net/test/embedded_test_server/embedded_test_server.h" 28 #include "net/test/embedded_test_server/embedded_test_server.h"
29 #include "url/gurl.h" 29 #include "url/gurl.h"
30 #include "url/url_canon.h" 30 #include "url/url_canon.h"
31 31
32 using content::DownloadItem; 32 using content::DownloadItem;
33 33
34 namespace safe_browsing { 34 namespace safe_browsing {
35 35
36 typedef SafeBrowsingNavigationObserverManager::ReferrerChain ReferrerChain;
37
38 const char kSingleFrameTestURL[] = 36 const char kSingleFrameTestURL[] =
39 "/safe_browsing/download_protection/navigation_observer/" 37 "/safe_browsing/download_protection/navigation_observer/"
40 "navigation_observer_tests.html"; 38 "navigation_observer_tests.html";
41 const char kMultiFrameTestURL[] = 39 const char kMultiFrameTestURL[] =
42 "/safe_browsing/download_protection/navigation_observer/" 40 "/safe_browsing/download_protection/navigation_observer/"
43 "navigation_observer_multi_frame_tests.html"; 41 "navigation_observer_multi_frame_tests.html";
44 const char kRedirectURL[] = 42 const char kRedirectURL[] =
45 "/safe_browsing/download_protection/navigation_observer/redirect.html"; 43 "/safe_browsing/download_protection/navigation_observer/redirect.html";
46 const char kDownloadDataURL[] = 44 const char kDownloadDataURL[] =
47 "data:application/octet-stream;base64,a2poYWxrc2hkbGtoYXNka2xoYXNsa2RoYWxra" 45 "data:application/octet-stream;base64,a2poYWxrc2hkbGtoYXNka2xoYXNsa2RoYWxra"
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 EXPECT_EQ(expected_has_server_redirect, 227 EXPECT_EQ(expected_has_server_redirect,
230 actual_nav_event.has_server_redirect); 228 actual_nav_event.has_server_redirect);
231 } 229 }
232 230
233 void VerifyReferrerChainEntry(const GURL& expected_url, 231 void VerifyReferrerChainEntry(const GURL& expected_url,
234 ReferrerChainEntry::URLType expected_type, 232 ReferrerChainEntry::URLType expected_type,
235 const std::string& expected_ip_address, 233 const std::string& expected_ip_address,
236 const GURL& expected_referrer_url, 234 const GURL& expected_referrer_url,
237 const GURL& expected_referrer_main_frame_url, 235 const GURL& expected_referrer_main_frame_url,
238 bool expected_is_retargeting, 236 bool expected_is_retargeting,
239 ReferrerChainEntry* actual_entry) { 237 const ReferrerChainEntry& actual_entry) {
240 EXPECT_EQ(expected_url.spec(), actual_entry->url()); 238 EXPECT_EQ(expected_url.spec(), actual_entry.url());
241 EXPECT_EQ(expected_type, actual_entry->type()); 239 EXPECT_EQ(expected_type, actual_entry.type());
242 if (expected_ip_address.empty()) { 240 if (expected_ip_address.empty()) {
243 ASSERT_EQ(0, actual_entry->ip_addresses_size()); 241 ASSERT_EQ(0, actual_entry.ip_addresses_size());
244 } else { 242 } else {
245 ASSERT_EQ(1, actual_entry->ip_addresses_size()); 243 ASSERT_EQ(1, actual_entry.ip_addresses_size());
246 EXPECT_EQ(expected_ip_address, actual_entry->ip_addresses(0)); 244 EXPECT_EQ(expected_ip_address, actual_entry.ip_addresses(0));
247 } 245 }
248 EXPECT_EQ(expected_referrer_url.spec(), actual_entry->referrer_url()); 246 EXPECT_EQ(expected_referrer_url.spec(), actual_entry.referrer_url());
249 EXPECT_EQ(expected_referrer_main_frame_url.spec(), 247 EXPECT_EQ(expected_referrer_main_frame_url.spec(),
250 actual_entry->referrer_main_frame_url()); 248 actual_entry.referrer_main_frame_url());
251 EXPECT_EQ(expected_is_retargeting, actual_entry->is_retargeting()); 249 EXPECT_EQ(expected_is_retargeting, actual_entry.is_retargeting());
252 } 250 }
253 251
254 // Identify referrer chain of a DownloadItem and populate |referrer_chain|. 252 // Identify referrer chain of a DownloadItem and populate |referrer_chain|.
255 void IdentifyReferrerChainForDownload( 253 void IdentifyReferrerChainForDownload(
256 DownloadItem* download, 254 DownloadItem* download,
257 ReferrerChain* referrer_chain) { 255 ReferrerChain* referrer_chain) {
258 int download_tab_id = 256 int download_tab_id =
259 SessionTabHelper::IdForTab(download->GetWebContents()); 257 SessionTabHelper::IdForTab(download->GetWebContents());
260 // IdentifyReferrerChain should return SUCCESS(1), SUCCESS_LANDING_PAGE(2), 258 // IdentifyReferrerChain should return SUCCESS(1), SUCCESS_LANDING_PAGE(2),
261 // or SUCCESS_LANDING_REFERRER(3) in all these tests. 259 // or SUCCESS_LANDING_REFERRER(3) in all these tests.
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 download_url, // original_request_url 341 download_url, // original_request_url
344 download_url, // destination_url 342 download_url, // destination_url
345 true, // is_user_initiated, 343 true, // is_user_initiated,
346 false, // has_committed 344 false, // has_committed
347 false, // has_server_redirect 345 false, // has_server_redirect
348 nav_map->at(download_url).at(0)); 346 nav_map->at(download_url).at(0));
349 VerifyHostToIpMap(); 347 VerifyHostToIpMap();
350 348
351 ReferrerChain referrer_chain; 349 ReferrerChain referrer_chain;
352 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 350 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
353 ASSERT_EQ(1U, referrer_chain.size()); 351 ASSERT_EQ(1, referrer_chain.size());
354 VerifyReferrerChainEntry(download_url, // url 352 VerifyReferrerChainEntry(download_url, // url
355 ReferrerChainEntry::DOWNLOAD_URL, // type 353 ReferrerChainEntry::DOWNLOAD_URL, // type
356 test_server_ip, // ip_address 354 test_server_ip, // ip_address
357 GURL(), // referrer_url 355 GURL(), // referrer_url
358 GURL(), // referrer_main_frame_url 356 GURL(), // referrer_main_frame_url
359 false, // is_retargeting 357 false, // is_retargeting
360 referrer_chain[0].get()); 358 referrer_chain.Get(0));
361 } 359 }
362 // Click on a link and start download on the same page. 360 // Click on a link and start download on the same page.
363 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, DirectDownload) { 361 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, DirectDownload) {
364 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 362 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
365 ClickTestLink("direct_download", 1, initial_url); 363 ClickTestLink("direct_download", 1, initial_url);
366 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 364 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
367 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); 365 std::string test_server_ip(embedded_test_server()->host_port_pair().host());
368 auto nav_map = navigation_map(); 366 auto nav_map = navigation_map();
369 ASSERT_TRUE(nav_map); 367 ASSERT_TRUE(nav_map);
370 ASSERT_EQ(2U, nav_map->size()); 368 ASSERT_EQ(2U, nav_map->size());
(...skipping 12 matching lines...) Expand all
383 download_url, // original_request_url 381 download_url, // original_request_url
384 download_url, // destination_url 382 download_url, // destination_url
385 true, // is_user_initiated, 383 true, // is_user_initiated,
386 false, // has_committed 384 false, // has_committed
387 false, // has_server_redirect 385 false, // has_server_redirect
388 nav_map->at(download_url).at(0)); 386 nav_map->at(download_url).at(0));
389 VerifyHostToIpMap(); 387 VerifyHostToIpMap();
390 388
391 ReferrerChain referrer_chain; 389 ReferrerChain referrer_chain;
392 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 390 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
393 ASSERT_EQ(2U, referrer_chain.size()); 391 ASSERT_EQ(2, referrer_chain.size());
394 VerifyReferrerChainEntry(download_url, // url 392 VerifyReferrerChainEntry(download_url, // url
395 ReferrerChainEntry::DOWNLOAD_URL, // type 393 ReferrerChainEntry::DOWNLOAD_URL, // type
396 test_server_ip, // ip_address 394 test_server_ip, // ip_address
397 initial_url, // referrer_url 395 initial_url, // referrer_url
398 initial_url, // referrer_main_frame_url 396 initial_url, // referrer_main_frame_url
399 false, // is_retargeting 397 false, // is_retargeting
400 referrer_chain[0].get()); 398 referrer_chain.Get(0));
401 VerifyReferrerChainEntry(initial_url, // url 399 VerifyReferrerChainEntry(initial_url, // url
402 ReferrerChainEntry::LANDING_PAGE, // type 400 ReferrerChainEntry::LANDING_PAGE, // type
403 test_server_ip, // ip_address 401 test_server_ip, // ip_address
404 GURL(), // referrer_url 402 GURL(), // referrer_url
405 GURL(), // referrer_main_frame_url 403 GURL(), // referrer_main_frame_url
406 false, // is_retargeting 404 false, // is_retargeting
407 referrer_chain[1].get()); 405 referrer_chain.Get(1));
408 } 406 }
409 407
410 // Click on a link with rel="noreferrer" attribute, and start download on the 408 // Click on a link with rel="noreferrer" attribute, and start download on the
411 // same page. 409 // same page.
412 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 410 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
413 DirectDownloadNoReferrer) { 411 DirectDownloadNoReferrer) {
414 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 412 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
415 ClickTestLink("direct_download_noreferrer", 1, initial_url); 413 ClickTestLink("direct_download_noreferrer", 1, initial_url);
416 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 414 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
417 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); 415 std::string test_server_ip(embedded_test_server()->host_port_pair().host());
(...skipping 15 matching lines...) Expand all
433 download_url, // original_request_url 431 download_url, // original_request_url
434 download_url, // destination_url 432 download_url, // destination_url
435 true, // is_user_initiated, 433 true, // is_user_initiated,
436 false, // has_committed 434 false, // has_committed
437 false, // has_server_redirect 435 false, // has_server_redirect
438 nav_map->at(download_url).at(0)); 436 nav_map->at(download_url).at(0));
439 VerifyHostToIpMap(); 437 VerifyHostToIpMap();
440 438
441 ReferrerChain referrer_chain; 439 ReferrerChain referrer_chain;
442 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 440 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
443 ASSERT_EQ(2U, referrer_chain.size()); 441 ASSERT_EQ(2, referrer_chain.size());
444 VerifyReferrerChainEntry(download_url, // url 442 VerifyReferrerChainEntry(download_url, // url
445 ReferrerChainEntry::DOWNLOAD_URL, // type 443 ReferrerChainEntry::DOWNLOAD_URL, // type
446 test_server_ip, // ip_address 444 test_server_ip, // ip_address
447 initial_url, // referrer_url 445 initial_url, // referrer_url
448 initial_url, // referrer_main_frame_url 446 initial_url, // referrer_main_frame_url
449 false, // is_retargeting 447 false, // is_retargeting
450 referrer_chain[0].get()); 448 referrer_chain.Get(0));
451 VerifyReferrerChainEntry(initial_url, // url 449 VerifyReferrerChainEntry(initial_url, // url
452 ReferrerChainEntry::LANDING_PAGE, // type 450 ReferrerChainEntry::LANDING_PAGE, // type
453 test_server_ip, // ip_address 451 test_server_ip, // ip_address
454 GURL(), // referrer_url 452 GURL(), // referrer_url
455 GURL(), // referrer_main_frame_url 453 GURL(), // referrer_main_frame_url
456 false, // is_retargeting 454 false, // is_retargeting
457 referrer_chain[1].get()); 455 referrer_chain.Get(1));
458 } 456 }
459 457
460 // Click on a link with rel="noreferrer" attribute, and start download in a 458 // Click on a link with rel="noreferrer" attribute, and start download in a
461 // new tab using target=_blank. 459 // new tab using target=_blank.
462 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 460 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
463 DirectDownloadNoReferrerTargetBlank) { 461 DirectDownloadNoReferrerTargetBlank) {
464 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 462 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
465 ClickTestLink("direct_download_noreferrer_target_blank", 1, initial_url); 463 ClickTestLink("direct_download_noreferrer_target_blank", 1, initial_url);
466 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 464 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
467 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); 465 std::string test_server_ip(embedded_test_server()->host_port_pair().host());
(...skipping 29 matching lines...) Expand all
497 download_url, // original_request_url 495 download_url, // original_request_url
498 download_url, // destination_url 496 download_url, // destination_url
499 false, // is_user_initiated, 497 false, // is_user_initiated,
500 false, // has_committed 498 false, // has_committed
501 false, // has_server_redirect 499 false, // has_server_redirect
502 nav_map->at(download_url).at(1)); 500 nav_map->at(download_url).at(1));
503 VerifyHostToIpMap(); 501 VerifyHostToIpMap();
504 502
505 ReferrerChain referrer_chain; 503 ReferrerChain referrer_chain;
506 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 504 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
507 ASSERT_EQ(2U, referrer_chain.size()); 505 ASSERT_EQ(2, referrer_chain.size());
508 VerifyReferrerChainEntry(download_url, // url 506 VerifyReferrerChainEntry(download_url, // url
509 ReferrerChainEntry::DOWNLOAD_URL, // type 507 ReferrerChainEntry::DOWNLOAD_URL, // type
510 test_server_ip, // ip_address 508 test_server_ip, // ip_address
511 initial_url, // referrer_url 509 initial_url, // referrer_url
512 initial_url, // referrer_main_frame_url 510 initial_url, // referrer_main_frame_url
513 true, // is_retargeting 511 true, // is_retargeting
514 referrer_chain[0].get()); 512 referrer_chain.Get(0));
515 VerifyReferrerChainEntry(initial_url, // url 513 VerifyReferrerChainEntry(initial_url, // url
516 ReferrerChainEntry::LANDING_PAGE, // type 514 ReferrerChainEntry::LANDING_PAGE, // type
517 test_server_ip, // ip_address 515 test_server_ip, // ip_address
518 GURL(), // referrer_url 516 GURL(), // referrer_url
519 GURL(), // referrer_main_frame_url 517 GURL(), // referrer_main_frame_url
520 false, // is_retargeting 518 false, // is_retargeting
521 referrer_chain[1].get()); 519 referrer_chain.Get(1));
522 } 520 }
523 521
524 // Click on a link which navigates to a page then redirects to a download using 522 // Click on a link which navigates to a page then redirects to a download using
525 // META HTTP-EQUIV="refresh". All transitions happen in the same tab. 523 // META HTTP-EQUIV="refresh". All transitions happen in the same tab.
526 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 524 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
527 SingleMetaRefreshRedirect) { 525 SingleMetaRefreshRedirect) {
528 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 526 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
529 ClickTestLink("single_meta_refresh_redirect", 2, initial_url); 527 ClickTestLink("single_meta_refresh_redirect", 2, initial_url);
530 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL); 528 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL);
531 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 529 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
(...skipping 27 matching lines...) Expand all
559 download_url, // original_request_url 557 download_url, // original_request_url
560 download_url, // destination_url 558 download_url, // destination_url
561 false, // is_user_initiated, 559 false, // is_user_initiated,
562 false, // has_committed 560 false, // has_committed
563 false, // has_server_redirect 561 false, // has_server_redirect
564 nav_map->at(download_url).at(0)); 562 nav_map->at(download_url).at(0));
565 VerifyHostToIpMap(); 563 VerifyHostToIpMap();
566 564
567 ReferrerChain referrer_chain; 565 ReferrerChain referrer_chain;
568 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 566 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
569 ASSERT_EQ(3U, referrer_chain.size()); 567 ASSERT_EQ(3, referrer_chain.size());
570 VerifyReferrerChainEntry(download_url, // url 568 VerifyReferrerChainEntry(download_url, // url
571 ReferrerChainEntry::DOWNLOAD_URL, // type 569 ReferrerChainEntry::DOWNLOAD_URL, // type
572 test_server_ip, // ip_address 570 test_server_ip, // ip_address
573 redirect_url, // referrer_url 571 redirect_url, // referrer_url
574 redirect_url, // referrer_main_frame_url 572 redirect_url, // referrer_main_frame_url
575 false, // is_retargeting 573 false, // is_retargeting
576 referrer_chain[0].get()); 574 referrer_chain.Get(0));
577 VerifyReferrerChainEntry(redirect_url, // url 575 VerifyReferrerChainEntry(redirect_url, // url
578 ReferrerChainEntry::CLIENT_REDIRECT, // type 576 ReferrerChainEntry::CLIENT_REDIRECT, // type
579 test_server_ip, // ip_address 577 test_server_ip, // ip_address
580 initial_url, // referrer_url 578 initial_url, // referrer_url
581 initial_url, // referrer_main_frame_url 579 initial_url, // referrer_main_frame_url
582 false, // is_retargeting 580 false, // is_retargeting
583 referrer_chain[1].get()); 581 referrer_chain.Get(1));
584 VerifyReferrerChainEntry(initial_url, // url 582 VerifyReferrerChainEntry(initial_url, // url
585 ReferrerChainEntry::LANDING_PAGE, // type 583 ReferrerChainEntry::LANDING_PAGE, // type
586 test_server_ip, // ip_address 584 test_server_ip, // ip_address
587 GURL(), // referrer_url 585 GURL(), // referrer_url
588 GURL(), // referrer_main_frame_url 586 GURL(), // referrer_main_frame_url
589 false, // is_retargeting 587 false, // is_retargeting
590 referrer_chain[2].get()); 588 referrer_chain.Get(2));
591 } 589 }
592 590
593 // Click on a link which navigates to a page then redirects to a download using 591 // Click on a link which navigates to a page then redirects to a download using
594 // META HTTP-EQUIV="refresh". First navigation happens in target blank. 592 // META HTTP-EQUIV="refresh". First navigation happens in target blank.
595 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 593 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
596 SingleMetaRefreshRedirectTargetBlank) { 594 SingleMetaRefreshRedirectTargetBlank) {
597 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 595 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
598 ClickTestLink("single_meta_refresh_redirect_target_blank", 2, initial_url); 596 ClickTestLink("single_meta_refresh_redirect_target_blank", 2, initial_url);
599 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL); 597 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL);
600 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 598 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 download_url, // original_request_url 635 download_url, // original_request_url
638 download_url, // destination_url 636 download_url, // destination_url
639 false, // is_user_initiated, 637 false, // is_user_initiated,
640 false, // has_committed 638 false, // has_committed
641 false, // has_server_redirect 639 false, // has_server_redirect
642 nav_map->at(download_url).at(0)); 640 nav_map->at(download_url).at(0));
643 VerifyHostToIpMap(); 641 VerifyHostToIpMap();
644 642
645 ReferrerChain referrer_chain; 643 ReferrerChain referrer_chain;
646 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 644 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
647 ASSERT_EQ(3U, referrer_chain.size()); 645 ASSERT_EQ(3, referrer_chain.size());
648 VerifyReferrerChainEntry(download_url, // url 646 VerifyReferrerChainEntry(download_url, // url
649 ReferrerChainEntry::DOWNLOAD_URL, // type 647 ReferrerChainEntry::DOWNLOAD_URL, // type
650 test_server_ip, // ip_address 648 test_server_ip, // ip_address
651 redirect_url, // referrer_url 649 redirect_url, // referrer_url
652 redirect_url, // referrer_main_frame_url 650 redirect_url, // referrer_main_frame_url
653 false, // is_retargeting 651 false, // is_retargeting
654 referrer_chain[0].get()); 652 referrer_chain.Get(0));
655 VerifyReferrerChainEntry(redirect_url, // url 653 VerifyReferrerChainEntry(redirect_url, // url
656 ReferrerChainEntry::CLIENT_REDIRECT, // type 654 ReferrerChainEntry::CLIENT_REDIRECT, // type
657 test_server_ip, // ip_address 655 test_server_ip, // ip_address
658 initial_url, // referrer_url 656 initial_url, // referrer_url
659 initial_url, // referrer_main_frame_url 657 initial_url, // referrer_main_frame_url
660 true, // is_retargeting 658 true, // is_retargeting
661 referrer_chain[1].get()); 659 referrer_chain.Get(1));
662 VerifyReferrerChainEntry(initial_url, // url 660 VerifyReferrerChainEntry(initial_url, // url
663 ReferrerChainEntry::LANDING_PAGE, // type 661 ReferrerChainEntry::LANDING_PAGE, // type
664 test_server_ip, // ip_address 662 test_server_ip, // ip_address
665 GURL(), // referrer_url 663 GURL(), // referrer_url
666 GURL(), // referrer_main_frame_url 664 GURL(), // referrer_main_frame_url
667 false, // is_retargeting 665 false, // is_retargeting
668 referrer_chain[2].get()); 666 referrer_chain.Get(2));
669 } 667 }
670 668
671 // Click on a link which redirects twice before reaching download using 669 // Click on a link which redirects twice before reaching download using
672 // META HTTP-EQUIV="refresh". All transitions happen in the same tab. 670 // META HTTP-EQUIV="refresh". All transitions happen in the same tab.
673 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 671 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
674 MultiMetaRefreshRedirects) { 672 MultiMetaRefreshRedirects) {
675 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 673 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
676 ClickTestLink("multiple_meta_refresh_redirects", 3, initial_url); 674 ClickTestLink("multiple_meta_refresh_redirects", 3, initial_url);
677 GURL first_redirect_url = embedded_test_server()->GetURL( 675 GURL first_redirect_url = embedded_test_server()->GetURL(
678 "/safe_browsing/download_protection/navigation_observer/" 676 "/safe_browsing/download_protection/navigation_observer/"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 download_url, // original_request_url 714 download_url, // original_request_url
717 download_url, // destination_url 715 download_url, // destination_url
718 false, // is_user_initiated, 716 false, // is_user_initiated,
719 false, // has_committed 717 false, // has_committed
720 false, // has_server_redirect 718 false, // has_server_redirect
721 nav_map->at(download_url).at(0)); 719 nav_map->at(download_url).at(0));
722 VerifyHostToIpMap(); 720 VerifyHostToIpMap();
723 721
724 ReferrerChain referrer_chain; 722 ReferrerChain referrer_chain;
725 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 723 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
726 ASSERT_EQ(4U, referrer_chain.size()); 724 ASSERT_EQ(4, referrer_chain.size());
727 VerifyReferrerChainEntry(download_url, // url 725 VerifyReferrerChainEntry(download_url, // url
728 ReferrerChainEntry::DOWNLOAD_URL, // type 726 ReferrerChainEntry::DOWNLOAD_URL, // type
729 test_server_ip, // ip_address 727 test_server_ip, // ip_address
730 second_redirect_url, // referrer_url 728 second_redirect_url, // referrer_url
731 second_redirect_url, // referrer_main_frame_url 729 second_redirect_url, // referrer_main_frame_url
732 false, // is_retargeting 730 false, // is_retargeting
733 referrer_chain[0].get()); 731 referrer_chain.Get(0));
734 VerifyReferrerChainEntry(second_redirect_url, // url 732 VerifyReferrerChainEntry(second_redirect_url, // url
735 ReferrerChainEntry::CLIENT_REDIRECT, // type 733 ReferrerChainEntry::CLIENT_REDIRECT, // type
736 test_server_ip, // ip_address 734 test_server_ip, // ip_address
737 first_redirect_url, // referrer_url 735 first_redirect_url, // referrer_url
738 first_redirect_url, // referrer_main_frame_url 736 first_redirect_url, // referrer_main_frame_url
739 false, // is_retargeting 737 false, // is_retargeting
740 referrer_chain[1].get()); 738 referrer_chain.Get(1));
741 VerifyReferrerChainEntry(first_redirect_url, // url 739 VerifyReferrerChainEntry(first_redirect_url, // url
742 ReferrerChainEntry::CLIENT_REDIRECT, // type 740 ReferrerChainEntry::CLIENT_REDIRECT, // type
743 test_server_ip, // ip_address 741 test_server_ip, // ip_address
744 initial_url, // referrer_url 742 initial_url, // referrer_url
745 initial_url, // referrer_main_frame_url 743 initial_url, // referrer_main_frame_url
746 false, // is_retargeting 744 false, // is_retargeting
747 referrer_chain[2].get()); 745 referrer_chain.Get(2));
748 VerifyReferrerChainEntry(initial_url, // url 746 VerifyReferrerChainEntry(initial_url, // url
749 ReferrerChainEntry::LANDING_PAGE, // type 747 ReferrerChainEntry::LANDING_PAGE, // type
750 test_server_ip, // ip_address 748 test_server_ip, // ip_address
751 GURL(), // referrer_url 749 GURL(), // referrer_url
752 GURL(), // referrer_main_frame_url 750 GURL(), // referrer_main_frame_url
753 false, // is_retargeting 751 false, // is_retargeting
754 referrer_chain[3].get()); 752 referrer_chain.Get(3));
755 } 753 }
756 754
757 // Click on a link which redirects to download using window.location. 755 // Click on a link which redirects to download using window.location.
758 // All transitions happen in the same tab. 756 // All transitions happen in the same tab.
759 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 757 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
760 WindowLocationRedirect) { 758 WindowLocationRedirect) {
761 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 759 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
762 ClickTestLink("window_location_redirection", 1, initial_url); 760 ClickTestLink("window_location_redirection", 1, initial_url);
763 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 761 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
764 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); 762 std::string test_server_ip(embedded_test_server()->host_port_pair().host());
(...skipping 14 matching lines...) Expand all
779 initial_url, // source_main_frame_url 777 initial_url, // source_main_frame_url
780 download_url, // original_request_url 778 download_url, // original_request_url
781 download_url, // destination_url 779 download_url, // destination_url
782 true, // is_user_initiated, 780 true, // is_user_initiated,
783 false, // has_committed 781 false, // has_committed
784 false, // has_server_redirect 782 false, // has_server_redirect
785 nav_map->at(download_url).at(0)); 783 nav_map->at(download_url).at(0));
786 784
787 ReferrerChain referrer_chain; 785 ReferrerChain referrer_chain;
788 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 786 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
789 ASSERT_EQ(2U, referrer_chain.size()); 787 ASSERT_EQ(2, referrer_chain.size());
790 VerifyReferrerChainEntry(download_url, // url 788 VerifyReferrerChainEntry(download_url, // url
791 ReferrerChainEntry::DOWNLOAD_URL, // type 789 ReferrerChainEntry::DOWNLOAD_URL, // type
792 test_server_ip, // ip_address 790 test_server_ip, // ip_address
793 initial_url, // referrer_url 791 initial_url, // referrer_url
794 initial_url, // referrer_main_frame_url 792 initial_url, // referrer_main_frame_url
795 false, // is_retargeting 793 false, // is_retargeting
796 referrer_chain[0].get()); 794 referrer_chain.Get(0));
797 VerifyReferrerChainEntry(initial_url, // url 795 VerifyReferrerChainEntry(initial_url, // url
798 ReferrerChainEntry::LANDING_PAGE, // type 796 ReferrerChainEntry::LANDING_PAGE, // type
799 test_server_ip, // ip_address 797 test_server_ip, // ip_address
800 GURL(), // referrer_url 798 GURL(), // referrer_url
801 GURL(), // referrer_main_frame_url 799 GURL(), // referrer_main_frame_url
802 false, // is_retargeting 800 false, // is_retargeting
803 referrer_chain[1].get()); 801 referrer_chain.Get(1));
804 } 802 }
805 803
806 // Click on a link which redirects twice until it reaches download using a 804 // Click on a link which redirects twice until it reaches download using a
807 // mixture of meta refresh and window.location. All transitions happen in the 805 // mixture of meta refresh and window.location. All transitions happen in the
808 // same tab. 806 // same tab.
809 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, MixRedirects) { 807 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, MixRedirects) {
810 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 808 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
811 ClickTestLink("mix_redirects", 2, initial_url); 809 ClickTestLink("mix_redirects", 2, initial_url);
812 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL); 810 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL);
813 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 811 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
(...skipping 25 matching lines...) Expand all
839 download_url, // original_request_url 837 download_url, // original_request_url
840 download_url, // destination_url 838 download_url, // destination_url
841 false, // is_user_initiated, 839 false, // is_user_initiated,
842 false, // has_committed 840 false, // has_committed
843 false, // has_server_redirect 841 false, // has_server_redirect
844 nav_map->at(download_url).at(0)); 842 nav_map->at(download_url).at(0));
845 VerifyHostToIpMap(); 843 VerifyHostToIpMap();
846 844
847 ReferrerChain referrer_chain; 845 ReferrerChain referrer_chain;
848 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 846 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
849 ASSERT_EQ(3U, referrer_chain.size()); 847 ASSERT_EQ(3, referrer_chain.size());
850 VerifyReferrerChainEntry(download_url, // url 848 VerifyReferrerChainEntry(download_url, // url
851 ReferrerChainEntry::DOWNLOAD_URL, // type 849 ReferrerChainEntry::DOWNLOAD_URL, // type
852 test_server_ip, // ip_address 850 test_server_ip, // ip_address
853 redirect_url, // referrer_url 851 redirect_url, // referrer_url
854 redirect_url, // referrer_main_frame_url 852 redirect_url, // referrer_main_frame_url
855 false, // is_retargeting 853 false, // is_retargeting
856 referrer_chain[0].get()); 854 referrer_chain.Get(0));
857 VerifyReferrerChainEntry(redirect_url, // url 855 VerifyReferrerChainEntry(redirect_url, // url
858 ReferrerChainEntry::CLIENT_REDIRECT, // type 856 ReferrerChainEntry::CLIENT_REDIRECT, // type
859 test_server_ip, // ip_address 857 test_server_ip, // ip_address
860 initial_url, // referrer_url 858 initial_url, // referrer_url
861 initial_url, // referrer_main_frame_url 859 initial_url, // referrer_main_frame_url
862 false, // is_retargeting 860 false, // is_retargeting
863 referrer_chain[1].get()); 861 referrer_chain.Get(1));
864 VerifyReferrerChainEntry(initial_url, // url 862 VerifyReferrerChainEntry(initial_url, // url
865 ReferrerChainEntry::LANDING_PAGE, // type 863 ReferrerChainEntry::LANDING_PAGE, // type
866 test_server_ip, // ip_address 864 test_server_ip, // ip_address
867 GURL(), // referrer_url 865 GURL(), // referrer_url
868 GURL(), // referrer_main_frame_url 866 GURL(), // referrer_main_frame_url
869 false, // is_retargeting 867 false, // is_retargeting
870 referrer_chain[2].get()); 868 referrer_chain.Get(2));
871 } 869 }
872 870
873 // Use javascript to open download in a new tab. 871 // Use javascript to open download in a new tab.
874 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, NewTabDownload) { 872 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, NewTabDownload) {
875 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 873 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
876 ClickTestLink("new_tab_download", 2, initial_url); 874 ClickTestLink("new_tab_download", 2, initial_url);
877 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 875 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
878 GURL blank_url = GURL(url::kAboutBlankURL); 876 GURL blank_url = GURL(url::kAboutBlankURL);
879 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); 877 std::string test_server_ip(embedded_test_server()->host_port_pair().host());
880 auto nav_map = navigation_map(); 878 auto nav_map = navigation_map();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
919 false, // is_user_initiated, 917 false, // is_user_initiated,
920 false, // has_committed 918 false, // has_committed
921 false, // has_server_redirect 919 false, // has_server_redirect
922 nav_map->at(download_url).at(0)); 920 nav_map->at(download_url).at(0));
923 EXPECT_EQ(nav_map->at(download_url).at(0).source_tab_id, 921 EXPECT_EQ(nav_map->at(download_url).at(0).source_tab_id,
924 nav_map->at(download_url).at(0).target_tab_id); 922 nav_map->at(download_url).at(0).target_tab_id);
925 VerifyHostToIpMap(); 923 VerifyHostToIpMap();
926 924
927 ReferrerChain referrer_chain; 925 ReferrerChain referrer_chain;
928 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 926 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
929 ASSERT_EQ(3U, referrer_chain.size()); 927 ASSERT_EQ(3, referrer_chain.size());
930 VerifyReferrerChainEntry(download_url, // url 928 VerifyReferrerChainEntry(download_url, // url
931 ReferrerChainEntry::DOWNLOAD_URL, // type 929 ReferrerChainEntry::DOWNLOAD_URL, // type
932 test_server_ip, // ip_address 930 test_server_ip, // ip_address
933 blank_url, // referrer_url 931 blank_url, // referrer_url
934 blank_url, // referrer_main_frame_url 932 blank_url, // referrer_main_frame_url
935 false, // is_retargeting 933 false, // is_retargeting
936 referrer_chain[0].get()); 934 referrer_chain.Get(0));
937 VerifyReferrerChainEntry(blank_url, // url 935 VerifyReferrerChainEntry(blank_url, // url
938 ReferrerChainEntry::CLIENT_REDIRECT, // type 936 ReferrerChainEntry::CLIENT_REDIRECT, // type
939 "", // ip_address 937 "", // ip_address
940 initial_url, // referrer_url 938 initial_url, // referrer_url
941 initial_url, // referrer_main_frame_url 939 initial_url, // referrer_main_frame_url
942 true, // is_retargeting 940 true, // is_retargeting
943 referrer_chain[1].get()); 941 referrer_chain.Get(1));
944 VerifyReferrerChainEntry(initial_url, // url 942 VerifyReferrerChainEntry(initial_url, // url
945 ReferrerChainEntry::LANDING_PAGE, // type 943 ReferrerChainEntry::LANDING_PAGE, // type
946 test_server_ip, // ip_address 944 test_server_ip, // ip_address
947 GURL(), // referrer_url 945 GURL(), // referrer_url
948 GURL(), // referrer_main_frame_url 946 GURL(), // referrer_main_frame_url
949 false, // is_retargeting 947 false, // is_retargeting
950 referrer_chain[2].get()); 948 referrer_chain.Get(2));
951 } 949 }
952 950
953 // Use javascript to open download in a new tab and download has a data url. 951 // Use javascript to open download in a new tab and download has a data url.
954 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 952 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
955 NewTabDownloadWithDataURL) { 953 NewTabDownloadWithDataURL) {
956 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 954 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
957 ClickTestLink("new_tab_download_with_data_url", 2, initial_url); 955 ClickTestLink("new_tab_download_with_data_url", 2, initial_url);
958 GURL download_url = GURL(kDownloadDataURL); 956 GURL download_url = GURL(kDownloadDataURL);
959 GURL blank_url = GURL(url::kAboutBlankURL); 957 GURL blank_url = GURL(url::kAboutBlankURL);
960 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); 958 std::string test_server_ip(embedded_test_server()->host_port_pair().host());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 false, // is_user_initiated, 999 false, // is_user_initiated,
1002 false, // has_committed 1000 false, // has_committed
1003 false, // has_server_redirect 1001 false, // has_server_redirect
1004 nav_map->at(download_url).at(0)); 1002 nav_map->at(download_url).at(0));
1005 EXPECT_TRUE(nav_map->at(download_url).at(0).source_tab_id == 1003 EXPECT_TRUE(nav_map->at(download_url).at(0).source_tab_id ==
1006 nav_map->at(download_url).at(0).target_tab_id); 1004 nav_map->at(download_url).at(0).target_tab_id);
1007 VerifyHostToIpMap(); 1005 VerifyHostToIpMap();
1008 1006
1009 ReferrerChain referrer_chain; 1007 ReferrerChain referrer_chain;
1010 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1008 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1011 ASSERT_EQ(3U, referrer_chain.size()); 1009 ASSERT_EQ(3, referrer_chain.size());
1012 VerifyReferrerChainEntry(download_url, // url 1010 VerifyReferrerChainEntry(download_url, // url
1013 ReferrerChainEntry::DOWNLOAD_URL, // type 1011 ReferrerChainEntry::DOWNLOAD_URL, // type
1014 "", // ip_address 1012 "", // ip_address
1015 blank_url, // referrer_url 1013 blank_url, // referrer_url
1016 blank_url, // referrer_main_frame_url 1014 blank_url, // referrer_main_frame_url
1017 false, // is_retargeting 1015 false, // is_retargeting
1018 referrer_chain[0].get()); 1016 referrer_chain.Get(0));
1019 VerifyReferrerChainEntry(blank_url, // url 1017 VerifyReferrerChainEntry(blank_url, // url
1020 ReferrerChainEntry::CLIENT_REDIRECT, // type 1018 ReferrerChainEntry::CLIENT_REDIRECT, // type
1021 "", // ip_address 1019 "", // ip_address
1022 initial_url, // referrer_url 1020 initial_url, // referrer_url
1023 initial_url, // referrer_main_frame_url 1021 initial_url, // referrer_main_frame_url
1024 true, // is_retargeting 1022 true, // is_retargeting
1025 referrer_chain[1].get()); 1023 referrer_chain.Get(1));
1026 VerifyReferrerChainEntry(initial_url, // url 1024 VerifyReferrerChainEntry(initial_url, // url
1027 ReferrerChainEntry::LANDING_PAGE, // type 1025 ReferrerChainEntry::LANDING_PAGE, // type
1028 test_server_ip, // ip_address 1026 test_server_ip, // ip_address
1029 GURL(), // referrer_url 1027 GURL(), // referrer_url
1030 GURL(), // referrer_main_frame_url 1028 GURL(), // referrer_main_frame_url
1031 false, // is_retargeting 1029 false, // is_retargeting
1032 referrer_chain[2].get()); 1030 referrer_chain.Get(2));
1033 } 1031 }
1034 1032
1035 // TODO(jialiul): Need to figure out why this test is failing on Windows and 1033 // TODO(jialiul): Need to figure out why this test is failing on Windows and
1036 // flaky on other platforms. 1034 // flaky on other platforms.
1037 #define MAYBE_DownloadViaHTML5FileApi DISABLED_DownloadViaHTML5FileApi 1035 #define MAYBE_DownloadViaHTML5FileApi DISABLED_DownloadViaHTML5FileApi
1038 // Download via html5 file API. 1036 // Download via html5 file API.
1039 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 1037 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
1040 MAYBE_DownloadViaHTML5FileApi) { 1038 MAYBE_DownloadViaHTML5FileApi) {
1041 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1039 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1042 ClickTestLink("html5_file_api", 1, initial_url); 1040 ClickTestLink("html5_file_api", 1, initial_url);
(...skipping 20 matching lines...) Expand all
1063 download_url, // original_request_url 1061 download_url, // original_request_url
1064 download_url, // destination_url 1062 download_url, // destination_url
1065 true, // is_user_initiated, 1063 true, // is_user_initiated,
1066 false, // has_committed 1064 false, // has_committed
1067 false, // has_server_redirect 1065 false, // has_server_redirect
1068 nav_map->at(download_url).at(0)); 1066 nav_map->at(download_url).at(0));
1069 VerifyHostToIpMap(); 1067 VerifyHostToIpMap();
1070 1068
1071 ReferrerChain referrer_chain; 1069 ReferrerChain referrer_chain;
1072 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1070 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1073 ASSERT_EQ(2U, referrer_chain.size()); 1071 ASSERT_EQ(2, referrer_chain.size());
1074 VerifyReferrerChainEntry(download_url, // url 1072 VerifyReferrerChainEntry(download_url, // url
1075 ReferrerChainEntry::DOWNLOAD_URL, // type 1073 ReferrerChainEntry::DOWNLOAD_URL, // type
1076 "", // ip_address 1074 "", // ip_address
1077 initial_url, // referrer_url 1075 initial_url, // referrer_url
1078 initial_url, // referrer_main_frame_url 1076 initial_url, // referrer_main_frame_url
1079 false, // is_retargeting 1077 false, // is_retargeting
1080 referrer_chain[0].get()); 1078 referrer_chain.Get(0));
1081 VerifyReferrerChainEntry(initial_url, // url 1079 VerifyReferrerChainEntry(initial_url, // url
1082 ReferrerChainEntry::LANDING_PAGE, // type 1080 ReferrerChainEntry::LANDING_PAGE, // type
1083 test_server_ip, // ip_address 1081 test_server_ip, // ip_address
1084 GURL(), // referrer_url 1082 GURL(), // referrer_url
1085 GURL(), // referrer_main_frame_url 1083 GURL(), // referrer_main_frame_url
1086 false, // is_retargeting 1084 false, // is_retargeting
1087 referrer_chain[1].get()); 1085 referrer_chain.Get(1));
1088 } 1086 }
1089 1087
1090 // Click a link in a subframe and start download. 1088 // Click a link in a subframe and start download.
1091 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 1089 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
1092 SubFrameDirectDownload) { 1090 SubFrameDirectDownload) {
1093 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1091 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1094 ClickTestLink("sub_frame_download_attribution", 1, initial_url); 1092 ClickTestLink("sub_frame_download_attribution", 1, initial_url);
1095 std::string test_name = 1093 std::string test_name =
1096 base::StringPrintf("%s', '%s", "iframe1", "iframe_direct_download"); 1094 base::StringPrintf("%s', '%s", "iframe1", "iframe_direct_download");
1097 GURL multi_frame_test_url = 1095 GURL multi_frame_test_url =
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1147 download_url, // original_request_url 1145 download_url, // original_request_url
1148 download_url, // destination_url 1146 download_url, // destination_url
1149 true, // is_user_initiated, 1147 true, // is_user_initiated,
1150 false, // has_committed 1148 false, // has_committed
1151 false, // has_server_redirect 1149 false, // has_server_redirect
1152 nav_map->at(download_url).at(0)); 1150 nav_map->at(download_url).at(0));
1153 VerifyHostToIpMap(); 1151 VerifyHostToIpMap();
1154 1152
1155 ReferrerChain referrer_chain; 1153 ReferrerChain referrer_chain;
1156 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1154 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1157 ASSERT_EQ(4U, referrer_chain.size()); 1155 ASSERT_EQ(4, referrer_chain.size());
1158 VerifyReferrerChainEntry(download_url, // url 1156 VerifyReferrerChainEntry(download_url, // url
1159 ReferrerChainEntry::DOWNLOAD_URL, // type 1157 ReferrerChainEntry::DOWNLOAD_URL, // type
1160 test_server_ip, // ip_address 1158 test_server_ip, // ip_address
1161 iframe_url, // referrer_url 1159 iframe_url, // referrer_url
1162 multi_frame_test_url, // referrer_main_frame_url 1160 multi_frame_test_url, // referrer_main_frame_url
1163 false, // is_retargeting 1161 false, // is_retargeting
1164 referrer_chain[0].get()); 1162 referrer_chain.Get(0));
1165 VerifyReferrerChainEntry(iframe_url, // url 1163 VerifyReferrerChainEntry(iframe_url, // url
1166 ReferrerChainEntry::LANDING_PAGE, // type 1164 ReferrerChainEntry::LANDING_PAGE, // type
1167 test_server_ip, // ip_address 1165 test_server_ip, // ip_address
1168 GURL(), // referrer_url 1166 GURL(), // referrer_url
1169 multi_frame_test_url, // referrer_main_frame_url 1167 multi_frame_test_url, // referrer_main_frame_url
1170 false, // is_retargeting 1168 false, // is_retargeting
1171 referrer_chain[1].get()); 1169 referrer_chain.Get(1));
1172 VerifyReferrerChainEntry(multi_frame_test_url, // url 1170 VerifyReferrerChainEntry(multi_frame_test_url, // url
1173 ReferrerChainEntry::CLIENT_REDIRECT, // type 1171 ReferrerChainEntry::CLIENT_REDIRECT, // type
1174 test_server_ip, // ip_address 1172 test_server_ip, // ip_address
1175 initial_url, // referrer_url 1173 initial_url, // referrer_url
1176 initial_url, // referrer_main_frame_url 1174 initial_url, // referrer_main_frame_url
1177 false, // is_retargeting 1175 false, // is_retargeting
1178 referrer_chain[2].get()); 1176 referrer_chain.Get(2));
1179 VerifyReferrerChainEntry(initial_url, // url 1177 VerifyReferrerChainEntry(initial_url, // url
1180 ReferrerChainEntry::LANDING_REFERRER, // type 1178 ReferrerChainEntry::LANDING_REFERRER, // type
1181 test_server_ip, // ip_address 1179 test_server_ip, // ip_address
1182 GURL(), // referrer_url 1180 GURL(), // referrer_url
1183 GURL(), // referrer_main_frame_url 1181 GURL(), // referrer_main_frame_url
1184 false, // is_retargeting 1182 false, // is_retargeting
1185 referrer_chain[3].get()); 1183 referrer_chain.Get(3));
1186 } 1184 }
1187 1185
1188 // Click a link in a subframe and open download in a new tab. 1186 // Click a link in a subframe and open download in a new tab.
1189 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 1187 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
1190 SubFrameNewTabDownload) { 1188 SubFrameNewTabDownload) {
1191 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1189 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1192 ClickTestLink("sub_frame_download_attribution", 1, initial_url); 1190 ClickTestLink("sub_frame_download_attribution", 1, initial_url);
1193 std::string test_name = 1191 std::string test_name =
1194 base::StringPrintf("%s', '%s", "iframe2", "iframe_new_tab_download"); 1192 base::StringPrintf("%s', '%s", "iframe2", "iframe_new_tab_download");
1195 GURL multi_frame_test_url = 1193 GURL multi_frame_test_url =
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 download_url, // original_request_url 1261 download_url, // original_request_url
1264 download_url, // destination_url 1262 download_url, // destination_url
1265 false, // is_user_initiated, 1263 false, // is_user_initiated,
1266 false, // has_committed 1264 false, // has_committed
1267 false, // has_server_redirect 1265 false, // has_server_redirect
1268 nav_map->at(download_url).at(0)); 1266 nav_map->at(download_url).at(0));
1269 VerifyHostToIpMap(); 1267 VerifyHostToIpMap();
1270 1268
1271 ReferrerChain referrer_chain; 1269 ReferrerChain referrer_chain;
1272 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1270 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1273 EXPECT_EQ(5U, referrer_chain.size()); 1271 EXPECT_EQ(5, referrer_chain.size());
1274 VerifyReferrerChainEntry(download_url, // url 1272 VerifyReferrerChainEntry(download_url, // url
1275 ReferrerChainEntry::DOWNLOAD_URL, // type 1273 ReferrerChainEntry::DOWNLOAD_URL, // type
1276 test_server_ip, // ip_address 1274 test_server_ip, // ip_address
1277 blank_url, // referrer_url 1275 blank_url, // referrer_url
1278 blank_url, // referrer_main_frame_url 1276 blank_url, // referrer_main_frame_url
1279 false, // is_retargeting 1277 false, // is_retargeting
1280 referrer_chain[0].get()); 1278 referrer_chain.Get(0));
1281 VerifyReferrerChainEntry(blank_url, // url 1279 VerifyReferrerChainEntry(blank_url, // url
1282 ReferrerChainEntry::CLIENT_REDIRECT, // type 1280 ReferrerChainEntry::CLIENT_REDIRECT, // type
1283 "", // ip_address 1281 "", // ip_address
1284 iframe_retargeting_url, // referrer_url 1282 iframe_retargeting_url, // referrer_url
1285 multi_frame_test_url, // referrer_main_frame_url 1283 multi_frame_test_url, // referrer_main_frame_url
1286 true, // is_retargeting 1284 true, // is_retargeting
1287 referrer_chain[1].get()); 1285 referrer_chain.Get(1));
1288 VerifyReferrerChainEntry(iframe_retargeting_url, // url 1286 VerifyReferrerChainEntry(iframe_retargeting_url, // url
1289 ReferrerChainEntry::LANDING_PAGE, // type 1287 ReferrerChainEntry::LANDING_PAGE, // type
1290 test_server_ip, // ip_address 1288 test_server_ip, // ip_address
1291 GURL(), // referrer_url 1289 GURL(), // referrer_url
1292 multi_frame_test_url, // referrer_main_frame_url 1290 multi_frame_test_url, // referrer_main_frame_url
1293 false, // is_retargeting 1291 false, // is_retargeting
1294 referrer_chain[2].get()); 1292 referrer_chain.Get(2));
1295 VerifyReferrerChainEntry(multi_frame_test_url, // url 1293 VerifyReferrerChainEntry(multi_frame_test_url, // url
1296 ReferrerChainEntry::CLIENT_REDIRECT, // type 1294 ReferrerChainEntry::CLIENT_REDIRECT, // type
1297 test_server_ip, // ip_address 1295 test_server_ip, // ip_address
1298 initial_url, // referrer_url 1296 initial_url, // referrer_url
1299 initial_url, // referrer_main_frame_url 1297 initial_url, // referrer_main_frame_url
1300 false, // is_retargeting 1298 false, // is_retargeting
1301 referrer_chain[3].get()); 1299 referrer_chain.Get(3));
1302 VerifyReferrerChainEntry(initial_url, // url 1300 VerifyReferrerChainEntry(initial_url, // url
1303 ReferrerChainEntry::LANDING_REFERRER, // type 1301 ReferrerChainEntry::LANDING_REFERRER, // type
1304 test_server_ip, // ip_address 1302 test_server_ip, // ip_address
1305 GURL(), // referrer_url 1303 GURL(), // referrer_url
1306 GURL(), // referrer_main_frame_url 1304 GURL(), // referrer_main_frame_url
1307 false, // is_retargeting 1305 false, // is_retargeting
1308 referrer_chain[4].get()); 1306 referrer_chain.Get(4));
1309 } 1307 }
1310 1308
1311 // Click a link which redirects to the landing page, and then click on the 1309 // Click a link which redirects to the landing page, and then click on the
1312 // landing page to trigger download. 1310 // landing page to trigger download.
1313 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, CompleteReferrerChain) { 1311 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, CompleteReferrerChain) {
1314 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1312 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1315 ClickTestLink("complete_referrer_chain", 2, initial_url); 1313 ClickTestLink("complete_referrer_chain", 2, initial_url);
1316 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); 1314 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL);
1317 GURL landing_url = embedded_test_server()->GetURL(kLandingURL); 1315 GURL landing_url = embedded_test_server()->GetURL(kLandingURL);
1318 ClickTestLink("download_on_landing_page", 1, landing_url); 1316 ClickTestLink("download_on_landing_page", 1, landing_url);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1354 download_url, // original_request_url 1352 download_url, // original_request_url
1355 download_url, // destination_url 1353 download_url, // destination_url
1356 true, // is_user_initiated, 1354 true, // is_user_initiated,
1357 false, // has_committed 1355 false, // has_committed
1358 false, // has_server_redirect 1356 false, // has_server_redirect
1359 nav_map->at(download_url).at(0)); 1357 nav_map->at(download_url).at(0));
1360 VerifyHostToIpMap(); 1358 VerifyHostToIpMap();
1361 1359
1362 ReferrerChain referrer_chain; 1360 ReferrerChain referrer_chain;
1363 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1361 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1364 EXPECT_EQ(4U, referrer_chain.size()); 1362 EXPECT_EQ(4, referrer_chain.size());
1365 VerifyReferrerChainEntry(download_url, // url 1363 VerifyReferrerChainEntry(download_url, // url
1366 ReferrerChainEntry::DOWNLOAD_URL, // type 1364 ReferrerChainEntry::DOWNLOAD_URL, // type
1367 test_server_ip, // ip_address 1365 test_server_ip, // ip_address
1368 landing_url, // referrer_url 1366 landing_url, // referrer_url
1369 landing_url, // referrer_main_frame_url 1367 landing_url, // referrer_main_frame_url
1370 false, // is_retargeting 1368 false, // is_retargeting
1371 referrer_chain[0].get()); 1369 referrer_chain.Get(0));
1372 VerifyReferrerChainEntry(landing_url, // url 1370 VerifyReferrerChainEntry(landing_url, // url
1373 ReferrerChainEntry::LANDING_PAGE, // type 1371 ReferrerChainEntry::LANDING_PAGE, // type
1374 test_server_ip, // ip_address 1372 test_server_ip, // ip_address
1375 redirect_url, // referrer_url 1373 redirect_url, // referrer_url
1376 redirect_url, // referrer_main_frame_url 1374 redirect_url, // referrer_main_frame_url
1377 false, // is_retargeting 1375 false, // is_retargeting
1378 referrer_chain[1].get()); 1376 referrer_chain.Get(1));
1379 VerifyReferrerChainEntry(redirect_url, // url 1377 VerifyReferrerChainEntry(redirect_url, // url
1380 ReferrerChainEntry::CLIENT_REDIRECT, // type 1378 ReferrerChainEntry::CLIENT_REDIRECT, // type
1381 test_server_ip, // ip_address 1379 test_server_ip, // ip_address
1382 initial_url, // referrer_url 1380 initial_url, // referrer_url
1383 initial_url, // referrer_main_frame_url 1381 initial_url, // referrer_main_frame_url
1384 false, // is_retargeting 1382 false, // is_retargeting
1385 referrer_chain[2].get()); 1383 referrer_chain.Get(2));
1386 VerifyReferrerChainEntry( 1384 VerifyReferrerChainEntry(
1387 initial_url, // url 1385 initial_url, // url
1388 ReferrerChainEntry::LANDING_REFERRER, // type 1386 ReferrerChainEntry::LANDING_REFERRER, // type
1389 test_server_ip, // ip_address 1387 test_server_ip, // ip_address
1390 GURL(), // referrer_url is empty since this beyonds 2 clicks. 1388 GURL(), // referrer_url is empty since this beyonds 2 clicks.
1391 GURL(), // referrer_main_frame_url is empty for the same reason. 1389 GURL(), // referrer_main_frame_url is empty for the same reason.
1392 false, // is_retargeting 1390 false, // is_retargeting
1393 referrer_chain[3].get()); 1391 referrer_chain.Get(3));
1394 } 1392 }
1395 1393
1396 // Click three links before reaching download. 1394 // Click three links before reaching download.
1397 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 1395 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
1398 ReferrerAttributionWithinTwoUserGestures) { 1396 ReferrerAttributionWithinTwoUserGestures) {
1399 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1397 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1400 ClickTestLink("attribution_within_two_user_gestures", 1, initial_url); 1398 ClickTestLink("attribution_within_two_user_gestures", 1, initial_url);
1401 GURL page_before_landing_referrer_url = 1399 GURL page_before_landing_referrer_url =
1402 embedded_test_server()->GetURL(kPageBeforeLandingReferrerURL); 1400 embedded_test_server()->GetURL(kPageBeforeLandingReferrerURL);
1403 ClickTestLink("link_to_landing_referrer", 1, 1401 ClickTestLink("link_to_landing_referrer", 1,
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1454 download_url, // original_request_url 1452 download_url, // original_request_url
1455 download_url, // destination_url 1453 download_url, // destination_url
1456 true, // is_user_initiated, 1454 true, // is_user_initiated,
1457 false, // has_committed 1455 false, // has_committed
1458 false, // has_server_redirect 1456 false, // has_server_redirect
1459 nav_map->at(download_url).at(0)); 1457 nav_map->at(download_url).at(0));
1460 VerifyHostToIpMap(); 1458 VerifyHostToIpMap();
1461 1459
1462 ReferrerChain referrer_chain; 1460 ReferrerChain referrer_chain;
1463 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1461 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1464 EXPECT_EQ(3U, referrer_chain.size()); 1462 EXPECT_EQ(3, referrer_chain.size());
1465 VerifyReferrerChainEntry(download_url, // url 1463 VerifyReferrerChainEntry(download_url, // url
1466 ReferrerChainEntry::DOWNLOAD_URL, // type 1464 ReferrerChainEntry::DOWNLOAD_URL, // type
1467 test_server_ip, // ip_address 1465 test_server_ip, // ip_address
1468 landing_url, // referrer_url 1466 landing_url, // referrer_url
1469 landing_url, // referrer_main_frame_url 1467 landing_url, // referrer_main_frame_url
1470 false, // is_retargeting 1468 false, // is_retargeting
1471 referrer_chain[0].get()); 1469 referrer_chain.Get(0));
1472 VerifyReferrerChainEntry(landing_url, // url 1470 VerifyReferrerChainEntry(landing_url, // url
1473 ReferrerChainEntry::LANDING_PAGE, // type 1471 ReferrerChainEntry::LANDING_PAGE, // type
1474 test_server_ip, // ip_address 1472 test_server_ip, // ip_address
1475 landing_referrer_url, // referrer_url 1473 landing_referrer_url, // referrer_url
1476 landing_referrer_url, // referrer_main_frame_url 1474 landing_referrer_url, // referrer_main_frame_url
1477 false, // is_retargeting 1475 false, // is_retargeting
1478 referrer_chain[1].get()); 1476 referrer_chain.Get(1));
1479 VerifyReferrerChainEntry( 1477 VerifyReferrerChainEntry(
1480 landing_referrer_url, // url 1478 landing_referrer_url, // url
1481 ReferrerChainEntry::LANDING_REFERRER, // type 1479 ReferrerChainEntry::LANDING_REFERRER, // type
1482 test_server_ip, // ip_address 1480 test_server_ip, // ip_address
1483 GURL(), // referrer_url is empty since this beyonds 2 clicks. 1481 GURL(), // referrer_url is empty since this beyonds 2 clicks.
1484 GURL(), // referrer_main_frame_url is empty for the same reason. 1482 GURL(), // referrer_main_frame_url is empty for the same reason.
1485 false, // is_retargeting 1483 false, // is_retargeting
1486 referrer_chain[2].get()); 1484 referrer_chain.Get(2));
1487 // page_before_landing_referrer_url is not in referrer chain. 1485 // page_before_landing_referrer_url is not in referrer chain.
1488 } 1486 }
1489 1487
1490 // Click a link which redirects to a PPAPI landing page. 1488 // Click a link which redirects to a PPAPI landing page.
1491 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 1489 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
1492 PPAPIDownloadWithUserGestureOnHostingFrame) { 1490 PPAPIDownloadWithUserGestureOnHostingFrame) {
1493 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1491 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1494 ClickTestLink("complete_referrer_chain", 2, initial_url); 1492 ClickTestLink("complete_referrer_chain", 2, initial_url);
1495 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); 1493 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL);
1496 GURL landing_url = embedded_test_server()->GetURL(kLandingURL); 1494 GURL landing_url = embedded_test_server()->GetURL(kLandingURL);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1528 true, // has_committed 1526 true, // has_committed
1529 false, // has_server_redirect 1527 false, // has_server_redirect
1530 nav_map->at(landing_url).at(0)); 1528 nav_map->at(landing_url).at(0));
1531 VerifyHostToIpMap(); 1529 VerifyHostToIpMap();
1532 1530
1533 ReferrerChain referrer_chain; 1531 ReferrerChain referrer_chain;
1534 IdentifyReferrerChainForPPAPIDownload( 1532 IdentifyReferrerChainForPPAPIDownload(
1535 landing_url, 1533 landing_url,
1536 browser()->tab_strip_model()->GetActiveWebContents(), 1534 browser()->tab_strip_model()->GetActiveWebContents(),
1537 &referrer_chain); 1535 &referrer_chain);
1538 EXPECT_EQ(3U, referrer_chain.size()); 1536 EXPECT_EQ(3, referrer_chain.size());
1539 VerifyReferrerChainEntry(landing_url, // url 1537 VerifyReferrerChainEntry(landing_url, // url
1540 ReferrerChainEntry::LANDING_PAGE, // type 1538 ReferrerChainEntry::LANDING_PAGE, // type
1541 test_server_ip, // ip_address 1539 test_server_ip, // ip_address
1542 redirect_url, // referrer_url 1540 redirect_url, // referrer_url
1543 redirect_url, // referrer_main_frame_url 1541 redirect_url, // referrer_main_frame_url
1544 false, // is_retargeting 1542 false, // is_retargeting
1545 referrer_chain[0].get()); 1543 referrer_chain.Get(0));
1546 VerifyReferrerChainEntry(redirect_url, // url 1544 VerifyReferrerChainEntry(redirect_url, // url
1547 ReferrerChainEntry::CLIENT_REDIRECT, // type 1545 ReferrerChainEntry::CLIENT_REDIRECT, // type
1548 test_server_ip, // ip_address 1546 test_server_ip, // ip_address
1549 initial_url, // referrer_url 1547 initial_url, // referrer_url
1550 initial_url, // referrer_main_frame_url 1548 initial_url, // referrer_main_frame_url
1551 false, // is_retargeting 1549 false, // is_retargeting
1552 referrer_chain[1].get()); 1550 referrer_chain.Get(1));
1553 VerifyReferrerChainEntry( 1551 VerifyReferrerChainEntry(
1554 initial_url, // url 1552 initial_url, // url
1555 ReferrerChainEntry::LANDING_REFERRER, // type 1553 ReferrerChainEntry::LANDING_REFERRER, // type
1556 test_server_ip, // ip_address 1554 test_server_ip, // ip_address
1557 GURL(), // referrer_url is empty since this beyonds 2 clicks. 1555 GURL(), // referrer_url is empty since this beyonds 2 clicks.
1558 GURL(), // referrer_main_frame_url is empty for the same reason. 1556 GURL(), // referrer_main_frame_url is empty for the same reason.
1559 false, // is_retargeting 1557 false, // is_retargeting
1560 referrer_chain[2].get()); 1558 referrer_chain.Get(2));
1561 } 1559 }
1562 1560
1563 // Click a link which redirects to a page that triggers PPAPI download without 1561 // Click a link which redirects to a page that triggers PPAPI download without
1564 // user gesture (a.k.a not a landing page). 1562 // user gesture (a.k.a not a landing page).
1565 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 1563 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
1566 PPAPIDownloadWithoutUserGestureOnHostingFrame) { 1564 PPAPIDownloadWithoutUserGestureOnHostingFrame) {
1567 GURL landing_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1565 GURL landing_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1568 ClickTestLink("complete_referrer_chain", 2, landing_url); 1566 ClickTestLink("complete_referrer_chain", 2, landing_url);
1569 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); 1567 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL);
1570 GURL hosting_url = embedded_test_server()->GetURL(kLandingURL); 1568 GURL hosting_url = embedded_test_server()->GetURL(kLandingURL);
(...skipping 29 matching lines...) Expand all
1600 true, // has_committed 1598 true, // has_committed
1601 false, // has_server_redirect 1599 false, // has_server_redirect
1602 nav_map->at(hosting_url).at(0)); 1600 nav_map->at(hosting_url).at(0));
1603 VerifyHostToIpMap(); 1601 VerifyHostToIpMap();
1604 1602
1605 ReferrerChain referrer_chain; 1603 ReferrerChain referrer_chain;
1606 IdentifyReferrerChainForPPAPIDownload( 1604 IdentifyReferrerChainForPPAPIDownload(
1607 hosting_url, 1605 hosting_url,
1608 browser()->tab_strip_model()->GetActiveWebContents(), 1606 browser()->tab_strip_model()->GetActiveWebContents(),
1609 &referrer_chain); 1607 &referrer_chain);
1610 EXPECT_EQ(3U, referrer_chain.size()); 1608 EXPECT_EQ(3, referrer_chain.size());
1611 VerifyReferrerChainEntry(hosting_url, // url 1609 VerifyReferrerChainEntry(hosting_url, // url
1612 ReferrerChainEntry::CLIENT_REDIRECT, // type 1610 ReferrerChainEntry::CLIENT_REDIRECT, // type
1613 test_server_ip, // ip_address 1611 test_server_ip, // ip_address
1614 redirect_url, // referrer_url 1612 redirect_url, // referrer_url
1615 redirect_url, // referrer_main_frame_url 1613 redirect_url, // referrer_main_frame_url
1616 false, // is_retargeting 1614 false, // is_retargeting
1617 referrer_chain[0].get()); 1615 referrer_chain.Get(0));
1618 VerifyReferrerChainEntry(redirect_url, // url 1616 VerifyReferrerChainEntry(redirect_url, // url
1619 ReferrerChainEntry::CLIENT_REDIRECT, // type 1617 ReferrerChainEntry::CLIENT_REDIRECT, // type
1620 test_server_ip, // ip_address 1618 test_server_ip, // ip_address
1621 landing_url, // referrer_url 1619 landing_url, // referrer_url
1622 landing_url, // referrer_main_frame_url 1620 landing_url, // referrer_main_frame_url
1623 false, // is_retargeting 1621 false, // is_retargeting
1624 referrer_chain[1].get()); 1622 referrer_chain.Get(1));
1625 VerifyReferrerChainEntry(landing_url, // url 1623 VerifyReferrerChainEntry(landing_url, // url
1626 ReferrerChainEntry::LANDING_PAGE, // type 1624 ReferrerChainEntry::LANDING_PAGE, // type
1627 test_server_ip, // ip_address 1625 test_server_ip, // ip_address
1628 GURL(), // no more referrer before landing_url 1626 GURL(), // no more referrer before landing_url
1629 GURL(), 1627 GURL(),
1630 false, // is_retargeting 1628 false, // is_retargeting
1631 referrer_chain[2].get()); 1629 referrer_chain.Get(2));
1632 } 1630 }
1633 1631
1634 // Server-side redirect. 1632 // Server-side redirect.
1635 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, ServerRedirect) { 1633 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, ServerRedirect) {
1636 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1634 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1637 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 1635 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
1638 GURL request_url = 1636 GURL request_url =
1639 embedded_test_server()->GetURL("/server-redirect?" + download_url.spec()); 1637 embedded_test_server()->GetURL("/server-redirect?" + download_url.spec());
1640 ui_test_utils::NavigateToURL(browser(), request_url); 1638 ui_test_utils::NavigateToURL(browser(), request_url);
1641 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); 1639 std::string test_server_ip(embedded_test_server()->host_port_pair().host());
(...skipping 14 matching lines...) Expand all
1656 GURL(), // source_main_frame_url 1654 GURL(), // source_main_frame_url
1657 request_url, // original_request_url 1655 request_url, // original_request_url
1658 download_url, // destination_url 1656 download_url, // destination_url
1659 true, // is_user_initiated, 1657 true, // is_user_initiated,
1660 false, // has_committed 1658 false, // has_committed
1661 true, // has_server_redirect 1659 true, // has_server_redirect
1662 nav_map->at(download_url).at(0)); 1660 nav_map->at(download_url).at(0));
1663 1661
1664 ReferrerChain referrer_chain; 1662 ReferrerChain referrer_chain;
1665 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1663 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1666 ASSERT_EQ(1U, referrer_chain.size()); 1664 ASSERT_EQ(1, referrer_chain.size());
1667 VerifyReferrerChainEntry(download_url, // url 1665 VerifyReferrerChainEntry(download_url, // url
1668 ReferrerChainEntry::DOWNLOAD_URL, // type 1666 ReferrerChainEntry::DOWNLOAD_URL, // type
1669 test_server_ip, // ip_address 1667 test_server_ip, // ip_address
1670 GURL(), // referrer_url 1668 GURL(), // referrer_url
1671 GURL(), // referrer_main_frame_url 1669 GURL(), // referrer_main_frame_url
1672 false, // is_retargeting 1670 false, // is_retargeting
1673 referrer_chain[0].get()); 1671 referrer_chain.Get(0));
1674 } 1672 }
1675 1673
1676 // Retargeting immediately followed by server-side redirect. 1674 // Retargeting immediately followed by server-side redirect.
1677 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 1675 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
1678 RetargetingAndServerRedirect) { 1676 RetargetingAndServerRedirect) {
1679 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1677 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1680 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 1678 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
1681 GURL request_url = 1679 GURL request_url =
1682 embedded_test_server()->GetURL("/server-redirect?" + download_url.spec()); 1680 embedded_test_server()->GetURL("/server-redirect?" + download_url.spec());
1683 ClickTestLink("new_tab_download_with_server_redirect", 1, initial_url); 1681 ClickTestLink("new_tab_download_with_server_redirect", 1, initial_url);
(...skipping 24 matching lines...) Expand all
1708 GURL(), // source_main_frame_url 1706 GURL(), // source_main_frame_url
1709 request_url, // original_request_url 1707 request_url, // original_request_url
1710 download_url, // destination_url 1708 download_url, // destination_url
1711 false, // is_user_initiated, 1709 false, // is_user_initiated,
1712 false, // has_committed 1710 false, // has_committed
1713 true, // has_server_redirect 1711 true, // has_server_redirect
1714 nav_map->at(download_url).at(0)); 1712 nav_map->at(download_url).at(0));
1715 1713
1716 ReferrerChain referrer_chain; 1714 ReferrerChain referrer_chain;
1717 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1715 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1718 ASSERT_EQ(2U, referrer_chain.size()); 1716 ASSERT_EQ(2, referrer_chain.size());
1719 VerifyReferrerChainEntry(download_url, // url 1717 VerifyReferrerChainEntry(download_url, // url
1720 ReferrerChainEntry::DOWNLOAD_URL, // type 1718 ReferrerChainEntry::DOWNLOAD_URL, // type
1721 test_server_ip, // ip_address 1719 test_server_ip, // ip_address
1722 initial_url, // referrer_url 1720 initial_url, // referrer_url
1723 initial_url, // referrer_main_frame_url 1721 initial_url, // referrer_main_frame_url
1724 true, // is_retargeting 1722 true, // is_retargeting
1725 referrer_chain[0].get()); 1723 referrer_chain.Get(0));
1726 VerifyReferrerChainEntry(initial_url, // url 1724 VerifyReferrerChainEntry(initial_url, // url
1727 ReferrerChainEntry::LANDING_PAGE, // type 1725 ReferrerChainEntry::LANDING_PAGE, // type
1728 test_server_ip, // ip_address 1726 test_server_ip, // ip_address
1729 GURL(), // referrer_url 1727 GURL(), // referrer_url
1730 GURL(), // referrer_main_frame_url 1728 GURL(), // referrer_main_frame_url
1731 false, // is_retargeting 1729 false, // is_retargeting
1732 referrer_chain[1].get()); 1730 referrer_chain.Get(1));
1733 } 1731 }
1734 1732
1735 // host_to_ip_map_ size should increase by one after a new navigation. 1733 // host_to_ip_map_ size should increase by one after a new navigation.
1736 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, AddIPMapping) { 1734 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, AddIPMapping) {
1737 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1735 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1738 auto ip_map = host_to_ip_map(); 1736 auto ip_map = host_to_ip_map();
1739 std::string test_server_host(embedded_test_server()->base_url().host()); 1737 std::string test_server_host(embedded_test_server()->base_url().host());
1740 ip_map->clear(); 1738 ip_map->clear();
1741 ip_map->insert( 1739 ip_map->insert(
1742 std::make_pair(test_server_host, std::vector<ResolvedIPAddress>())); 1740 std::make_pair(test_server_host, std::vector<ResolvedIPAddress>()));
(...skipping 18 matching lines...) Expand all
1761 yesterday, embedded_test_server()->host_port_pair().host())); 1759 yesterday, embedded_test_server()->host_port_pair().host()));
1762 ASSERT_EQ(1U, ip_map->at(test_server_host).size()); 1760 ASSERT_EQ(1U, ip_map->at(test_server_host).size());
1763 ClickTestLink("direct_download", 1, initial_url); 1761 ClickTestLink("direct_download", 1, initial_url);
1764 EXPECT_EQ(1U, ip_map->at(test_server_host).size()); 1762 EXPECT_EQ(1U, ip_map->at(test_server_host).size());
1765 EXPECT_EQ(embedded_test_server()->host_port_pair().host(), 1763 EXPECT_EQ(embedded_test_server()->host_port_pair().host(),
1766 ip_map->at(test_server_host).back().ip); 1764 ip_map->at(test_server_host).back().ip);
1767 EXPECT_NE(yesterday, ip_map->at(test_server_host).front().timestamp); 1765 EXPECT_NE(yesterday, ip_map->at(test_server_host).front().timestamp);
1768 } 1766 }
1769 1767
1770 } // namespace safe_browsing 1768 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698