Index: components/subresource_filter/content/browser/content_subresource_filter_driver_factory_unittest.cc |
diff --git a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory_unittest.cc b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory_unittest.cc |
index 668e07068403c8b130baef5eef1740d9bd3049a5..4f35e7a1022df396836b5c9b79abfd3e8648e53d 100644 |
--- a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory_unittest.cc |
+++ b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory_unittest.cc |
@@ -36,16 +36,17 @@ namespace { |
const char kExampleUrlWithParams[] = "https://example.com/soceng?q=engsoc"; |
const char kExampleUrl[] = "https://example.com"; |
const char kExampleLoginUrl[] = "https://example.com/login"; |
-const char kMatchesPatternHistogramName[] = |
- "SubresourceFilter.PageLoad.RedirectChainMatchPattern"; |
-const char kNavigationChainSize[] = |
- "SubresourceFilter.PageLoad.RedirectChainLength"; |
const char kUrlA[] = "https://example_a.com"; |
const char kUrlB[] = "https://example_b.com"; |
const char kUrlC[] = "https://example_c.com"; |
const char kUrlD[] = "https://example_d.com"; |
const char kSubframeName[] = "Child"; |
+const char kMatchesPatternHistogramName[] = |
+ "SubresourceFilter.PageLoad.RedirectChainMatchPattern."; |
+const char kNavigationChainSize[] = |
+ "SubresourceFilter.PageLoad.RedirectChainLength."; |
+ |
// Human readable representation of expected redirect chain match patterns. |
// The explanations for the buckets given for the following redirect chain: |
// A->B->C->D, where A is initial URL and D is a final URL. |
@@ -66,9 +67,11 @@ enum RedirectChainMatchPattern { |
std::string GetSuffixForList(const ActivationList& type) { |
switch (type) { |
case ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL: |
- return ".SocialEngineeringAdsInterstitial"; |
+ return "SocialEngineeringAdsInterstitial"; |
case ActivationList::PHISHING_INTERSTITIAL: |
- return ".PhishingInterstital"; |
+ return "PhishingInterstital"; |
+ case ActivationList::SUBRESOURCE_FILTER: |
+ return "SubresourceFilterOnly"; |
case ActivationList::NONE: |
return std::string(); |
} |
@@ -294,17 +297,22 @@ class ContentSubresourceFilterDriverFactoryTest |
GetListForThreatTypeAndMetadata(threat_type, threat_type_metadata); |
const std::string suffix(GetSuffixForList(activation_list)); |
+ size_t all_pattern = |
+ tester.GetTotalCountsForPrefix(kMatchesPatternHistogramName).size(); |
+ size_t all_chain_size = |
+ tester.GetTotalCountsForPrefix(kNavigationChainSize).size(); |
if (expected_pattern != EMPTY) { |
EXPECT_THAT(tester.GetAllSamples(kMatchesPatternHistogramName + suffix), |
::testing::ElementsAre(base::Bucket(expected_pattern, 1))); |
EXPECT_THAT( |
tester.GetAllSamples(kNavigationChainSize + suffix), |
::testing::ElementsAre(base::Bucket(navigation_chain.size(), 1))); |
+ // Check that we recorded only what is needed. |
+ EXPECT_EQ(1u, all_pattern); |
+ EXPECT_EQ(1u, all_chain_size); |
} else { |
- EXPECT_THAT(tester.GetAllSamples(kMatchesPatternHistogramName + suffix), |
- ::testing::IsEmpty()); |
- EXPECT_THAT(tester.GetAllSamples(kNavigationChainSize + suffix), |
- ::testing::IsEmpty()); |
+ EXPECT_EQ(0u, all_pattern); |
+ EXPECT_EQ(0u, all_chain_size); |
} |
} |
@@ -547,7 +555,6 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, RedirectPatternTest) { |
{GURL(kUrlA), GURL(kUrlB)}, |
F1M0L1, |
ActivationDecision::ACTIVATED}, |
- |
{{false, false, false}, |
{GURL(kUrlA), GURL(kUrlB), GURL(kUrlC)}, |
EMPTY, |
@@ -598,6 +605,14 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, RedirectPatternTest) { |
NavigateAndExpectActivation( |
{false}, {GURL("https://dummy.com")}, EMPTY, |
ActivationDecision::ACTIVATION_LIST_NOT_MATCHED); |
+#if defined(GOOGLE_CHROME_BUILD) |
+ NavigateAndExpectActivation( |
+ test_data.blacklisted_urls, test_data.navigation_chain, |
+ safe_browsing::SB_THREAT_TYPE_SUBRESOURCE_FILTER, |
+ safe_browsing::ThreatPatternType::NONE, content::Referrer(), |
+ ui::PAGE_TRANSITION_LINK, EMPTY, test_data.hit_expected_pattern, |
+ ActivationDecision::ACTIVATION_LIST_NOT_MATCHED); |
+#endif |
} |
} |