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 592d21f5d4c49963d34c9d1c7816778e3d8c9630..cb08eefd8395921510033df511472b131fe93bee 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 |
@@ -89,69 +89,65 @@ std::string GetSuffixForList(const ActivationList& type) { |
struct ActivationListTestData { |
ActivationDecision expected_activation_decision; |
- const char* const activation_list; |
+ ActivationList activation_list; |
safe_browsing::SBThreatType threat_type; |
safe_browsing::ThreatPatternType threat_type_metadata; |
}; |
const ActivationListTestData kActivationListTestData[] = { |
- {ActivationDecision::ACTIVATION_LIST_NOT_MATCHED, "", |
+ {ActivationDecision::ACTIVATION_LIST_NOT_MATCHED, ActivationList::NONE, |
safe_browsing::SB_THREAT_TYPE_URL_PHISHING, |
safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
{ActivationDecision::ACTIVATION_LIST_NOT_MATCHED, |
- subresource_filter::kActivationListSocialEngineeringAdsInterstitial, |
+ ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL, |
safe_browsing::SB_THREAT_TYPE_URL_PHISHING, |
safe_browsing::ThreatPatternType::NONE}, |
{ActivationDecision::ACTIVATION_LIST_NOT_MATCHED, |
- subresource_filter::kActivationListSocialEngineeringAdsInterstitial, |
+ ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL, |
safe_browsing::SB_THREAT_TYPE_URL_PHISHING, |
safe_browsing::ThreatPatternType::MALWARE_LANDING}, |
{ActivationDecision::ACTIVATION_LIST_NOT_MATCHED, |
- subresource_filter::kActivationListSocialEngineeringAdsInterstitial, |
+ ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL, |
safe_browsing::SB_THREAT_TYPE_URL_PHISHING, |
safe_browsing::ThreatPatternType::MALWARE_DISTRIBUTION}, |
{ActivationDecision::ACTIVATION_LIST_NOT_MATCHED, |
- subresource_filter::kActivationListPhishingInterstitial, |
+ ActivationList::PHISHING_INTERSTITIAL, |
safe_browsing::SB_THREAT_TYPE_API_ABUSE, |
safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
{ActivationDecision::ACTIVATION_LIST_NOT_MATCHED, |
- subresource_filter::kActivationListPhishingInterstitial, |
+ ActivationList::PHISHING_INTERSTITIAL, |
safe_browsing::SB_THREAT_TYPE_BLACKLISTED_RESOURCE, |
safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
{ActivationDecision::ACTIVATION_LIST_NOT_MATCHED, |
- subresource_filter::kActivationListPhishingInterstitial, |
+ ActivationList::PHISHING_INTERSTITIAL, |
safe_browsing::SB_THREAT_TYPE_CLIENT_SIDE_MALWARE_URL, |
safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
{ActivationDecision::ACTIVATION_LIST_NOT_MATCHED, |
- subresource_filter::kActivationListPhishingInterstitial, |
+ ActivationList::PHISHING_INTERSTITIAL, |
safe_browsing::SB_THREAT_TYPE_BINARY_MALWARE_URL, |
safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
{ActivationDecision::ACTIVATION_LIST_NOT_MATCHED, |
- subresource_filter::kActivationListPhishingInterstitial, |
+ ActivationList::PHISHING_INTERSTITIAL, |
safe_browsing::SB_THREAT_TYPE_URL_UNWANTED, |
safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
{ActivationDecision::ACTIVATION_LIST_NOT_MATCHED, |
- subresource_filter::kActivationListPhishingInterstitial, |
+ ActivationList::PHISHING_INTERSTITIAL, |
safe_browsing::SB_THREAT_TYPE_URL_MALWARE, |
safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
{ActivationDecision::ACTIVATION_LIST_NOT_MATCHED, |
- subresource_filter::kActivationListPhishingInterstitial, |
+ ActivationList::PHISHING_INTERSTITIAL, |
safe_browsing::SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL, |
safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
{ActivationDecision::ACTIVATION_LIST_NOT_MATCHED, |
- subresource_filter::kActivationListPhishingInterstitial, |
- safe_browsing::SB_THREAT_TYPE_SAFE, |
+ ActivationList::PHISHING_INTERSTITIAL, safe_browsing::SB_THREAT_TYPE_SAFE, |
safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
- {ActivationDecision::ACTIVATED, |
- subresource_filter::kActivationListPhishingInterstitial, |
+ {ActivationDecision::ACTIVATED, ActivationList::PHISHING_INTERSTITIAL, |
safe_browsing::SB_THREAT_TYPE_URL_PHISHING, |
safe_browsing::ThreatPatternType::NONE}, |
- {ActivationDecision::ACTIVATED, |
- subresource_filter::kActivationListSocialEngineeringAdsInterstitial, |
+ {ActivationDecision::ACTIVATED, ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL, |
safe_browsing::SB_THREAT_TYPE_URL_PHISHING, |
safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
- {ActivationDecision::ACTIVATED, |
- subresource_filter::kActivationListPhishingInterstitial, |
+ {ActivationDecision::ACTIVATED, ActivationList::PHISHING_INTERSTITIAL, |
safe_browsing::SB_THREAT_TYPE_URL_PHISHING, |
safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
}; |
@@ -159,31 +155,31 @@ const ActivationListTestData kActivationListTestData[] = { |
struct ActivationScopeTestData { |
ActivationDecision expected_activation_decision; |
bool url_matches_activation_list; |
- const char* const activation_scope; |
+ ActivationScope activation_scope; |
}; |
const ActivationScopeTestData kActivationScopeTestData[] = { |
{ActivationDecision::ACTIVATED, false /* url_matches_activation_list */, |
- kActivationScopeAllSites}, |
+ ActivationScope::ALL_SITES}, |
{ActivationDecision::ACTIVATED, true /* url_matches_activation_list */, |
- kActivationScopeAllSites}, |
+ ActivationScope::ALL_SITES}, |
{ActivationDecision::ACTIVATION_DISABLED, |
- true /* url_matches_activation_list */, kActivationScopeNoSites}, |
+ true /* url_matches_activation_list */, ActivationScope::NO_SITES}, |
{ActivationDecision::ACTIVATED, true /* url_matches_activation_list */, |
- kActivationScopeActivationList}, |
+ ActivationScope::ACTIVATION_LIST}, |
{ActivationDecision::ACTIVATION_LIST_NOT_MATCHED, |
- false /* url_matches_activation_list */, kActivationScopeActivationList}, |
+ false /* url_matches_activation_list */, ActivationScope::ACTIVATION_LIST}, |
}; |
struct ActivationLevelTestData { |
ActivationDecision expected_activation_decision; |
- const char* const activation_level; |
+ ActivationLevel activation_level; |
}; |
const ActivationLevelTestData kActivationLevelTestData[] = { |
- {ActivationDecision::ACTIVATED, kActivationLevelDryRun}, |
- {ActivationDecision::ACTIVATED, kActivationLevelEnabled}, |
- {ActivationDecision::ACTIVATION_DISABLED, kActivationLevelDisabled}, |
+ {ActivationDecision::ACTIVATED, ActivationLevel::DRYRUN}, |
+ {ActivationDecision::ACTIVATED, ActivationLevel::ENABLED}, |
+ {ActivationDecision::ACTIVATION_DISABLED, ActivationLevel::DISABLED}, |
}; |
class MockSubresourceFilterClient : public SubresourceFilterClient { |
@@ -243,6 +239,7 @@ class ContentSubresourceFilterDriverFactoryTest |
client_ = new MockSubresourceFilterClient(ruleset_dealer_.get()); |
ContentSubresourceFilterDriverFactory::CreateForWebContents( |
RenderViewHostTestHarness::web_contents(), base::WrapUnique(client())); |
+ ResetConfigurationToEnableFilteringOnSocialEngineeringSites(); |
// Add a subframe. |
content::RenderFrameHostTester* rfh_tester = |
@@ -259,6 +256,21 @@ class ContentSubresourceFilterDriverFactoryTest |
RenderViewHostTestHarness::TearDown(); |
} |
+ void ResetConfiguration(Configuration config) { |
+ scoped_configuration_.ResetConfiguration(std::move(config)); |
+ } |
+ |
+ void ResetConfigurationToEnableFilteringOnAllSites() { |
+ ResetConfiguration( |
+ Configuration(ActivationLevel::ENABLED, ActivationScope::ALL_SITES)); |
+ } |
+ |
+ void ResetConfigurationToEnableFilteringOnSocialEngineeringSites() { |
+ ResetConfiguration(Configuration( |
+ ActivationLevel::ENABLED, ActivationScope::ACTIVATION_LIST, |
+ ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL)); |
+ } |
+ |
ContentSubresourceFilterDriverFactory* factory() { |
return ContentSubresourceFilterDriverFactory::FromWebContents( |
RenderViewHostTestHarness::web_contents()); |
@@ -477,6 +489,7 @@ class ContentSubresourceFilterDriverFactoryTest |
return rate == 1; |
} |
+ testing::ScopedSubresourceFilterConfigurator scoped_configuration_; |
testing::TestRulesetCreator test_ruleset_creator_; |
testing::TestRulesetPair test_ruleset_pair_; |
@@ -524,14 +537,13 @@ class ContentSubresourceFilterDriverFactoryActivationLevelTest |
}; |
TEST_F(ContentSubresourceFilterDriverFactoryTest, |
- ActivateForFrameHostDisabledFeature) { |
- // Activation scope is set to NONE => no activation should happen even if URL |
- // which is visited was a SB hit. |
- base::FieldTrialList field_trial_list(nullptr); |
- testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
- base::FeatureList::OVERRIDE_DISABLE_FEATURE, kActivationLevelEnabled, |
- kActivationScopeAllSites, |
- kActivationListSocialEngineeringAdsInterstitial); |
+ NoActivationWhenActivationLevelIsDisabled) { |
+ Configuration config(ActivationLevel::DISABLED, |
+ ActivationScope::ACTIVATION_LIST, |
+ ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL); |
+ config.activation_level = ActivationLevel::DISABLED; |
+ ResetConfiguration(std::move(config)); |
+ |
const GURL url(kExampleUrlWithParams); |
NavigateAndExpectActivation({true}, {url}, NO_REDIRECTS_HIT, |
ActivationDecision::ACTIVATION_DISABLED); |
@@ -541,11 +553,6 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, |
} |
TEST_F(ContentSubresourceFilterDriverFactoryTest, NoActivationWhenNoMatch) { |
- base::FieldTrialList field_trial_list(nullptr); |
- testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
- base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
- kActivationScopeActivationList, |
- kActivationListSocialEngineeringAdsInterstitial); |
NavigateAndExpectActivation({false}, {GURL(kExampleUrl)}, EMPTY, |
ActivationDecision::ACTIVATION_LIST_NOT_MATCHED); |
} |
@@ -554,42 +561,31 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, |
SpecialCaseNavigationAllSitesEnabled) { |
// Check that when the experiment is enabled for all site, the activation |
// signal is always sent. |
- base::FieldTrialList field_trial_list(nullptr); |
- testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
- base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
- kActivationScopeAllSites); |
+ ResetConfigurationToEnableFilteringOnAllSites(); |
EmulateInPageNavigation({false}, EMPTY, ActivationDecision::ACTIVATED); |
} |
TEST_F(ContentSubresourceFilterDriverFactoryTest, |
SpecialCaseNavigationActivationListEnabled) { |
- base::FieldTrialList field_trial_list(nullptr); |
- testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
- base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
- kActivationScopeActivationList, |
- kActivationListSocialEngineeringAdsInterstitial); |
EmulateInPageNavigation({true}, NO_REDIRECTS_HIT, |
ActivationDecision::ACTIVATED); |
} |
TEST_F(ContentSubresourceFilterDriverFactoryTest, |
SpecialCaseNavigationActivationListEnabledWithPerformanceMeasurement) { |
- base::FieldTrialList field_trial_list(nullptr); |
- testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
- base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
- kActivationScopeActivationList, |
- kActivationListSocialEngineeringAdsInterstitial, |
- "1" /* performance_measurement_rate */); |
+ Configuration config(ActivationLevel::ENABLED, |
+ ActivationScope::ACTIVATION_LIST, |
+ ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL); |
+ config.performance_measurement_rate = 1.0; |
+ ResetConfiguration(std::move(config)); |
+ |
EmulateInPageNavigation({true}, NO_REDIRECTS_HIT, |
ActivationDecision::ACTIVATED); |
} |
TEST_F(ContentSubresourceFilterDriverFactoryTest, FailedNavigation) { |
- base::FieldTrialList field_trial_list(nullptr); |
- testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
- base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
- kActivationScopeAllSites); |
const GURL url(kExampleUrl); |
+ ResetConfigurationToEnableFilteringOnAllSites(); |
NavigateAndExpectActivation({false}, {url}, EMPTY, |
ActivationDecision::ACTIVATED); |
EmulateFailedNavigationAndExpectNoActivation(url); |
@@ -598,11 +594,6 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, FailedNavigation) { |
// 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( |
- base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
- kActivationScopeActivationList, |
- kActivationListSocialEngineeringAdsInterstitial); |
struct RedirectRedirectChainMatchPatternTestData { |
std::vector<bool> blacklisted_urls; |
std::vector<GURL> navigation_chain; |
@@ -692,10 +683,7 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, RedirectPatternTest) { |
} |
TEST_F(ContentSubresourceFilterDriverFactoryTest, NotificationVisibility) { |
- base::FieldTrialList field_trial_list(nullptr); |
- testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
- base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
- kActivationScopeAllSites); |
+ ResetConfigurationToEnableFilteringOnAllSites(); |
NavigateAndExpectActivation({false}, {GURL(kExampleUrl)}, EMPTY, |
ActivationDecision::ACTIVATED); |
EXPECT_CALL(*client(), ToggleNotificationVisibility(true)).Times(1); |
@@ -705,12 +693,9 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, NotificationVisibility) { |
TEST_F(ContentSubresourceFilterDriverFactoryTest, |
SuppressNotificationVisibility) { |
- base::FieldTrialList field_trial_list(nullptr); |
- testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
- base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
- kActivationScopeAllSites, "" /* activation_lists */, |
- "" /* performance_measurement_rate */, |
- "true" /* suppress_notifications */); |
+ Configuration config(ActivationLevel::ENABLED, ActivationScope::ALL_SITES); |
+ config.should_suppress_notifications = true; |
+ ResetConfiguration(std::move(config)); |
NavigateAndExpectActivation({false}, {GURL(kExampleUrl)}, EMPTY, |
ActivationDecision::ACTIVATED); |
EXPECT_CALL(*client(), ToggleNotificationVisibility(::testing::_)).Times(0); |
@@ -721,6 +706,8 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, |
TEST_F(ContentSubresourceFilterDriverFactoryTest, |
InactiveMainFrame_SubframeNotFiltered) { |
GURL url(kExampleUrl); |
+ Configuration config(ActivationLevel::DISABLED, ActivationScope::ALL_SITES); |
+ ResetConfiguration(std::move(config)); |
NavigateAndExpectActivation({false}, {url}, EMPTY, |
ActivationDecision::ACTIVATION_DISABLED); |
NavigateSubframeAndExpectCheckResult(url, false /* expect_cancelled */); |
@@ -746,12 +733,9 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, WhitelistSiteOnReload) { |
<< test_case.referrer.url << "\"" |
<< " transition = \"" << test_case.transition << "\""); |
- base::FieldTrialList field_trial_list(nullptr); |
- testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
- base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
- kActivationScopeAllSites, "" /* activation_lists */, |
- "" /* performance_measurement_rate */, "" /* suppress_notifications */, |
- "true" /* whitelist_site_on_reload */); |
+ Configuration config(ActivationLevel::ENABLED, ActivationScope::ALL_SITES); |
+ config.should_whitelist_site_on_reload = true; |
+ ResetConfiguration(std::move(config)); |
NavigateAndExpectActivation( |
{false}, {GURL(kExampleUrl)}, |
@@ -769,11 +753,9 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, WhitelistSiteOnReload) { |
TEST_P(ContentSubresourceFilterDriverFactoryActivationLevelTest, |
ActivateForFrameState) { |
const ActivationLevelTestData& test_data = GetParam(); |
- base::FieldTrialList field_trial_list(nullptr); |
- testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
- base::FeatureList::OVERRIDE_ENABLE_FEATURE, test_data.activation_level, |
- kActivationScopeActivationList, |
- kActivationListSocialEngineeringAdsInterstitial); |
+ ResetConfiguration(Configuration( |
+ test_data.activation_level, ActivationScope::ACTIVATION_LIST, |
+ ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL)); |
const GURL url(kExampleUrlWithParams); |
NavigateAndExpectActivation({true}, {url}, NO_REDIRECTS_HIT, |
@@ -792,10 +774,9 @@ TEST_P(ContentSubresourceFilterDriverFactoryThreatTypeTest, |
// Sets up the experiment in a way that the activation decision depends on the |
// list for which the Safe Browsing hit has happened. |
const ActivationListTestData& test_data = GetParam(); |
- base::FieldTrialList field_trial_list(nullptr); |
- testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
- base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
- kActivationScopeActivationList, test_data.activation_list); |
+ ResetConfiguration(Configuration(ActivationLevel::ENABLED, |
+ ActivationScope::ACTIVATION_LIST, |
+ test_data.activation_list)); |
const GURL test_url("https://example.com/nonsoceng?q=engsocnon"); |
std::vector<GURL> navigation_chain; |
@@ -814,11 +795,9 @@ TEST_P(ContentSubresourceFilterDriverFactoryThreatTypeTest, |
TEST_P(ContentSubresourceFilterDriverFactoryActivationScopeTest, |
ActivateForScopeType) { |
const ActivationScopeTestData& test_data = GetParam(); |
- base::FieldTrialList field_trial_list(nullptr); |
- testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
- base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
- test_data.activation_scope, |
- kActivationListSocialEngineeringAdsInterstitial); |
+ ResetConfiguration( |
+ Configuration(ActivationLevel::ENABLED, test_data.activation_scope, |
+ ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL)); |
const GURL test_url(kExampleUrlWithParams); |
@@ -844,11 +823,9 @@ TEST_P(ContentSubresourceFilterDriverFactoryActivationScopeTest, |
TEST_P(ContentSubresourceFilterDriverFactoryActivationScopeTest, |
ActivateForSupportedUrlScheme) { |
const ActivationScopeTestData& test_data = GetParam(); |
- base::FieldTrialList field_trial_list(nullptr); |
- testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
- base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
- test_data.activation_scope, |
- kActivationListSocialEngineeringAdsInterstitial); |
+ ResetConfiguration( |
+ Configuration(ActivationLevel::ENABLED, test_data.activation_scope, |
+ ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL)); |
// data URLs are also not supported, but not listed here, as it's not possible |
// for a page to redirect to them after https://crbug.com/594215 is fixed. |