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

Unified Diff: components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc

Issue 2814733002: Add the SocEng as a type for checking in CheckUrlForSubresourceFilter. (Closed)
Patch Set: . Created 3 years, 7 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: components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc
diff --git a/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc b/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc
index a335787e627c0acf72587fa47c12916a513388ec..0798bc3076cf3eed7eddeeb1d7a150d0f37bfdc9 100644
--- a/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc
+++ b/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc
@@ -53,23 +53,10 @@ const char kSafeBrowsingNavigationDelayNoSpeculation[] =
"SubresourceFilter.PageLoad.SafeBrowsingDelay.NoRedirectSpeculation";
const char kSafeBrowsingCheckTime[] =
"SubresourceFilter.SafeBrowsing.CheckTime";
-
-// 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.
-enum RedirectChainMatchPattern {
- EMPTY, // No histograms were recorded.
- F0M0L1, // D is a Safe Browsing match.
- F0M1L0, // B or C, or both are Safe Browsing matches.
- F0M1L1, // B or C, or both and D are Safe Browsing matches.
- F1M0L0, // A is Safe Browsing match
- F1M0L1, // A and D are Safe Browsing matches.
- F1M1L0, // B and/or C and A are Safe Browsing matches.
- F1M1L1, // B and/or C and A and D are Safe Browsing matches.
- NO_REDIRECTS_HIT, // Redirect chain consists of single URL, aka no redirects
- // has happened, and this URL was a Safe Browsing hit.
- NUM_HIT_PATTERNS,
-};
+const char kMatchesPatternHistogramName[] =
+ "SubresourceFilter.PageLoad.FinalURLMatch.";
+const char kNavigationChainSize[] =
+ "SubresourceFilter.PageLoad.RedirectChainLength.";
class MockSubresourceFilterClient
: public subresource_filter::SubresourceFilterClient {
@@ -114,6 +101,49 @@ class TestForwardingNavigationThrottle : public content::NavigationThrottle {
DISALLOW_COPY_AND_ASSIGN(TestForwardingNavigationThrottle);
};
+std::string GetSuffixForList(const ActivationList& type) {
+ switch (type) {
+ case ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL:
+ return "SocialEngineeringAdsInterstitial";
+ case ActivationList::PHISHING_INTERSTITIAL:
+ return "PhishingInterstital";
+ case ActivationList::SUBRESOURCE_FILTER:
+ return "SubresourceFilterOnly";
+ case ActivationList::NONE:
+ return std::string();
+ }
+ return std::string();
+}
+
+struct ActivationListTestData {
+ const char* const activation_list;
+ ActivationList activation_list_type;
+ safe_browsing::SBThreatType threat_type;
+ safe_browsing::ThreatPatternType threat_type_metadata;
+};
+
+const ActivationListTestData kActivationListTestData[] = {
+ {subresource_filter::kActivationListSocialEngineeringAdsInterstitial,
+ ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL,
+ safe_browsing::SB_THREAT_TYPE_URL_PHISHING,
+ safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS},
+ {subresource_filter::kActivationListPhishingInterstitial,
+ ActivationList::PHISHING_INTERSTITIAL,
+ safe_browsing::SB_THREAT_TYPE_URL_PHISHING,
+ safe_browsing::ThreatPatternType::NONE},
+ {subresource_filter::kActivationListSubresourceFilter,
+ ActivationList::SUBRESOURCE_FILTER,
+ safe_browsing::SB_THREAT_TYPE_SUBRESOURCE_FILTER,
+ safe_browsing::ThreatPatternType::NONE},
+};
+
+void ExpectSampleForSuffix(const std::string& suffix,
+ const std::string& match_suffix,
+ const base::HistogramTester& tester) {
+ tester.ExpectUniqueSample(kMatchesPatternHistogramName + suffix,
+ (suffix == match_suffix), 1);
+}
+
} // namespace
class SubresourceFilterSafeBrowsingActivationThrottleTest
@@ -126,9 +156,7 @@ class SubresourceFilterSafeBrowsingActivationThrottleTest
void SetUp() override {
content::RenderViewHostTestHarness::SetUp();
- scoped_configuration_.ResetConfiguration(Configuration(
- ActivationLevel::ENABLED, ActivationScope::ACTIVATION_LIST,
- ActivationList::SUBRESOURCE_FILTER));
+ Configure();
test_io_task_runner_ = new base::TestMockTimeTaskRunner();
// Note: Using NiceMock to allow uninteresting calls and suppress warnings.
client_ =
@@ -140,6 +168,12 @@ class SubresourceFilterSafeBrowsingActivationThrottleTest
Observe(RenderViewHostTestHarness::web_contents());
}
+ virtual void Configure() {
+ scoped_configuration_.ResetConfiguration(Configuration(
+ ActivationLevel::ENABLED, ActivationScope::ACTIVATION_LIST,
+ ActivationList::SUBRESOURCE_FILTER));
+ }
+
void TearDown() override {
RunUntilIdle();
content::RenderViewHostTestHarness::TearDown();
@@ -213,9 +247,13 @@ class SubresourceFilterSafeBrowsingActivationThrottleTest
main_rfh());
}
- void ConfigureAsSubresourceFilterOnlyURL(const GURL& url) {
- fake_safe_browsing_database_->AddBlacklistedUrl(
- url, safe_browsing::SB_THREAT_TYPE_SUBRESOURCE_FILTER);
+ void ConfigureForMatch(const GURL& url,
+ safe_browsing::SBThreatType pattern_type =
+ safe_browsing::SB_THREAT_TYPE_SUBRESOURCE_FILTER,
+ safe_browsing::ThreatPatternType metadata =
+ safe_browsing::ThreatPatternType::NONE) {
+ fake_safe_browsing_database_->AddBlacklistedUrl(url, pattern_type,
+ metadata);
}
void SimulateTimeout() { fake_safe_browsing_database_->SimulateTimeout(); }
@@ -231,6 +269,10 @@ class SubresourceFilterSafeBrowsingActivationThrottleTest
return test_io_task_runner_.get();
}
+ testing::ScopedSubresourceFilterConfigurator* scoped_configuration() {
+ return &scoped_configuration_;
+ }
+
private:
base::FieldTrialList field_trial_list_;
testing::ScopedSubresourceFilterConfigurator scoped_configuration_;
@@ -243,6 +285,31 @@ class SubresourceFilterSafeBrowsingActivationThrottleTest
DISALLOW_COPY_AND_ASSIGN(SubresourceFilterSafeBrowsingActivationThrottleTest);
};
+class SubresourceFilterSafeBrowsingActivationThrottleParamTest
+ : public SubresourceFilterSafeBrowsingActivationThrottleTest,
+ public ::testing::WithParamInterface<ActivationListTestData> {
+ public:
+ SubresourceFilterSafeBrowsingActivationThrottleParamTest() {}
+ ~SubresourceFilterSafeBrowsingActivationThrottleParamTest() override {}
+
+ void Configure() override {
+ const ActivationListTestData& test_data = GetParam();
+ scoped_configuration()->ResetConfiguration(Configuration(
+ ActivationLevel::ENABLED, ActivationScope::ACTIVATION_LIST,
+ test_data.activation_list_type));
+ }
+
+ void ConfigureForMatchParam(const GURL& url) {
+ const ActivationListTestData& test_data = GetParam();
+ ConfigureForMatch(url, test_data.threat_type,
+ test_data.threat_type_metadata);
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(
+ SubresourceFilterSafeBrowsingActivationThrottleParamTest);
+};
+
class SubresourceFilterSafeBrowsingActivationThrottleTestWithCancelling
: public SubresourceFilterSafeBrowsingActivationThrottleTest,
public ::testing::WithParamInterface<
@@ -279,42 +346,51 @@ class SubresourceFilterSafeBrowsingActivationThrottleTestWithCancelling
SubresourceFilterSafeBrowsingActivationThrottleTestWithCancelling);
};
-TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
+TEST_P(SubresourceFilterSafeBrowsingActivationThrottleParamTest,
ListNotMatched_NoActivation) {
+ const ActivationListTestData& test_data = GetParam();
const GURL url(kURL);
+ const std::string suffix(GetSuffixForList(test_data.activation_list_type));
CreateTestNavigationForMainFrame(url);
SimulateStartAndExpectProceed();
SimulateCommitAndExpectProceed();
EXPECT_EQ(ContentSubresourceFilterDriverFactory::ActivationDecision::
ACTIVATION_CONDITIONS_NOT_MET,
factory()->GetActivationDecisionForLastCommittedPageLoad());
- tester().ExpectTotalCount(kMatchesPatternHistogramNameSubresourceFilterSuffix,
- 0);
- tester().ExpectTotalCount(kNavigationChainSizeSubresourceFilterSuffix, 0);
+ ExpectSampleForSuffix("SocialEngineeringAdsInterstitial", std::string(),
+ tester());
+ ExpectSampleForSuffix("PhishingInterstital", std::string(), tester());
+ ExpectSampleForSuffix("SubresourceFilterOnly", std::string(), tester());
+
tester().ExpectTotalCount(kSafeBrowsingNavigationDelay, 1);
tester().ExpectTotalCount(kSafeBrowsingNavigationDelayNoSpeculation, 1);
tester().ExpectTotalCount(kSafeBrowsingCheckTime, 1);
+ tester().ExpectTotalCount(kNavigationChainSize + suffix, 0);
}
-TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
+TEST_P(SubresourceFilterSafeBrowsingActivationThrottleParamTest,
ListMatched_Activation) {
+ const ActivationListTestData& test_data = GetParam();
const GURL url(kURL);
- ConfigureAsSubresourceFilterOnlyURL(url);
+ ConfigureForMatchParam(url);
CreateTestNavigationForMainFrame(url);
SimulateStartAndExpectProceed();
SimulateCommitAndExpectProceed();
EXPECT_EQ(
ContentSubresourceFilterDriverFactory::ActivationDecision::ACTIVATED,
factory()->GetActivationDecisionForLastCommittedPageLoad());
- tester().ExpectUniqueSample(
- kMatchesPatternHistogramNameSubresourceFilterSuffix, NO_REDIRECTS_HIT, 1);
- tester().ExpectUniqueSample(kNavigationChainSizeSubresourceFilterSuffix, 1,
- 1);
+ const std::string suffix(GetSuffixForList(test_data.activation_list_type));
+ ExpectSampleForSuffix("SocialEngineeringAdsInterstitial", suffix, tester());
+ ExpectSampleForSuffix("PhishingInterstital", suffix, tester());
+ ExpectSampleForSuffix("SubresourceFilterOnly", suffix, tester());
+ tester().ExpectUniqueSample(kNavigationChainSize + suffix, 1, 1);
}
-TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
+TEST_P(SubresourceFilterSafeBrowsingActivationThrottleParamTest,
ListNotMatchedAfterRedirect_NoActivation) {
+ const ActivationListTestData& test_data = GetParam();
const GURL url(kURL);
+ const std::string suffix(GetSuffixForList(test_data.activation_list_type));
CreateTestNavigationForMainFrame(url);
SimulateStartAndExpectProceed();
SimulateRedirectAndExpectProceed(GURL(kRedirectURL));
@@ -322,15 +398,19 @@ TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
EXPECT_EQ(ContentSubresourceFilterDriverFactory::ActivationDecision::
ACTIVATION_CONDITIONS_NOT_MET,
factory()->GetActivationDecisionForLastCommittedPageLoad());
- tester().ExpectTotalCount(kMatchesPatternHistogramNameSubresourceFilterSuffix,
- 0);
- tester().ExpectTotalCount(kNavigationChainSizeSubresourceFilterSuffix, 0);
+ ExpectSampleForSuffix("SocialEngineeringAdsInterstitial", std::string(),
+ tester());
+ ExpectSampleForSuffix("PhishingInterstital", std::string(), tester());
+ ExpectSampleForSuffix("SubresourceFilterOnly", std::string(), tester());
+ tester().ExpectTotalCount(kNavigationChainSize + suffix, 0);
}
-TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
+TEST_P(SubresourceFilterSafeBrowsingActivationThrottleParamTest,
ListMatchedAfterRedirect_Activation) {
+ const ActivationListTestData& test_data = GetParam();
const GURL url(kURL);
- ConfigureAsSubresourceFilterOnlyURL(GURL(kRedirectURL));
+ const std::string suffix(GetSuffixForList(test_data.activation_list_type));
+ ConfigureForMatchParam(GURL(kRedirectURL));
CreateTestNavigationForMainFrame(url);
SimulateStartAndExpectProceed();
SimulateRedirectAndExpectProceed(GURL(kRedirectURL));
@@ -338,15 +418,17 @@ TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
EXPECT_EQ(
ContentSubresourceFilterDriverFactory::ActivationDecision::ACTIVATED,
factory()->GetActivationDecisionForLastCommittedPageLoad());
- tester().ExpectUniqueSample(
- kMatchesPatternHistogramNameSubresourceFilterSuffix, F0M0L1, 1);
- tester().ExpectUniqueSample(kNavigationChainSizeSubresourceFilterSuffix, 2,
- 1);
+ tester().ExpectUniqueSample(kNavigationChainSize + suffix, 2, 1);
+ ExpectSampleForSuffix("SocialEngineeringAdsInterstitial", suffix, tester());
+ ExpectSampleForSuffix("PhishingInterstital", suffix, tester());
+ ExpectSampleForSuffix("SubresourceFilterOnly", suffix, tester());
}
-TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
+TEST_P(SubresourceFilterSafeBrowsingActivationThrottleParamTest,
ListNotMatchedAndTimeout_NoActivation) {
+ const ActivationListTestData& test_data = GetParam();
const GURL url(kURL);
+ const std::string suffix(GetSuffixForList(test_data.activation_list_type));
SimulateTimeout();
CreateTestNavigationForMainFrame(url);
SimulateStartAndExpectProceed();
@@ -372,10 +454,11 @@ TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
tester().ExpectTotalCount(kSafeBrowsingCheckTime, 1);
}
-TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
+TEST_P(SubresourceFilterSafeBrowsingActivationThrottleParamTest,
ListMatchedOnStart_NoDelay) {
+ const ActivationListTestData& test_data = GetParam();
const GURL url(kURL);
- ConfigureAsSubresourceFilterOnlyURL(url);
+ ConfigureForMatchParam(url);
CreateTestNavigationForMainFrame(url);
SimulateStartAndExpectProceed();
@@ -386,20 +469,23 @@ TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
EXPECT_EQ(
ContentSubresourceFilterDriverFactory::ActivationDecision::ACTIVATED,
factory()->GetActivationDecisionForLastCommittedPageLoad());
- tester().ExpectUniqueSample(
- kMatchesPatternHistogramNameSubresourceFilterSuffix, NO_REDIRECTS_HIT, 1);
- tester().ExpectUniqueSample(kNavigationChainSizeSubresourceFilterSuffix, 1,
- 1);
+ const std::string suffix(GetSuffixForList(test_data.activation_list_type));
+ ExpectSampleForSuffix("SocialEngineeringAdsInterstitial", suffix, tester());
+ ExpectSampleForSuffix("PhishingInterstital", suffix, tester());
+ ExpectSampleForSuffix("SubresourceFilterOnly", suffix, tester());
+ tester().ExpectUniqueSample(kNavigationChainSize + suffix, 1, 1);
+
tester().ExpectTimeBucketCount(kSafeBrowsingNavigationDelay,
base::TimeDelta::FromMilliseconds(0), 1);
tester().ExpectTotalCount(kSafeBrowsingNavigationDelayNoSpeculation, 1);
}
-TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
+TEST_P(SubresourceFilterSafeBrowsingActivationThrottleParamTest,
ListMatchedOnRedirect_NoDelay) {
+ const ActivationListTestData& test_data = GetParam();
const GURL url(kURL);
const GURL redirect_url(kRedirectURL);
- ConfigureAsSubresourceFilterOnlyURL(redirect_url);
+ ConfigureForMatchParam(redirect_url);
CreateTestNavigationForMainFrame(url);
SimulateStartAndExpectProceed();
@@ -412,21 +498,23 @@ TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
EXPECT_EQ(
ContentSubresourceFilterDriverFactory::ActivationDecision::ACTIVATED,
factory()->GetActivationDecisionForLastCommittedPageLoad());
- tester().ExpectUniqueSample(
- kMatchesPatternHistogramNameSubresourceFilterSuffix, F0M0L1, 1);
- tester().ExpectUniqueSample(kNavigationChainSizeSubresourceFilterSuffix, 2,
- 1);
+ const std::string suffix(GetSuffixForList(test_data.activation_list_type));
+ ExpectSampleForSuffix("SocialEngineeringAdsInterstitial", suffix, tester());
+ ExpectSampleForSuffix("PhishingInterstital", suffix, tester());
+ ExpectSampleForSuffix("SubresourceFilterOnly", suffix, tester());
+ tester().ExpectUniqueSample(kNavigationChainSize + suffix, 2, 1);
+
tester().ExpectTimeBucketCount(kSafeBrowsingNavigationDelay,
base::TimeDelta::FromMilliseconds(0), 1);
tester().ExpectTotalCount(kSafeBrowsingNavigationDelayNoSpeculation, 1);
tester().ExpectTotalCount(kSafeBrowsingCheckTime, 2);
}
-TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
+TEST_P(SubresourceFilterSafeBrowsingActivationThrottleParamTest,
ListMatchedOnStartWithRedirect_NoActivation) {
const GURL url(kURL);
const GURL redirect_url(kRedirectURL);
- ConfigureAsSubresourceFilterOnlyURL(url);
+ ConfigureForMatchParam(url);
CreateTestNavigationForMainFrame(url);
// These two lines also test how the database client reacts to two requests
@@ -454,7 +542,7 @@ TEST_P(SubresourceFilterSafeBrowsingActivationThrottleTestWithCancelling,
const GURL url(kURL);
SCOPED_TRACE(::testing::Message() << "CancelTime: " << cancel_time()
<< " ResultSynchrony: " << result_sync());
- ConfigureAsSubresourceFilterOnlyURL(url);
+ ConfigureForMatch(url);
CreateTestNavigationForMainFrame(url);
content::NavigationThrottle::ThrottleCheckResult result = SimulateStart();
@@ -494,4 +582,9 @@ INSTANTIATE_TEST_CASE_P(
content::CancellingNavigationThrottle::SYNCHRONOUS,
content::CancellingNavigationThrottle::ASYNCHRONOUS)));
+INSTANTIATE_TEST_CASE_P(
+ ActivationLevelTest,
+ SubresourceFilterSafeBrowsingActivationThrottleParamTest,
+ ::testing::ValuesIn(kActivationListTestData));
+
} // namespace subresource_filter

Powered by Google App Engine
This is Rietveld 408576698