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 2c1e34efaeb036f07e0c032b7322392cd6d26886..f02b9d69052df075b476390f98a369960a203b61 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 |
@@ -9,10 +9,12 @@ |
#include "base/metrics/field_trial.h" |
#include "base/test/histogram_tester.h" |
#include "components/safe_browsing_db/util.h" |
+#include "components/subresource_filter/content/browser/content_activation_list_utils.h" |
#include "components/subresource_filter/content/browser/subresource_filter_client.h" |
#include "components/subresource_filter/content/common/subresource_filter_messages.h" |
#include "components/subresource_filter/core/browser/subresource_filter_features.h" |
#include "components/subresource_filter/core/browser/subresource_filter_features_test_support.h" |
+#include "components/subresource_filter/core/common/activation_list.h" |
#include "content/public/browser/render_frame_host.h" |
#include "content/public/browser/web_contents.h" |
#include "content/public/test/mock_render_process_host.h" |
@@ -61,6 +63,18 @@ enum RedirectChainMatchPattern { |
NUM_HIT_PATTERNS, |
}; |
+std::string GetSuffixForList(const ActivationList& type) { |
+ switch (type) { |
+ case ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL: |
+ return ".SocialEngineeringAdsInterstitial"; |
+ case ActivationList::PHISHING_INTERSTITIAL: |
+ return ".PhishingInterstital"; |
+ case ActivationList::NONE: |
+ return std::string(); |
+ } |
+ return std::string(); |
+} |
+ |
struct ActivationListTestData { |
ActivationDecision expected_activation_decision; |
const char* const activation_list; |
@@ -124,6 +138,10 @@ const ActivationListTestData kActivationListTestData[] = { |
subresource_filter::kActivationListSocialEngineeringAdsInterstitial, |
safe_browsing::SB_THREAT_TYPE_URL_PHISHING, |
safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
+ {ActivationDecision::ACTIVATED, |
+ subresource_filter::kActivationListPhishingInterstitial, |
+ safe_browsing::SB_THREAT_TYPE_URL_PHISHING, |
+ safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
}; |
struct ActivationScopeTestData { |
@@ -268,18 +286,20 @@ class ContentSubresourceFilterDriverFactoryTest |
content::RenderFrameHostTester* rfh_tester = |
content::RenderFrameHostTester::For(main_rfh()); |
rfh_tester->AppendChild(kSubframeName); |
+ ActivationList activation_list = |
+ GetListForThreatTypeAndMetadata(threat_type, threat_type_metadata); |
+ const std::string suffix(GetSuffixForList(activation_list)); |
if (expected_pattern != EMPTY) { |
- EXPECT_THAT(tester.GetAllSamples(kMatchesPatternHistogramName), |
+ EXPECT_THAT(tester.GetAllSamples(kMatchesPatternHistogramName + suffix), |
::testing::ElementsAre(base::Bucket(expected_pattern, 1))); |
EXPECT_THAT( |
- tester.GetAllSamples(kNavigationChainSize), |
+ tester.GetAllSamples(kNavigationChainSize + suffix), |
::testing::ElementsAre(base::Bucket(navigation_chain.size(), 1))); |
- |
} else { |
- EXPECT_THAT(tester.GetAllSamples(kMatchesPatternHistogramName), |
+ EXPECT_THAT(tester.GetAllSamples(kMatchesPatternHistogramName + suffix), |
::testing::IsEmpty()); |
- EXPECT_THAT(tester.GetAllSamples(kNavigationChainSize), |
+ EXPECT_THAT(tester.GetAllSamples(kNavigationChainSize + suffix), |
::testing::IsEmpty()); |
} |
} |
@@ -426,10 +446,10 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, |
kActivationScopeAllSites, |
kActivationListSocialEngineeringAdsInterstitial); |
const GURL url(kExampleUrlWithParams); |
- NavigateAndExpectActivation({true}, {url}, EMPTY, |
+ NavigateAndExpectActivation({true}, {url}, NO_REDIRECTS_HIT, |
ActivationDecision::ACTIVATION_DISABLED); |
factory()->AddHostOfURLToWhitelistSet(url); |
- NavigateAndExpectActivation({true}, {url}, EMPTY, |
+ NavigateAndExpectActivation({true}, {url}, NO_REDIRECTS_HIT, |
ActivationDecision::ACTIVATION_DISABLED); |
} |
@@ -488,6 +508,8 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, FailedNavigation) { |
EmulateFailedNavigationAndExpectNoActivation(url); |
} |
+// TODO(melandory): refactor the test so it no longer require the current |
+// activation list to be matching. |
TEST_F(ContentSubresourceFilterDriverFactoryTest, RedirectPatternTest) { |
base::FieldTrialList field_trial_list(nullptr); |
testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
@@ -675,13 +697,14 @@ TEST_P(ContentSubresourceFilterDriverFactoryThreatTypeTest, |
const GURL test_url("https://example.com/nonsoceng?q=engsocnon"); |
std::vector<GURL> navigation_chain; |
- const bool expected_activation = |
- test_data.expected_activation_decision == ActivationDecision::ACTIVATED; |
+ ActivationList effective_list = GetListForThreatTypeAndMetadata( |
+ test_data.threat_type, test_data.threat_type_metadata); |
NavigateAndExpectActivation( |
{false, false, false, true}, |
{GURL(kUrlA), GURL(kUrlB), GURL(kUrlC), test_url}, test_data.threat_type, |
test_data.threat_type_metadata, content::Referrer(), |
- ui::PAGE_TRANSITION_LINK, expected_activation ? F0M0L1 : EMPTY, |
+ ui::PAGE_TRANSITION_LINK, |
+ effective_list != ActivationList::NONE ? F0M0L1 : EMPTY, |
test_data.expected_activation_decision); |
}; |