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

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

Issue 2841933003: [subresource_filter] Remove some state from the driver factory (Closed)
Patch Set: no more dep branch Created 3 years, 8 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 3479cee5c95e8e55be56e03388fc59b8d5513b37..84fe67fb9f6eca2d1752d7a4e2f97c364872d3a8 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
@@ -9,12 +9,17 @@
#include "base/memory/ptr_util.h"
#include "base/metrics/field_trial.h"
#include "base/test/histogram_tester.h"
+#include "base/threading/thread_task_runner_handle.h"
#include "components/safe_browsing_db/test_database_manager.h"
#include "components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h"
+#include "components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h"
#include "components/subresource_filter/content/browser/fake_safe_browsing_database_manager.h"
#include "components/subresource_filter/content/browser/subresource_filter_client.h"
+#include "components/subresource_filter/content/browser/verified_ruleset_dealer.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_decision.h"
+#include "components/subresource_filter/core/common/proto/rules.pb.h"
#include "components/subresource_filter/core/common/test_ruleset_creator.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/navigation_handle.h"
@@ -58,7 +63,8 @@ enum RedirectChainMatchPattern {
class MockSubresourceFilterClient
: public subresource_filter::SubresourceFilterClient {
public:
- MockSubresourceFilterClient() {}
+ MockSubresourceFilterClient(VerifiedRulesetDealer::Handle* dealer_handle)
+ : dealer_handle_(dealer_handle) {}
~MockSubresourceFilterClient() override = default;
@@ -66,35 +72,15 @@ class MockSubresourceFilterClient
MOCK_METHOD1(ShouldSuppressActivation, bool(content::NavigationHandle*));
MOCK_METHOD1(WhitelistByContentSettings, void(const GURL&));
MOCK_METHOD1(WhitelistInCurrentWebContents, void(const GURL&));
- MOCK_METHOD0(GetRulesetDealer, VerifiedRulesetDealer::Handle*());
- private:
- DISALLOW_COPY_AND_ASSIGN(MockSubresourceFilterClient);
-};
-
-// Throttle to call WillProcessResponse on the factory, which is otherwise
-// called by the ThrottleManager.
-class TestForwardingNavigationThrottle : public content::NavigationThrottle {
- public:
- TestForwardingNavigationThrottle(content::NavigationHandle* handle)
- : content::NavigationThrottle(handle) {}
- ~TestForwardingNavigationThrottle() override {}
-
- // content::NavigationThrottle:
- content::NavigationThrottle::ThrottleCheckResult WillProcessResponse()
- override {
- content::WebContents* web_contents = navigation_handle()->GetWebContents();
- ContentSubresourceFilterDriverFactory* factory =
- ContentSubresourceFilterDriverFactory::FromWebContents(web_contents);
- factory->WillProcessResponse(navigation_handle());
- return content::NavigationThrottle::PROCEED;
- }
- const char* GetNameForLogging() override {
- return "TestForwardingNavigationThrottle";
+ VerifiedRulesetDealer::Handle* GetRulesetDealer() override {
+ return dealer_handle_;
}
private:
- DISALLOW_COPY_AND_ASSIGN(TestForwardingNavigationThrottle);
+ // Owned by the test harness.
+ VerifiedRulesetDealer::Handle* dealer_handle_;
+ DISALLOW_COPY_AND_ASSIGN(MockSubresourceFilterClient);
};
} // namespace
@@ -113,9 +99,31 @@ class SubresourceFilterSafeBrowsingActivationThrottleTest
new testing::ScopedSubresourceFilterFeatureToggle(
base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled,
kActivationScopeActivationList, kActivationListSubresourceFilter));
+
+ // Initialize the ruleset dealer. This is needed because the throttle
+ // manager requires a valid ruleset dealer to create throttles, which are
+ // necessary for checking that the activation decision was plumbed through.
+ testing::TestRulesetCreator test_ruleset_creator;
+ testing::TestRulesetPair ruleset_pair;
+ std::vector<proto::UrlRule> rules;
+ ASSERT_NO_FATAL_FAILURE(
+ test_ruleset_creator.CreateRulesetWithRules(rules, &ruleset_pair));
+ dealer_handle_ = base::MakeUnique<VerifiedRulesetDealer::Handle>(
+ base::ThreadTaskRunnerHandle::Get());
+ dealer_handle_->SetRulesetFile(
+ testing::TestRuleset::Open(ruleset_pair.indexed));
+
+ // Make the blocking task runner run on the current task runner for the
+ // tests, to ensure that the NavigationSimulator properly runs all necessary
+ // tasks while waiting for throttle checks to finish.
+ dealer_handle_ = base::MakeUnique<VerifiedRulesetDealer::Handle>(
+ base::ThreadTaskRunnerHandle::Get());
+ dealer_handle_->SetRulesetFile(
+ testing::TestRuleset::Open(ruleset_pair.indexed));
// Note: Using NiceMock to allow uninteresting calls and suppress warnings.
auto client =
- base::MakeUnique<::testing::NiceMock<MockSubresourceFilterClient>>();
+ base::MakeUnique<::testing::NiceMock<MockSubresourceFilterClient>>(
+ dealer_handle_.get());
ContentSubresourceFilterDriverFactory::CreateForWebContents(
RenderViewHostTestHarness::web_contents(), std::move(client));
fake_safe_browsing_database_ = new FakeSafeBrowsingDatabaseManager();
@@ -123,9 +131,10 @@ class SubresourceFilterSafeBrowsingActivationThrottleTest
Observe(RenderViewHostTestHarness::web_contents());
}
- ContentSubresourceFilterDriverFactory* factory() {
+ ContentSubresourceFilterThrottleManager* throttle_manager() {
return ContentSubresourceFilterDriverFactory::FromWebContents(
- RenderViewHostTestHarness::web_contents());
+ RenderViewHostTestHarness::web_contents())
+ ->throttle_manager();
}
// content::WebContentsObserver:
@@ -136,8 +145,12 @@ class SubresourceFilterSafeBrowsingActivationThrottleTest
navigation_handle->RegisterThrottleForTesting(
base::MakeUnique<SubresourceFilterSafeBrowsingActivationThrottle>(
navigation_handle, fake_safe_browsing_database_));
- navigation_handle->RegisterThrottleForTesting(
- base::MakeUnique<TestForwardingNavigationThrottle>(navigation_handle));
+ std::vector<std::unique_ptr<content::NavigationThrottle>> throttles;
+ throttle_manager()->MaybeAppendNavigationThrottles(navigation_handle,
+ &throttles);
+ for (auto& it : throttles) {
+ navigation_handle->RegisterThrottleForTesting(std::move(it));
+ }
}
void SimulateStartAndExpectProceed() {
@@ -177,6 +190,7 @@ class SubresourceFilterSafeBrowsingActivationThrottleTest
base::FieldTrialList field_trial_list_;
std::unique_ptr<testing::ScopedSubresourceFilterFeatureToggle>
scoped_feature_toggle_;
+ std::unique_ptr<VerifiedRulesetDealer::Handle> dealer_handle_;
std::unique_ptr<content::NavigationSimulator> navigation_simulator_;
scoped_refptr<FakeSafeBrowsingDatabaseManager> fake_safe_browsing_database_;
base::HistogramTester tester_;
@@ -191,9 +205,9 @@ TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
CreateTestNavigationForMainFrame(url);
SimulateStartAndExpectProceed();
SimulateCommitAndExpectProceed();
- EXPECT_EQ(ContentSubresourceFilterDriverFactory::ActivationDecision::
- ACTIVATION_LIST_NOT_MATCHED,
- factory()->GetActivationDecisionForLastCommittedPageLoad());
+ EXPECT_EQ(
+ ActivationDecision::ACTIVATION_LIST_NOT_MATCHED,
+ throttle_manager()->GetActivationDecisionForLastCommittedPageLoad());
tester().ExpectTotalCount(kMatchesPatternHistogramNameSubresourceFilterSuffix,
0);
tester().ExpectTotalCount(kNavigationChainSizeSubresourceFilterSuffix, 0);
@@ -207,8 +221,8 @@ TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
SimulateStartAndExpectProceed();
SimulateCommitAndExpectProceed();
EXPECT_EQ(
- ContentSubresourceFilterDriverFactory::ActivationDecision::ACTIVATED,
- factory()->GetActivationDecisionForLastCommittedPageLoad());
+ ActivationDecision::ACTIVATED,
+ throttle_manager()->GetActivationDecisionForLastCommittedPageLoad());
tester().ExpectUniqueSample(
kMatchesPatternHistogramNameSubresourceFilterSuffix, NO_REDIRECTS_HIT, 1);
tester().ExpectUniqueSample(kNavigationChainSizeSubresourceFilterSuffix, 1,
@@ -222,9 +236,9 @@ TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
SimulateStartAndExpectProceed();
SimulateRedirectAndExpectProceed(GURL(kRedirectURL));
SimulateCommitAndExpectProceed();
- EXPECT_EQ(ContentSubresourceFilterDriverFactory::ActivationDecision::
- ACTIVATION_LIST_NOT_MATCHED,
- factory()->GetActivationDecisionForLastCommittedPageLoad());
+ EXPECT_EQ(
+ ActivationDecision::ACTIVATION_LIST_NOT_MATCHED,
+ throttle_manager()->GetActivationDecisionForLastCommittedPageLoad());
tester().ExpectTotalCount(kMatchesPatternHistogramNameSubresourceFilterSuffix,
0);
tester().ExpectTotalCount(kNavigationChainSizeSubresourceFilterSuffix, 0);
@@ -239,8 +253,8 @@ TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
SimulateRedirectAndExpectProceed(GURL(kRedirectURL));
SimulateCommitAndExpectProceed();
EXPECT_EQ(
- ContentSubresourceFilterDriverFactory::ActivationDecision::ACTIVATED,
- factory()->GetActivationDecisionForLastCommittedPageLoad());
+ ActivationDecision::ACTIVATED,
+ throttle_manager()->GetActivationDecisionForLastCommittedPageLoad());
tester().ExpectUniqueSample(
kMatchesPatternHistogramNameSubresourceFilterSuffix, F0M0L1, 1);
tester().ExpectUniqueSample(kNavigationChainSizeSubresourceFilterSuffix, 2,
@@ -254,9 +268,9 @@ TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest,
CreateTestNavigationForMainFrame(url);
SimulateStartAndExpectProceed();
SimulateCommitAndExpectProceed();
- EXPECT_EQ(ContentSubresourceFilterDriverFactory::ActivationDecision::
- ACTIVATION_LIST_NOT_MATCHED,
- factory()->GetActivationDecisionForLastCommittedPageLoad());
+ EXPECT_EQ(
+ ActivationDecision::ACTIVATION_LIST_NOT_MATCHED,
+ throttle_manager()->GetActivationDecisionForLastCommittedPageLoad());
tester().ExpectTotalCount(kMatchesPatternHistogramNameSubresourceFilterSuffix,
0);
tester().ExpectTotalCount(kNavigationChainSizeSubresourceFilterSuffix, 0);

Powered by Google App Engine
This is Rietveld 408576698