Chromium Code Reviews| Index: chrome/browser/safe_browsing/safe_browsing_navigation_observer_browsertest.cc |
| diff --git a/chrome/browser/safe_browsing/safe_browsing_navigation_observer_browsertest.cc b/chrome/browser/safe_browsing/safe_browsing_navigation_observer_browsertest.cc |
| index 974b1e475845a2dac5923e6398d639c593b0516c..13f399bce6ffaf272cf3b296a814d68b8b082c32 100644 |
| --- a/chrome/browser/safe_browsing/safe_browsing_navigation_observer_browsertest.cc |
| +++ b/chrome/browser/safe_browsing/safe_browsing_navigation_observer_browsertest.cc |
| @@ -223,21 +223,31 @@ class SBNavigationObserverBrowserTest : public InProcessBrowserTest { |
| actual_nav_event.source_main_frame_url); |
| EXPECT_EQ(expected_original_request_url, |
| actual_nav_event.original_request_url); |
| - EXPECT_EQ(expected_destination_url, actual_nav_event.destination_url); |
| + EXPECT_EQ(expected_destination_url, actual_nav_event.GetDestinationUrl()); |
| EXPECT_EQ(expected_is_user_initiated, actual_nav_event.is_user_initiated); |
| EXPECT_EQ(expected_has_committed, actual_nav_event.has_committed); |
| EXPECT_EQ(expected_has_server_redirect, |
| - actual_nav_event.has_server_redirect); |
| + !actual_nav_event.server_redirect_urls.empty()); |
| } |
| - void VerifyReferrerChainEntry(const GURL& expected_url, |
| - ReferrerChainEntry::URLType expected_type, |
| - const std::string& expected_ip_address, |
| - const GURL& expected_referrer_url, |
| - const GURL& expected_referrer_main_frame_url, |
| - bool expected_is_retargeting, |
| - ReferrerChainEntry* actual_entry) { |
| + void VerifyReferrerChainEntry( |
| + const GURL& expected_url, |
| + const GURL& expected_main_frame_url, |
| + ReferrerChainEntry::URLType expected_type, |
| + const std::string& expected_ip_address, |
| + const GURL& expected_referrer_url, |
| + const GURL& expected_referrer_main_frame_url, |
| + bool expected_is_retargeting, |
| + const std::vector<GURL>& expected_server_redirects, |
| + ReferrerChainEntry* actual_entry) { |
| EXPECT_EQ(expected_url.spec(), actual_entry->url()); |
| + if (expected_main_frame_url.is_valid()) { |
|
Nathan Parker
2017/01/27 22:53:37
nit: some of these if()'s start with the populated
Jialiu Lin
2017/01/27 23:25:06
You're right. Let me rotate them.
|
| + // main_frame_url only set if it is different from url. |
| + EXPECT_EQ(expected_main_frame_url.spec(), actual_entry->main_frame_url()); |
| + EXPECT_NE(expected_main_frame_url.spec(), actual_entry->url()); |
| + } else { |
| + EXPECT_FALSE(actual_entry->has_main_frame_url()); |
| + } |
| EXPECT_EQ(expected_type, actual_entry->type()); |
| if (expected_ip_address.empty()) { |
| ASSERT_EQ(0, actual_entry->ip_addresses_size()); |
| @@ -246,9 +256,26 @@ class SBNavigationObserverBrowserTest : public InProcessBrowserTest { |
| EXPECT_EQ(expected_ip_address, actual_entry->ip_addresses(0)); |
| } |
| EXPECT_EQ(expected_referrer_url.spec(), actual_entry->referrer_url()); |
| - EXPECT_EQ(expected_referrer_main_frame_url.spec(), |
| - actual_entry->referrer_main_frame_url()); |
| + if (expected_referrer_main_frame_url.is_valid()) { |
| + // referrer_main_frame_url only set if it is different from referrer_url. |
| + EXPECT_EQ(expected_referrer_main_frame_url.spec(), |
| + actual_entry->referrer_main_frame_url()); |
| + EXPECT_NE(expected_referrer_main_frame_url.spec(), |
| + actual_entry->referrer_url()); |
| + } else { |
| + EXPECT_FALSE(actual_entry->has_referrer_main_frame_url()); |
| + } |
| EXPECT_EQ(expected_is_retargeting, actual_entry->is_retargeting()); |
| + if (expected_server_redirects.empty()) { |
| + EXPECT_EQ(0, actual_entry->server_redirect_chain_size()); |
| + } else { |
| + ASSERT_EQ(static_cast<int>(expected_server_redirects.size()), |
| + actual_entry->server_redirect_chain_size()); |
| + for (int i = 0; i<actual_entry->server_redirect_chain_size(); i++) { |
|
Nathan Parker
2017/01/27 22:53:38
nit: spaces around <
Jialiu Lin
2017/01/27 23:25:06
Done.
|
| + EXPECT_EQ(expected_server_redirects[i].spec(), |
| + actual_entry->server_redirect_chain(i).url()); |
| + } |
| + } |
| } |
| // Identify referrer chain of a DownloadItem and populate |referrer_chain|. |
| @@ -276,6 +303,7 @@ class SBNavigationObserverBrowserTest : public InProcessBrowserTest { |
| observer_manager_->OnUserGestureConsumed(web_contents, base::Time::Now()); |
| EXPECT_LE(observer_manager_->IdentifyReferrerChainForPPAPIDownload( |
| initiating_frame_url, |
| + web_contents->GetLastCommittedURL(), |
| tab_id, |
| has_user_gesture, |
| 2, // kDownloadAttributionUserGestureLimit) |
| @@ -352,11 +380,13 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, TypeInURLDownload) { |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| ASSERT_EQ(1U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| } |
| // Click on a link and start download on the same page. |
| @@ -392,18 +422,22 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, DirectDownload) { |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| ASSERT_EQ(2U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
|
Nathan Parker
2017/01/27 22:53:37
(I don't know how to validate if these are correct
Jialiu Lin
2017/01/27 23:25:06
I don't think it is impossible to have a invalid m
|
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| } |
| @@ -442,18 +476,22 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| ASSERT_EQ(2U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| } |
| @@ -506,18 +544,22 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| ASSERT_EQ(2U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - true, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + true, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| } |
| @@ -568,25 +610,31 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| ASSERT_EQ(3U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| redirect_url, // referrer_url |
| - redirect_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(redirect_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::CLIENT_REDIRECT, // type |
| test_server_ip, // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| VerifyReferrerChainEntry(initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[2].get()); |
| } |
| @@ -646,25 +694,31 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| ASSERT_EQ(3U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| redirect_url, // referrer_url |
| - redirect_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(redirect_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::CLIENT_REDIRECT, // type |
| test_server_ip, // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - true, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + true, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| VerifyReferrerChainEntry(initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[2].get()); |
| } |
| @@ -725,32 +779,40 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| ASSERT_EQ(4U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| second_redirect_url, // referrer_url |
| - second_redirect_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(second_redirect_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::CLIENT_REDIRECT, // type |
| test_server_ip, // ip_address |
| first_redirect_url, // referrer_url |
| - first_redirect_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| VerifyReferrerChainEntry(first_redirect_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::CLIENT_REDIRECT, // type |
| test_server_ip, // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[2].get()); |
| VerifyReferrerChainEntry(initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[3].get()); |
| } |
| @@ -788,18 +850,22 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| ASSERT_EQ(2U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| } |
| @@ -848,25 +914,31 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, MixRedirects) { |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| ASSERT_EQ(3U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| redirect_url, // referrer_url |
| - redirect_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(redirect_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::CLIENT_REDIRECT, // type |
| test_server_ip, // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| VerifyReferrerChainEntry(initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[2].get()); |
| } |
| @@ -928,25 +1000,31 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, NewTabDownload) { |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| ASSERT_EQ(3U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| blank_url, // referrer_url |
| - blank_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(blank_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::CLIENT_REDIRECT, // type |
| "", // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - true, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + true, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| VerifyReferrerChainEntry(initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[2].get()); |
| } |
| @@ -1010,25 +1088,31 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| ASSERT_EQ(3U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| "", // ip_address |
| blank_url, // referrer_url |
| - blank_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(blank_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::CLIENT_REDIRECT, // type |
| "", // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - true, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + true, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| VerifyReferrerChainEntry(initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[2].get()); |
| } |
| @@ -1072,18 +1156,22 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| ASSERT_EQ(2U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| "", // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| } |
| @@ -1156,32 +1244,40 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| ASSERT_EQ(4U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| iframe_url, // referrer_url |
| multi_frame_test_url, // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(iframe_url, // url |
| + multi_frame_test_url, // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| multi_frame_test_url, // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| VerifyReferrerChainEntry(multi_frame_test_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::CLIENT_REDIRECT, // type |
| test_server_ip, // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[2].get()); |
| VerifyReferrerChainEntry(initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_REFERRER, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| - false, // is_retargeting |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[3].get()); |
| } |
| @@ -1272,39 +1368,49 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| EXPECT_EQ(5U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| blank_url, // referrer_url |
| - blank_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(blank_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::CLIENT_REDIRECT, // type |
| "", // ip_address |
| iframe_retargeting_url, // referrer_url |
| multi_frame_test_url, // referrer_main_frame_url |
| true, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| VerifyReferrerChainEntry(iframe_retargeting_url, // url |
| + multi_frame_test_url, // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| multi_frame_test_url, // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[2].get()); |
| VerifyReferrerChainEntry(multi_frame_test_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::CLIENT_REDIRECT, // type |
| test_server_ip, // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[3].get()); |
| VerifyReferrerChainEntry(initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_REFERRER, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| - false, // is_retargeting |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[4].get()); |
| } |
| @@ -1363,33 +1469,41 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, CompleteReferrerChain) { |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| EXPECT_EQ(4U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| landing_url, // referrer_url |
| - landing_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(landing_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| redirect_url, // referrer_url |
| - redirect_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| VerifyReferrerChainEntry(redirect_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::CLIENT_REDIRECT, // type |
| test_server_ip, // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[2].get()); |
| VerifyReferrerChainEntry( |
| initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_REFERRER, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url is empty since this beyonds 2 clicks. |
| GURL(), // referrer_main_frame_url is empty for the same reason. |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[3].get()); |
| } |
| @@ -1463,26 +1577,32 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| EXPECT_EQ(3U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| landing_url, // referrer_url |
| - landing_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(landing_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| landing_referrer_url, // referrer_url |
| - landing_referrer_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| VerifyReferrerChainEntry( |
| landing_referrer_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_REFERRER, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url is empty since this beyonds 2 clicks. |
| GURL(), // referrer_main_frame_url is empty for the same reason. |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[2].get()); |
| // page_before_landing_referrer_url is not in referrer chain. |
| } |
| @@ -1537,26 +1657,32 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| &referrer_chain); |
| EXPECT_EQ(3U, referrer_chain.size()); |
| VerifyReferrerChainEntry(landing_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| redirect_url, // referrer_url |
| - redirect_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(redirect_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::CLIENT_REDIRECT, // type |
| test_server_ip, // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| VerifyReferrerChainEntry( |
| initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_REFERRER, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url is empty since this beyonds 2 clicks. |
| GURL(), // referrer_main_frame_url is empty for the same reason. |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[2].get()); |
| } |
| @@ -1609,25 +1735,31 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| &referrer_chain); |
| EXPECT_EQ(3U, referrer_chain.size()); |
| VerifyReferrerChainEntry(hosting_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::CLIENT_REDIRECT, // type |
| test_server_ip, // ip_address |
| redirect_url, // referrer_url |
| - redirect_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(redirect_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::CLIENT_REDIRECT, // type |
| test_server_ip, // ip_address |
| landing_url, // referrer_url |
| - landing_url, // referrer_main_frame_url |
| - false, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| VerifyReferrerChainEntry(landing_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| GURL(), // no more referrer before landing_url |
| GURL(), |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[2].get()); |
| } |
| @@ -1665,11 +1797,66 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, ServerRedirect) { |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| ASSERT_EQ(1U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| + ReferrerChainEntry::DOWNLOAD_URL, // type |
| + test_server_ip, // ip_address |
| + GURL(), // referrer_url |
| + GURL(), // referrer_main_frame_url |
| + false, // is_retargeting |
| + {request_url, download_url}, // server redirects |
| + referrer_chain[0].get()); |
| +} |
| + |
| +// 2 consecutive server-side redirects. |
| +IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, TwoServerRedirects) { |
| + GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); |
| + GURL destination_url = embedded_test_server()->GetURL(kDownloadItemURL); |
| + GURL redirect_url = |
| + embedded_test_server()->GetURL("/server-redirect?" + |
| + destination_url.spec()); |
| + GURL request_url = |
| + embedded_test_server()->GetURL("/server-redirect?" + |
| + redirect_url.spec()); |
| + ui_test_utils::NavigateToURL(browser(), request_url); |
| + std::string test_server_ip(embedded_test_server()->host_port_pair().host()); |
| + auto nav_map = navigation_map(); |
| + ASSERT_TRUE(nav_map); |
| + ASSERT_EQ(2U, nav_map->size()); |
| + ASSERT_EQ(1U, nav_map->at(destination_url).size()); |
| + ASSERT_EQ(1U, nav_map->at(initial_url).size()); |
| + VerifyNavigationEvent(GURL(), // source_url |
| + GURL(), // source_main_frame_url |
| + initial_url, // original_request_url |
| + initial_url, // destination_url |
| + true, // is_user_initiated, |
| + true, // has_committed |
| + false, // has_server_redirect |
| + nav_map->at(initial_url).at(0)); |
| + VerifyNavigationEvent(GURL(), // source_url |
| + GURL(), // source_main_frame_url |
| + request_url, // original_request_url |
| + destination_url, // destination_url |
| + true, // is_user_initiated, |
| + false, // has_committed |
| + true, // has_server_redirect |
| + nav_map->at(destination_url).at(0)); |
| + const auto redirect_vector = |
| + nav_map->at(destination_url).at(0).server_redirect_urls; |
| + ASSERT_EQ(2U, redirect_vector.size()); |
| + EXPECT_EQ(redirect_url, redirect_vector.at(0)); |
| + EXPECT_EQ(destination_url, redirect_vector.at(1)); |
| + |
| + ReferrerChain referrer_chain; |
| + IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| + ASSERT_EQ(1U, referrer_chain.size()); |
| + VerifyReferrerChainEntry(destination_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| false, // is_retargeting |
| + {request_url, redirect_url, destination_url}, |
| referrer_chain[0].get()); |
| } |
| @@ -1717,18 +1904,22 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, |
| IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); |
| ASSERT_EQ(2U, referrer_chain.size()); |
| VerifyReferrerChainEntry(download_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::DOWNLOAD_URL, // type |
| test_server_ip, // ip_address |
| initial_url, // referrer_url |
| - initial_url, // referrer_main_frame_url |
| - true, // is_retargeting |
| + GURL(), // referrer_main_frame_url |
| + true, // is_retargeting |
| + {request_url, download_url}, // server redirects |
| referrer_chain[0].get()); |
| VerifyReferrerChainEntry(initial_url, // url |
| + GURL(), // main_frame_url |
| ReferrerChainEntry::LANDING_PAGE, // type |
| test_server_ip, // ip_address |
| GURL(), // referrer_url |
| GURL(), // referrer_main_frame_url |
| false, // is_retargeting |
| + std::vector<GURL>(), // server redirects |
| referrer_chain[1].get()); |
| } |