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

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

Issue 2624463003: Address 2 crashes in download attribution code (Closed)
Patch Set: Created 3 years, 11 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 495537dbc7fe92bbd437b175ee1e57be36c3683c..585ea70488007344f9a28ca838371ce07491ac62 100644
--- a/chrome/browser/safe_browsing/safe_browsing_navigation_observer_browsertest.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_navigation_observer_browsertest.cc
@@ -234,24 +234,24 @@ class SBNavigationObserverBrowserTest : public InProcessBrowserTest {
const GURL& expected_referrer_url,
const GURL& expected_referrer_main_frame_url,
bool expected_is_retargeting,
- ReferrerChainEntry actual_entry) {
- EXPECT_EQ(expected_url.spec(), actual_entry.url());
- EXPECT_EQ(expected_type, actual_entry.type());
+ ReferrerChainEntry* actual_entry) {
+ EXPECT_EQ(expected_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());
+ ASSERT_EQ(0, actual_entry->ip_addresses_size());
} else {
- ASSERT_EQ(1, actual_entry.ip_addresses_size());
- EXPECT_EQ(expected_ip_address, actual_entry.ip_addresses(0));
+ ASSERT_EQ(1, actual_entry->ip_addresses_size());
+ EXPECT_EQ(expected_ip_address, actual_entry->ip_addresses(0));
}
- EXPECT_EQ(expected_referrer_url.spec(), actual_entry.referrer_url());
+ EXPECT_EQ(expected_referrer_url.spec(), actual_entry->referrer_url());
EXPECT_EQ(expected_referrer_main_frame_url.spec(),
- actual_entry.referrer_main_frame_url());
- EXPECT_EQ(expected_is_retargeting, actual_entry.is_retargeting());
+ actual_entry->referrer_main_frame_url());
+ EXPECT_EQ(expected_is_retargeting, actual_entry->is_retargeting());
}
- std::vector<ReferrerChainEntry> IdentifyReferrerChainForDownload(
- DownloadItem* download) {
- std::vector<ReferrerChainEntry> referrer_chain;
+ void IdentifyReferrerChainForDownload(
Nathan Parker 2017/01/10 01:25:13 Maybe add a comment that this populates referrer_c
Jialiu Lin 2017/01/10 02:15:12 Done.
+ DownloadItem* download,
+ SafeBrowsingNavigationObserverManager::ReferrerChain* referrer_chain) {
int download_tab_id =
SessionTabHelper::IdForTab(download->GetWebContents());
// IdentifyReferrerChain should return SUCCESS(1), SUCCESS_LANDING_PAGE(2),
@@ -259,15 +259,14 @@ class SBNavigationObserverBrowserTest : public InProcessBrowserTest {
EXPECT_LE(observer_manager_->IdentifyReferrerChainForDownload(
download->GetURL(), download_tab_id,
2, // kDownloadAttributionUserGestureLimit
- &referrer_chain),
+ referrer_chain),
SafeBrowsingNavigationObserverManager::SUCCESS_LANDING_REFERRER);
- return referrer_chain;
}
- std::vector<ReferrerChainEntry> IdentifyReferrerChainForPPAPIDownload(
+ void IdentifyReferrerChainForPPAPIDownload(
const GURL& initiating_frame_url,
- content::WebContents* web_contents) {
- std::vector<ReferrerChainEntry> referrer_chain;
+ content::WebContents* web_contents,
+ SafeBrowsingNavigationObserverManager::ReferrerChain* referrer_chain) {
int tab_id = SessionTabHelper::IdForTab(web_contents);
bool has_user_gesture = observer_manager_->HasUserGesture(web_contents);
observer_manager_->OnUserGestureConsumed(web_contents, base::Time::Now());
@@ -276,9 +275,8 @@ class SBNavigationObserverBrowserTest : public InProcessBrowserTest {
tab_id,
has_user_gesture,
2, // kDownloadAttributionUserGestureLimit)
- &referrer_chain),
+ referrer_chain),
SafeBrowsingNavigationObserverManager::SUCCESS_LANDING_REFERRER);
- return referrer_chain;
}
void VerifyHostToIpMap() {
@@ -346,7 +344,8 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, TypeInURLDownload) {
nav_map->at(download_url).at(0));
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(1U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
@@ -354,7 +353,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, TypeInURLDownload) {
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
}
// Click on a link and start download on the same page.
IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, DirectDownload) {
@@ -385,7 +384,8 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, DirectDownload) {
nav_map->at(download_url).at(0));
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(2U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
@@ -393,14 +393,14 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, DirectDownload) {
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(initial_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
}
// Click on a link with rel="noreferrer" attribute, and start download on the
@@ -434,7 +434,8 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
nav_map->at(download_url).at(0));
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
Nathan Parker 2017/01/10 01:25:13 (You could consider typedeffing these to "Referrer
Jialiu Lin 2017/01/10 02:15:12 Done.
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(2U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
@@ -442,14 +443,14 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(initial_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
}
// Click on a link with rel="noreferrer" attribute, and start download in a
@@ -497,7 +498,8 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
nav_map->at(download_url).at(1));
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(2U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
@@ -505,14 +507,14 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
true, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(initial_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
}
// Click on a link which navigates to a page then redirects to a download using
@@ -528,7 +530,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
ASSERT_TRUE(nav_map);
// Since unlike server redirects client redirects commit and then generate a
// second navigation, our observer records two NavigationEvents for this test.
- ASSERT_EQ(std::size_t(3), nav_map->size());
+ ASSERT_EQ(3U, nav_map->size());
ASSERT_EQ(1U, nav_map->at(redirect_url).size());
ASSERT_EQ(1U, nav_map->at(download_url).size());
ASSERT_EQ(1U, nav_map->at(initial_url).size());
@@ -558,29 +560,30 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
nav_map->at(download_url).at(0));
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
- ASSERT_EQ(std::size_t(3), referrer_chain.size());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
+ ASSERT_EQ(3U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
test_server_ip, // ip_address
redirect_url, // referrer_url
redirect_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(redirect_url, // url
ReferrerChainEntry::CLIENT_REDIRECT, // type
test_server_ip, // ip_address
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
VerifyReferrerChainEntry(initial_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[2]);
+ referrer_chain[2].get());
}
// Click on a link which navigates to a page then redirects to a download using
@@ -594,7 +597,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
std::string test_server_ip(embedded_test_server()->host_port_pair().host());
auto nav_map = navigation_map();
ASSERT_TRUE(nav_map);
- ASSERT_EQ(std::size_t(3), nav_map->size());
+ ASSERT_EQ(3U, nav_map->size());
ASSERT_EQ(2U, nav_map->at(redirect_url).size());
ASSERT_EQ(1U, nav_map->at(download_url).size());
ASSERT_EQ(1U, nav_map->at(initial_url).size());
@@ -635,29 +638,30 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
nav_map->at(download_url).at(0));
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
- ASSERT_EQ(std::size_t(3), referrer_chain.size());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
+ ASSERT_EQ(3U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
test_server_ip, // ip_address
redirect_url, // referrer_url
redirect_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(redirect_url, // url
ReferrerChainEntry::CLIENT_REDIRECT, // type
test_server_ip, // ip_address
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
true, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
VerifyReferrerChainEntry(initial_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[2]);
+ referrer_chain[2].get());
}
// Click on a link which redirects twice before reaching download using
@@ -674,7 +678,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
std::string test_server_ip(embedded_test_server()->host_port_pair().host());
auto nav_map = navigation_map();
ASSERT_TRUE(nav_map);
- ASSERT_EQ(std::size_t(4), nav_map->size());
+ ASSERT_EQ(4U, nav_map->size());
ASSERT_EQ(1U, nav_map->at(first_redirect_url).size());
ASSERT_EQ(1U, nav_map->at(second_redirect_url).size());
ASSERT_EQ(1U, nav_map->at(download_url).size());
@@ -713,36 +717,37 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
nav_map->at(download_url).at(0));
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
- ASSERT_EQ(std::size_t(4), referrer_chain.size());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
+ ASSERT_EQ(4U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // 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
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(second_redirect_url, // 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
- referrer_chain[1]);
+ referrer_chain[1].get());
VerifyReferrerChainEntry(first_redirect_url, // url
ReferrerChainEntry::CLIENT_REDIRECT, // type
test_server_ip, // ip_address
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[2]);
+ referrer_chain[2].get());
VerifyReferrerChainEntry(initial_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[3]);
+ referrer_chain[3].get());
}
// Click on a link which redirects to download using window.location.
@@ -775,7 +780,8 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
false, // has_server_redirect
nav_map->at(download_url).at(0));
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(2U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
@@ -783,14 +789,14 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(initial_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
}
// Click on a link which redirects twice until it reaches download using a
@@ -804,7 +810,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, MixRedirects) {
std::string test_server_ip(embedded_test_server()->host_port_pair().host());
auto nav_map = navigation_map();
ASSERT_TRUE(nav_map);
- ASSERT_EQ(std::size_t(3), nav_map->size());
+ ASSERT_EQ(3U, nav_map->size());
ASSERT_EQ(1U, nav_map->at(redirect_url).size());
ASSERT_EQ(1U, nav_map->at(download_url).size());
ASSERT_EQ(1U, nav_map->at(initial_url).size());
@@ -834,29 +840,30 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, MixRedirects) {
nav_map->at(download_url).at(0));
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
- ASSERT_EQ(std::size_t(3), referrer_chain.size());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
+ ASSERT_EQ(3U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
test_server_ip, // ip_address
redirect_url, // referrer_url
redirect_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(redirect_url, // url
ReferrerChainEntry::CLIENT_REDIRECT, // type
test_server_ip, // ip_address
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
VerifyReferrerChainEntry(initial_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[2]);
+ referrer_chain[2].get());
}
// Use javascript to open download in a new tab.
@@ -868,7 +875,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, NewTabDownload) {
std::string test_server_ip(embedded_test_server()->host_port_pair().host());
auto nav_map = navigation_map();
ASSERT_TRUE(nav_map);
- ASSERT_EQ(std::size_t(3), nav_map->size());
+ ASSERT_EQ(3U, nav_map->size());
ASSERT_EQ(2U, nav_map->at(blank_url).size());
ASSERT_EQ(1U, nav_map->at(download_url).size());
ASSERT_EQ(1U, nav_map->at(initial_url).size());
@@ -913,29 +920,30 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, NewTabDownload) {
nav_map->at(download_url).at(0).target_tab_id);
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
- ASSERT_EQ(std::size_t(3), referrer_chain.size());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
+ ASSERT_EQ(3U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
test_server_ip, // ip_address
blank_url, // referrer_url
blank_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(blank_url, // url
ReferrerChainEntry::CLIENT_REDIRECT, // type
"", // ip_address
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
true, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
VerifyReferrerChainEntry(initial_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[2]);
+ referrer_chain[2].get());
}
// Use javascript to open download in a new tab and download has a data url.
@@ -948,7 +956,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
std::string test_server_ip(embedded_test_server()->host_port_pair().host());
auto nav_map = navigation_map();
ASSERT_TRUE(nav_map);
- ASSERT_EQ(std::size_t(3), nav_map->size());
+ ASSERT_EQ(3U, nav_map->size());
ASSERT_EQ(2U, nav_map->at(blank_url).size());
ASSERT_EQ(1U, nav_map->at(download_url).size());
ASSERT_EQ(1U, nav_map->at(initial_url).size());
@@ -994,29 +1002,30 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
nav_map->at(download_url).at(0).target_tab_id);
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
- ASSERT_EQ(std::size_t(3), referrer_chain.size());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
+ ASSERT_EQ(3U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
"", // ip_address
blank_url, // referrer_url
blank_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(blank_url, // url
ReferrerChainEntry::CLIENT_REDIRECT, // type
"", // ip_address
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
true, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
VerifyReferrerChainEntry(initial_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[2]);
+ referrer_chain[2].get());
}
// TODO(jialiul): Need to figure out why this test is failing on Windows and
@@ -1055,7 +1064,8 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
nav_map->at(download_url).at(0));
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(2U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
@@ -1063,14 +1073,14 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(initial_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
}
// Click a link in a subframe and start download.
@@ -1090,7 +1100,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
std::string test_server_ip(embedded_test_server()->host_port_pair().host());
auto nav_map = navigation_map();
ASSERT_TRUE(nav_map);
- ASSERT_EQ(std::size_t(5), nav_map->size());
+ ASSERT_EQ(5U, nav_map->size());
ASSERT_EQ(1U, nav_map->at(multi_frame_test_url).size());
ASSERT_EQ(1U, nav_map->at(iframe_url).size());
ASSERT_EQ(1U, nav_map->at(iframe_retargeting_url).size());
@@ -1138,7 +1148,8 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
nav_map->at(download_url).at(0));
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(4U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
@@ -1146,28 +1157,28 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
iframe_url, // referrer_url
multi_frame_test_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(iframe_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
GURL(), // referrer_url
multi_frame_test_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
VerifyReferrerChainEntry(multi_frame_test_url, // url
ReferrerChainEntry::CLIENT_REDIRECT, // type
test_server_ip, // ip_address
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[2]);
+ referrer_chain[2].get());
VerifyReferrerChainEntry(initial_url, // url
ReferrerChainEntry::LANDING_REFERRER, // type
test_server_ip, // ip_address
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[3]);
+ referrer_chain[3].get());
}
// Click a link in a subframe and open download in a new tab.
@@ -1253,7 +1264,8 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
nav_map->at(download_url).at(0));
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
EXPECT_EQ(5U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
@@ -1261,35 +1273,35 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
blank_url, // referrer_url
blank_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(blank_url, // url
ReferrerChainEntry::CLIENT_REDIRECT, // type
"", // ip_address
iframe_retargeting_url, // referrer_url
multi_frame_test_url, // referrer_main_frame_url
true, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
VerifyReferrerChainEntry(iframe_retargeting_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
GURL(), // referrer_url
multi_frame_test_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[2]);
+ referrer_chain[2].get());
VerifyReferrerChainEntry(multi_frame_test_url, // url
ReferrerChainEntry::CLIENT_REDIRECT, // type
test_server_ip, // ip_address
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[3]);
+ referrer_chain[3].get());
VerifyReferrerChainEntry(initial_url, // url
ReferrerChainEntry::LANDING_REFERRER, // type
test_server_ip, // ip_address
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[4]);
+ referrer_chain[4].get());
}
// Click a link which redirects to the landing page, and then click on the
@@ -1304,7 +1316,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, CompleteReferrerChain) {
std::string test_server_ip(embedded_test_server()->host_port_pair().host());
auto nav_map = navigation_map();
ASSERT_TRUE(nav_map);
- ASSERT_EQ(std::size_t(4), nav_map->size());
+ ASSERT_EQ(4U, nav_map->size());
ASSERT_EQ(1U, nav_map->at(redirect_url).size());
ASSERT_EQ(1U, nav_map->at(landing_url).size());
ASSERT_EQ(1U, nav_map->at(download_url).size());
@@ -1343,29 +1355,30 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, CompleteReferrerChain) {
nav_map->at(download_url).at(0));
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
- EXPECT_EQ(std::size_t(4), referrer_chain.size());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
+ EXPECT_EQ(4U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
test_server_ip, // ip_address
landing_url, // referrer_url
landing_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(landing_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
redirect_url, // referrer_url
redirect_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
VerifyReferrerChainEntry(redirect_url, // url
ReferrerChainEntry::CLIENT_REDIRECT, // type
test_server_ip, // ip_address
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[2]);
+ referrer_chain[2].get());
VerifyReferrerChainEntry(
initial_url, // url
ReferrerChainEntry::LANDING_REFERRER, // type
@@ -1373,7 +1386,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, CompleteReferrerChain) {
GURL(), // referrer_url is empty since this beyonds 2 clicks.
GURL(), // referrer_main_frame_url is empty for the same reason.
false, // is_retargeting
- referrer_chain[3]);
+ referrer_chain[3].get());
}
// Click three links before reaching download.
@@ -1394,7 +1407,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
std::string test_server_ip(embedded_test_server()->host_port_pair().host());
auto nav_map = navigation_map();
ASSERT_TRUE(nav_map);
- ASSERT_EQ(std::size_t(5), nav_map->size());
+ ASSERT_EQ(5U, nav_map->size());
ASSERT_EQ(1U, nav_map->at(initial_url).size());
ASSERT_EQ(1U, nav_map->at(page_before_landing_referrer_url).size());
ASSERT_EQ(1U, nav_map->at(landing_referrer_url).size());
@@ -1442,22 +1455,23 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
nav_map->at(download_url).at(0));
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
- EXPECT_EQ(std::size_t(3), referrer_chain.size());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
+ EXPECT_EQ(3U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
test_server_ip, // ip_address
landing_url, // referrer_url
landing_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(landing_url, // 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
- referrer_chain[1]);
+ referrer_chain[1].get());
VerifyReferrerChainEntry(
landing_referrer_url, // url
ReferrerChainEntry::LANDING_REFERRER, // type
@@ -1465,7 +1479,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
GURL(), // referrer_url is empty since this beyonds 2 clicks.
GURL(), // referrer_main_frame_url is empty for the same reason.
false, // is_retargeting
- referrer_chain[2]);
+ referrer_chain[2].get());
// page_before_landing_referrer_url is not in referrer chain.
}
@@ -1482,7 +1496,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
SimulateUserGesture();
auto nav_map = navigation_map();
ASSERT_TRUE(nav_map);
- ASSERT_EQ(std::size_t(3), nav_map->size());
+ ASSERT_EQ(3U, nav_map->size());
ASSERT_EQ(1U, nav_map->at(redirect_url).size());
ASSERT_EQ(1U, nav_map->at(landing_url).size());
ASSERT_EQ(1U, nav_map->at(initial_url).size());
@@ -1512,24 +1526,26 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
nav_map->at(landing_url).at(0));
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForPPAPIDownload(
- landing_url, browser()->tab_strip_model()->GetActiveWebContents());
-
- EXPECT_EQ(std::size_t(3), referrer_chain.size());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForPPAPIDownload(
+ landing_url,
+ browser()->tab_strip_model()->GetActiveWebContents(),
+ &referrer_chain);
+ EXPECT_EQ(3U, referrer_chain.size());
VerifyReferrerChainEntry(landing_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
redirect_url, // referrer_url
redirect_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(redirect_url, // url
ReferrerChainEntry::CLIENT_REDIRECT, // type
test_server_ip, // ip_address
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
VerifyReferrerChainEntry(
initial_url, // url
ReferrerChainEntry::LANDING_REFERRER, // type
@@ -1537,7 +1553,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
GURL(), // referrer_url is empty since this beyonds 2 clicks.
GURL(), // referrer_main_frame_url is empty for the same reason.
false, // is_retargeting
- referrer_chain[2]);
+ referrer_chain[2].get());
}
// Click a link which redirects to a page that triggers PPAPI download without
@@ -1552,7 +1568,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
auto nav_map = navigation_map();
ASSERT_TRUE(nav_map);
- ASSERT_EQ(std::size_t(3), nav_map->size());
+ ASSERT_EQ(3U, nav_map->size());
ASSERT_EQ(1U, nav_map->at(redirect_url).size());
ASSERT_EQ(1U, nav_map->at(hosting_url).size());
ASSERT_EQ(1U, nav_map->at(landing_url).size());
@@ -1582,31 +1598,33 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
nav_map->at(hosting_url).at(0));
VerifyHostToIpMap();
- auto referrer_chain = IdentifyReferrerChainForPPAPIDownload(
- hosting_url, browser()->tab_strip_model()->GetActiveWebContents());
-
- EXPECT_EQ(std::size_t(3), referrer_chain.size());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForPPAPIDownload(
+ hosting_url,
+ browser()->tab_strip_model()->GetActiveWebContents(),
+ &referrer_chain);
+ EXPECT_EQ(3U, referrer_chain.size());
VerifyReferrerChainEntry(hosting_url, // url
ReferrerChainEntry::CLIENT_REDIRECT, // type
test_server_ip, // ip_address
redirect_url, // referrer_url
redirect_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(redirect_url, // url
ReferrerChainEntry::CLIENT_REDIRECT, // type
test_server_ip, // ip_address
landing_url, // referrer_url
landing_url, // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
VerifyReferrerChainEntry(landing_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
GURL(), // no more referrer before landing_url
GURL(),
false, // is_retargeting
- referrer_chain[2]);
+ referrer_chain[2].get());
}
// Server-side redirect.
@@ -1639,7 +1657,8 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, ServerRedirect) {
true, // has_server_redirect
nav_map->at(download_url).at(0));
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(1U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
@@ -1647,7 +1666,7 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, ServerRedirect) {
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
}
// Retargeting immediately followed by server-side redirect.
@@ -1690,7 +1709,8 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
true, // has_server_redirect
nav_map->at(download_url).at(0));
- auto referrer_chain = IdentifyReferrerChainForDownload(GetDownload());
+ SafeBrowsingNavigationObserverManager::ReferrerChain referrer_chain;
+ IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
ASSERT_EQ(2U, referrer_chain.size());
VerifyReferrerChainEntry(download_url, // url
ReferrerChainEntry::DOWNLOAD_URL, // type
@@ -1698,14 +1718,14 @@ IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
initial_url, // referrer_url
initial_url, // referrer_main_frame_url
true, // is_retargeting
- referrer_chain[0]);
+ referrer_chain[0].get());
VerifyReferrerChainEntry(initial_url, // url
ReferrerChainEntry::LANDING_PAGE, // type
test_server_ip, // ip_address
GURL(), // referrer_url
GURL(), // referrer_main_frame_url
false, // is_retargeting
- referrer_chain[1]);
+ referrer_chain[1].get());
}
// host_to_ip_map_ size should increase by one after a new navigation.

Powered by Google App Engine
This is Rietveld 408576698