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 7312028ebefdbb43c1d335269164fede31921426..6029c7fee2accaad30d28e4ae8e29ec8748db08e 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 |
@@ -24,7 +24,59 @@ const char kExampleUrlWithParams[] = "https://example.com/soceng?q=engsoc"; |
const char kTestUrl[] = "https://test.com"; |
const char kExampleUrl[] = "https://example.com"; |
+struct ActivationListTestData { |
+ bool should_add; |
+ const char* const activation_list; |
+ safe_browsing::SBThreatType threat_type; |
+ safe_browsing::ThreatPatternType threat_type_metadata; |
+}; |
+ |
+const ActivationListTestData kActivationListTestData[] = { |
+ {false, "", safe_browsing::SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL, |
+ safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
+ {false, subresource_filter::kActivationListSocialEngineeringAdsInterstitial, |
+ safe_browsing::SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL, |
+ safe_browsing::ThreatPatternType::NONE}, |
+ {false, subresource_filter::kActivationListSocialEngineeringAdsInterstitial, |
+ safe_browsing::SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL, |
+ safe_browsing::ThreatPatternType::MALWARE_LANDING}, |
+ {false, subresource_filter::kActivationListSocialEngineeringAdsInterstitial, |
+ safe_browsing::SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL, |
+ safe_browsing::ThreatPatternType::MALWARE_DISTRIBUTION}, |
+ {true, subresource_filter::kActivationListSocialEngineeringAdsInterstitial, |
+ safe_browsing::SB_THREAT_TYPE_URL_MALWARE, |
+ safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
+ {false, subresource_filter::kActivationListPhishingInterstitial, |
+ safe_browsing::SB_THREAT_TYPE_API_ABUSE, |
+ safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
+ {false, subresource_filter::kActivationListPhishingInterstitial, |
+ safe_browsing::SB_THREAT_TYPE_BLACKLISTED_RESOURCE, |
+ safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
+ {false, subresource_filter::kActivationListPhishingInterstitial, |
+ safe_browsing::SB_THREAT_TYPE_CLIENT_SIDE_MALWARE_URL, |
+ safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
+ {false, subresource_filter::kActivationListPhishingInterstitial, |
+ safe_browsing::SB_THREAT_TYPE_BINARY_MALWARE_URL, |
+ safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
+ {false, subresource_filter::kActivationListPhishingInterstitial, |
+ safe_browsing::SB_THREAT_TYPE_URL_UNWANTED, |
+ safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
+ {false, subresource_filter::kActivationListPhishingInterstitial, |
+ safe_browsing::SB_THREAT_TYPE_URL_MALWARE, |
+ safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
+ {false, subresource_filter::kActivationListPhishingInterstitial, |
+ safe_browsing::SB_THREAT_TYPE_URL_PHISHING, |
+ safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
+ {false, subresource_filter::kActivationListPhishingInterstitial, |
+ safe_browsing::SB_THREAT_TYPE_SAFE, |
+ safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS}, |
+ {true, subresource_filter::kActivationListPhishingInterstitial, |
+ safe_browsing::SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL, |
+ safe_browsing::ThreatPatternType::NONE}, |
+}; |
+ |
} // namespace |
+ |
namespace subresource_filter { |
class MockSubresourceFilterDriver : public ContentSubresourceFilterDriver { |
@@ -98,7 +150,7 @@ class ContentSubresourceFilterDriverFactoryTest |
void BlacklistURLWithRedirects(const GURL& url, |
const std::vector<GURL>& redirects) { |
factory()->OnMainResourceMatchedSafeBrowsingBlacklist( |
- url, redirects, |
+ url, redirects, safe_browsing::SB_THREAT_TYPE_URL_PHISHING, |
safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS); |
} |
@@ -158,16 +210,53 @@ class ContentSubresourceFilterDriverFactoryTest |
class ContentSubresourceFilterDriverFactoryThreatTypeTest |
: public ContentSubresourceFilterDriverFactoryTest, |
- public ::testing::WithParamInterface<safe_browsing::ThreatPatternType> { |
+ public ::testing::WithParamInterface<ActivationListTestData> { |
public: |
ContentSubresourceFilterDriverFactoryThreatTypeTest() {} |
~ContentSubresourceFilterDriverFactoryThreatTypeTest() override {} |
+ void VerifyEntitiesNotInTheBlacklist( |
+ const GURL& test_url, |
+ const std::vector<GURL>& redirects, |
+ const ActivationListTestData& test_data) { |
+ factory()->OnMainResourceMatchedSafeBrowsingBlacklist( |
+ test_url, std::vector<GURL>(), test_data.threat_type, |
+ test_data.threat_type_metadata); |
+ EXPECT_EQ(test_data.should_add ? 1 : 0U, |
+ factory()->activation_set().size()); |
+ EXPECT_EQ(test_data.should_add, |
+ factory()->ShouldActivateForURL(GURL(test_url))); |
+ EXPECT_EQ(test_data.should_add, factory()->ShouldActivateForURL( |
+ GURL(test_url.GetWithEmptyPath()))); |
+ EXPECT_EQ(test_data.should_add, |
+ factory()->ShouldActivateForURL( |
+ GURL("http://" + test_url.host() + "/path?q=q"))); |
+ factory()->OnMainResourceMatchedSafeBrowsingBlacklist( |
+ test_url, redirects, test_data.threat_type, |
+ test_data.threat_type_metadata); |
+ for (const auto& redirect : redirects) { |
+ EXPECT_EQ(test_data.should_add, |
+ factory()->ShouldActivateForURL(redirect)); |
+ EXPECT_EQ(test_data.should_add, |
+ factory()->ShouldActivateForURL(redirect.GetWithEmptyPath())); |
+ EXPECT_EQ(test_data.should_add, factory()->ShouldActivateForURL( |
+ GURL("http://" + redirect.host()))); |
+ EXPECT_EQ(test_data.should_add, |
+ factory()->ShouldActivateForURL( |
+ GURL("http://" + redirect.host() + "/path?q=q"))); |
+ } |
+ } |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(ContentSubresourceFilterDriverFactoryThreatTypeTest); |
}; |
TEST_F(ContentSubresourceFilterDriverFactoryTest, SocEngHitEmptyRedirects) { |
+ base::FieldTrialList field_trial_list(nullptr); |
+ testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
+ base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationStateEnabled, |
+ kActivationScopeNoSites, kActivationListSocialEngineeringAdsInterstitial); |
+ |
BlacklistURLWithRedirects(GURL(kExampleUrlWithParams), std::vector<GURL>()); |
EXPECT_EQ(1U, factory()->activation_set().size()); |
@@ -186,6 +275,11 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, SocEngHitEmptyRedirects) { |
} |
TEST_F(ContentSubresourceFilterDriverFactoryTest, SocEngHitWithRedirects) { |
+ base::FieldTrialList field_trial_list(nullptr); |
+ testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
+ base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationStateEnabled, |
+ kActivationScopeNoSites, kActivationListSocialEngineeringAdsInterstitial); |
+ |
std::vector<GURL> redirects; |
redirects.push_back(GURL("https://example1.com")); |
redirects.push_back(GURL("https://example2.com")); |
@@ -213,7 +307,7 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, |
base::FieldTrialList field_trial_list(nullptr); |
testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
base::FeatureList::OVERRIDE_DISABLE_FEATURE, kActivationStateEnabled, |
- kActivationScopeNoSites); |
+ kActivationScopeNoSites, kActivationListSocialEngineeringAdsInterstitial); |
ActivateAndExpectForFrameHostForUrl(driver(), main_rfh(), GURL(kTestUrl), |
false /* should_activate */); |
BlacklistURLWithRedirects(GURL(kExampleUrlWithParams), std::vector<GURL>()); |
@@ -226,7 +320,8 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, ActivateForFrameHostNeeded) { |
base::FieldTrialList field_trial_list(nullptr); |
testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationStateEnabled, |
- kActivationScopeActivationList); |
+ kActivationScopeActivationList, |
+ kActivationListSocialEngineeringAdsInterstitial); |
BlacklistURLWithRedirects(GURL(kExampleUrlWithParams), std::vector<GURL>()); |
ActivateAndExpectForFrameHostForUrl(driver(), main_rfh(), GURL(kTestUrl), |
@@ -236,28 +331,19 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, ActivateForFrameHostNeeded) { |
} |
TEST_P(ContentSubresourceFilterDriverFactoryThreatTypeTest, NonSocEngHit) { |
+ const ActivationListTestData& test_data = GetParam(); |
+ base::FieldTrialList field_trial_list(nullptr); |
+ testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
+ base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationStateEnabled, |
+ kActivationScopeNoSites, test_data.activation_list); |
+ |
std::vector<GURL> redirects; |
redirects.push_back(GURL("https://example1.com")); |
redirects.push_back(GURL("https://example2.com")); |
redirects.push_back(GURL("https://example3.com")); |
const GURL test_url("https://example.com/nonsoceng?q=engsocnon"); |
- factory()->OnMainResourceMatchedSafeBrowsingBlacklist( |
- GURL(test_url), std::vector<GURL>(), GetParam()); |
- EXPECT_EQ(0U, factory()->activation_set().size()); |
- EXPECT_FALSE(factory()->ShouldActivateForURL(GURL(test_url))); |
- EXPECT_FALSE( |
- factory()->ShouldActivateForURL(GURL(test_url.GetWithEmptyPath()))); |
- EXPECT_FALSE(factory()->ShouldActivateForURL( |
- GURL("http://" + test_url.host() + "/path?q=q"))); |
- for (const auto& redirect : redirects) { |
- EXPECT_FALSE(factory()->ShouldActivateForURL(redirect)); |
- EXPECT_FALSE(factory()->ShouldActivateForURL(redirect.GetWithEmptyPath())); |
- EXPECT_FALSE( |
- factory()->ShouldActivateForURL(GURL("http://" + redirect.host()))); |
- EXPECT_FALSE(factory()->ShouldActivateForURL( |
- GURL("http://" + redirect.host() + "/path?q=q"))); |
- } |
+ VerifyEntitiesNotInTheBlacklist(test_url, redirects, test_data); |
}; |
TEST_F(ContentSubresourceFilterDriverFactoryTest, |
@@ -265,7 +351,8 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, |
base::FieldTrialList field_trial_list(nullptr); |
testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationStateEnabled, |
- kActivationScopeActivationList); |
+ kActivationScopeActivationList, |
+ kActivationListSocialEngineeringAdsInterstitial); |
NavigateToUrlAndExpectActivationAndPromptSubFrame(GURL(kExampleUrl), |
false /* should_prompt */); |
} |
@@ -275,7 +362,8 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, |
base::FieldTrialList field_trial_list(nullptr); |
testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationStateDryRun, |
- kActivationScopeAllSites); |
+ kActivationScopeAllSites, |
+ kActivationListSocialEngineeringAdsInterstitial); |
NavigateToUrlAndExpectActivationAndPrompt(GURL(kExampleUrlWithParams), |
true /* should_activate */, |
ActivationState::DRYRUN); |
@@ -290,7 +378,8 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, |
base::FieldTrialList field_trial_list(nullptr); |
testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationStateEnabled, |
- kActivationScopeAllSites); |
+ kActivationScopeAllSites, |
+ kActivationListSocialEngineeringAdsInterstitial); |
NavigateToUrlAndExpectActivationAndPrompt(GURL(kExampleUrlWithParams), |
true /* should_activate */, |
ActivationState::ENABLED); |
@@ -305,7 +394,7 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, |
base::FieldTrialList field_trial_list(nullptr); |
testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationStateDryRun, |
- kActivationScopeNoSites); |
+ kActivationScopeNoSites, kActivationListSocialEngineeringAdsInterstitial); |
NavigateToUrlAndExpectActivationAndPrompt(GURL(kExampleUrlWithParams), |
false /* should_activate */, |
ActivationState::DISABLED); |
@@ -316,19 +405,15 @@ TEST_F(ContentSubresourceFilterDriverFactoryTest, |
base::FieldTrialList field_trial_list(nullptr); |
testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationStateDisabled, |
- kActivationScopeActivationList); |
+ kActivationScopeActivationList, |
+ kActivationListSocialEngineeringAdsInterstitial); |
NavigateToUrlAndExpectActivationAndPrompt(GURL(kExampleUrlWithParams), |
false /* should_activate */, |
ActivationState::DISABLED); |
} |
-INSTANTIATE_TEST_CASE_P( |
- NoSonEngHit, |
- ContentSubresourceFilterDriverFactoryThreatTypeTest, |
- ::testing::Values( |
- safe_browsing::ThreatPatternType::NONE, |
- safe_browsing::ThreatPatternType::MALWARE_LANDING, |
- safe_browsing::ThreatPatternType::MALWARE_DISTRIBUTION, |
- safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_LANDING)); |
+INSTANTIATE_TEST_CASE_P(NoSonEngHit, |
+ ContentSubresourceFilterDriverFactoryThreatTypeTest, |
+ ::testing::ValuesIn(kActivationListTestData)); |
} // namespace subresource_filter |