| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/strings/stringprintf.h" | 5 #include "base/strings/stringprintf.h" |
| 6 #include "chrome/browser/chrome_notification_types.h" | 6 #include "chrome/browser/chrome_notification_types.h" |
| 7 #include "chrome/browser/download/download_prefs.h" | 7 #include "chrome/browser/download/download_prefs.h" |
| 8 #include "chrome/browser/profiles/profile.h" | 8 #include "chrome/browser/profiles/profile.h" |
| 9 #include "chrome/browser/safe_browsing/download_protection_service.h" | 9 #include "chrome/browser/safe_browsing/download_protection_service.h" |
| 10 #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer.h" | 10 #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer.h" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |