| 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 a19949a4beca2f971bade39239ec222a5e4caf6a..168d7fc08cca3fced6a190cd47d941bdf5f955d9 100644
|
| --- a/chrome/browser/safe_browsing/safe_browsing_navigation_observer_browsertest.cc
|
| +++ b/chrome/browser/safe_browsing/safe_browsing_navigation_observer_browsertest.cc
|
| @@ -223,7 +223,7 @@ 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,
|
| @@ -1671,6 +1671,68 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, ServerRedirect) {
|
| GURL(), // referrer_main_frame_url
|
| false, // is_retargeting
|
| referrer_chain[0].get());
|
| + const auto server_redirects =
|
| + referrer_chain[0].get()->server_redirect_chain();
|
| + ASSERT_EQ(2, server_redirects.size());
|
| + EXPECT_EQ(request_url, server_redirects.Get(0));
|
| + EXPECT_EQ(download_url, server_redirects.Get(1));
|
| +}
|
| +
|
| +// 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
|
| + ReferrerChainEntry::DOWNLOAD_URL, // type
|
| + test_server_ip, // ip_address
|
| + GURL(), // referrer_url
|
| + GURL(), // referrer_main_frame_url
|
| + false, // is_retargeting
|
| + referrer_chain[0].get());
|
| + const auto server_redirects =
|
| + referrer_chain[0].get()->server_redirect_chain();
|
| + ASSERT_EQ(3, server_redirects.size());
|
| + EXPECT_EQ(request_url, server_redirects.Get(0));
|
| + EXPECT_EQ(redirect_url, server_redirects.Get(1));
|
| + EXPECT_EQ(destination_url, server_redirects.Get(2));
|
| }
|
|
|
| // Retargeting immediately followed by server-side redirect.
|
|
|