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

Unified Diff: chrome/browser/safe_browsing/safe_browsing_navigation_observer_browsertest.cc

Issue 2686773002: In previous implementation, if the server does the more than one server redirects, we only record t… (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 3fc8d9eb9152361d0dc4c4a10f8f0e28613958f6..63c1f39ff151a1b096aef94371900bf453e890e6 100644
--- a/chrome/browser/safe_browsing/safe_browsing_navigation_observer_browsertest.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_navigation_observer_browsertest.cc
@@ -221,21 +221,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,
- const 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,
+ const ReferrerChainEntry& actual_entry) {
EXPECT_EQ(expected_url.spec(), actual_entry.url());
+ if (expected_main_frame_url.is_empty()) {
+ EXPECT_FALSE(actual_entry.has_main_frame_url());
+ } else {
+ // 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());
+ }
EXPECT_EQ(expected_type, actual_entry.type());
if (expected_ip_address.empty()) {
ASSERT_EQ(0, actual_entry.ip_addresses_size());
@@ -244,9 +254,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_empty()) {
+ EXPECT_FALSE(actual_entry.has_referrer_main_frame_url());
+ } else {
+ // 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());
+ }
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++) {
+ EXPECT_EQ(expected_server_redirects[i].spec(),
+ actual_entry.server_redirect_chain(i).url());
+ }
+ }
}
// Identify referrer chain of a DownloadItem and populate |referrer_chain|.
@@ -273,9 +300,8 @@ class SBNavigationObserverBrowserTest : public InProcessBrowserTest {
bool has_user_gesture = observer_manager_->HasUserGesture(web_contents);
observer_manager_->OnUserGestureConsumed(web_contents, base::Time::Now());
EXPECT_LE(observer_manager_->IdentifyReferrerChainForPPAPIDownload(
- initiating_frame_url,
- tab_id,
- has_user_gesture,
+ initiating_frame_url, web_contents->GetLastCommittedURL(),
+ tab_id, has_user_gesture,
2, // kDownloadAttributionUserGestureLimit)
referrer_chain),
SafeBrowsingNavigationObserverManager::SUCCESS_LANDING_REFERRER);
@@ -350,11 +376,13 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, TypeInURLDownload) {
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(1, 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
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(0));
}
// Click on a link and start download on the same page.
@@ -390,18 +418,22 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, DirectDownload) {
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(2, 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.Get(0));
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
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(1));
}
@@ -440,18 +472,22 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(2, 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.Get(0));
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
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(1));
}
@@ -504,18 +540,22 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(2, 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.Get(0));
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
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(1));
}
@@ -566,25 +606,31 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(3, 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.Get(0));
- VerifyReferrerChainEntry(redirect_url, // url
+ 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.Get(1));
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
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(2));
}
@@ -644,25 +690,31 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(3, 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.Get(0));
- VerifyReferrerChainEntry(redirect_url, // url
+ 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.Get(1));
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
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(2));
}
@@ -723,32 +775,40 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(4, 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
+ GURL(), // referrer_main_frame_url
false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(0));
- VerifyReferrerChainEntry(second_redirect_url, // url
+ 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.Get(1));
- VerifyReferrerChainEntry(first_redirect_url, // url
+ 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.Get(2));
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
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(3));
}
@@ -786,18 +846,22 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(2, 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.Get(0));
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
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(1));
}
@@ -846,25 +910,31 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, MixRedirects) {
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(3, 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.Get(0));
- VerifyReferrerChainEntry(redirect_url, // url
+ 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.Get(1));
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
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(2));
}
@@ -926,25 +996,31 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, NewTabDownload) {
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(3, 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.Get(0));
- VerifyReferrerChainEntry(blank_url, // url
+ 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.Get(1));
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
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(2));
}
@@ -1008,25 +1084,31 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(3, 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.Get(0));
- VerifyReferrerChainEntry(blank_url, // url
+ 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.Get(1));
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
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(2));
}
@@ -1070,18 +1152,22 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(2, 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.Get(0));
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
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(1));
}
@@ -1154,32 +1240,40 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(4, 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.Get(0));
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.Get(1));
- VerifyReferrerChainEntry(multi_frame_test_url, // url
+ 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
+ initial_url, // referrer_url
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(2));
- VerifyReferrerChainEntry(initial_url, // url
+ 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
+ GURL(), // referrer_url
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(3));
}
@@ -1270,39 +1364,49 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
EXPECT_EQ(5, 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.Get(0));
- VerifyReferrerChainEntry(blank_url, // url
+ 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.Get(1));
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.Get(2));
- VerifyReferrerChainEntry(multi_frame_test_url, // url
+ 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
+ initial_url, // referrer_url
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(3));
- VerifyReferrerChainEntry(initial_url, // url
+ 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
+ GURL(), // referrer_url
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(4));
}
@@ -1361,33 +1465,41 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, CompleteReferrerChain) {
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
EXPECT_EQ(4, 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.Get(0));
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.Get(1));
- VerifyReferrerChainEntry(redirect_url, // url
+ 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.Get(2));
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.Get(3));
}
@@ -1461,26 +1573,32 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
EXPECT_EQ(3, 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.Get(0));
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.Get(1));
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.Get(2));
// page_before_landing_referrer_url is not in referrer chain.
}
@@ -1535,26 +1653,32 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
&referrer_chain);
EXPECT_EQ(3, 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.Get(0));
- VerifyReferrerChainEntry(redirect_url, // url
+ 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.Get(1));
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.Get(2));
}
@@ -1606,26 +1730,32 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
browser()->tab_strip_model()->GetActiveWebContents(),
&referrer_chain);
EXPECT_EQ(3, referrer_chain.size());
- VerifyReferrerChainEntry(hosting_url, // url
+ 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
+ test_server_ip, // ip_address
+ redirect_url, // referrer_url
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(0));
- VerifyReferrerChainEntry(redirect_url, // url
+ 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.Get(1));
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
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(2));
}
@@ -1663,11 +1793,64 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, ServerRedirect) {
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(1, 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.Get(0));
+}
+
+// 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(1, 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.Get(0));
}
@@ -1715,18 +1898,22 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(2, 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.Get(0));
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
+ GURL(), // referrer_main_frame_url
+ false, // is_retargeting
+ std::vector<GURL>(), // server redirects
referrer_chain.Get(1));
}

Powered by Google App Engine
This is Rietveld 408576698