| Index: chrome/browser/subresource_filter/subresource_filter_browsertest.cc
|
| diff --git a/chrome/browser/subresource_filter/subresource_filter_browsertest.cc b/chrome/browser/subresource_filter/subresource_filter_browsertest.cc
|
| index 6b9c9acb91401aa69555b89593720bca1517e035..050bb4581cf965b56d965438f93d30bf86cf89af 100644
|
| --- a/chrome/browser/subresource_filter/subresource_filter_browsertest.cc
|
| +++ b/chrome/browser/subresource_filter/subresource_filter_browsertest.cc
|
| @@ -170,7 +170,7 @@ GURL GetURLWithFragment(const GURL& url, base::StringPiece fragment) {
|
|
|
| namespace subresource_filter {
|
|
|
| -using subresource_filter::testing::ScopedSubresourceFilterFeatureToggle;
|
| +using subresource_filter::testing::ScopedSubresourceFilterConfigurator;
|
| using subresource_filter::testing::TestRulesetPublisher;
|
| using subresource_filter::testing::TestRulesetCreator;
|
| using subresource_filter::testing::TestRulesetPair;
|
| @@ -204,26 +204,12 @@ IN_PROC_BROWSER_TEST_F(SubresourceFilterDisabledByDefaultBrowserTest,
|
|
|
| // SubresourceFilterBrowserTest -----------------------------------------------
|
|
|
| -class SubresourceFilterBrowserTestImpl : public InProcessBrowserTest {
|
| +class SubresourceFilterBrowserTest : public InProcessBrowserTest {
|
| public:
|
| - explicit SubresourceFilterBrowserTestImpl(bool measure_performance,
|
| - bool whitelist_site_on_reload)
|
| - : measure_performance_(measure_performance),
|
| - whitelist_site_on_reload_(whitelist_site_on_reload) {}
|
| -
|
| - ~SubresourceFilterBrowserTestImpl() override {}
|
| + SubresourceFilterBrowserTest() {}
|
| + ~SubresourceFilterBrowserTest() override {}
|
|
|
| protected:
|
| - // It would be too late to enable the feature in SetUpOnMainThread(), as it is
|
| - // called after ChromeBrowserMainParts::PreBrowserStart(), which instantiates
|
| - // the RulesetService.
|
| - //
|
| - // On the other hand, setting up field trials in this method would be too
|
| - // early, as it is called before BrowserMain, which expects no FieldTrialList
|
| - // singleton to exist. There are no other hooks we could use either.
|
| - //
|
| - // As a workaround, enable the feature here, then enable the feature once
|
| - // again + set up the field trials later.
|
| void SetUpCommandLine(base::CommandLine* command_line) override {
|
| command_line->AppendSwitchASCII(
|
| switches::kEnableFeatures,
|
| @@ -265,7 +251,6 @@ class SubresourceFilterBrowserTestImpl : public InProcessBrowserTest {
|
| }
|
|
|
| void SetUpOnMainThread() override {
|
| - SetUpActivationFeature();
|
| base::FilePath test_data_dir;
|
| PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir);
|
| embedded_test_server()->ServeFilesFromDirectory(test_data_dir);
|
| @@ -273,14 +258,7 @@ class SubresourceFilterBrowserTestImpl : public InProcessBrowserTest {
|
| host_resolver()->AddRule("*", "127.0.0.1");
|
| content::SetupCrossSiteRedirector(embedded_test_server());
|
| ASSERT_TRUE(embedded_test_server()->Start());
|
| - }
|
| -
|
| - virtual void SetUpActivationFeature() {
|
| - ToggleFeatures(base::MakeUnique<ScopedSubresourceFilterFeatureToggle>(
|
| - base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled,
|
| - kActivationScopeActivationList, kActivationListPhishingInterstitial,
|
| - measure_performance_ ? "1" : "0", "" /* suppress_notifications */,
|
| - whitelist_site_on_reload_ ? "true" : "false"));
|
| + ResetConfigurationToEnableOnPhishingSites();
|
| }
|
|
|
| GURL GetTestUrl(const std::string& relative_url) {
|
| @@ -378,18 +356,26 @@ class SubresourceFilterBrowserTestImpl : public InProcessBrowserTest {
|
| test_ruleset_publisher_.SetRuleset(test_ruleset_pair.unindexed));
|
| }
|
|
|
| - void ToggleFeatures(
|
| - std::unique_ptr<ScopedSubresourceFilterFeatureToggle> features) {
|
| - scoped_feature_toggle_ = std::move(features);
|
| + void ResetConfiguration(Configuration config) {
|
| + scoped_configuration_.ResetConfiguration(std::move(config));
|
| + }
|
| +
|
| + void ResetConfigurationToEnableOnPhishingSites(
|
| + bool measure_performance = false,
|
| + bool whitelist_site_on_reload = false) {
|
| + Configuration config(
|
| + subresource_filter::ActivationLevel::ENABLED,
|
| + subresource_filter::ActivationScope::ACTIVATION_LIST,
|
| + subresource_filter::ActivationList::PHISHING_INTERSTITIAL);
|
| + config.performance_measurement_rate = measure_performance ? 1.0 : 0.0;
|
| + config.should_whitelist_site_on_reload = whitelist_site_on_reload;
|
| + ResetConfiguration(std::move(config));
|
| }
|
|
|
| private:
|
| TestRulesetCreator ruleset_creator_;
|
| -
|
| - std::unique_ptr<ScopedSubresourceFilterFeatureToggle> scoped_feature_toggle_;
|
| + ScopedSubresourceFilterConfigurator scoped_configuration_;
|
| TestRulesetPublisher test_ruleset_publisher_;
|
| - const bool measure_performance_;
|
| - const bool whitelist_site_on_reload_;
|
|
|
| std::unique_ptr<safe_browsing::TestSafeBrowsingServiceFactory> sb_factory_;
|
| // Owned by the V4Database.
|
| @@ -397,32 +383,7 @@ class SubresourceFilterBrowserTestImpl : public InProcessBrowserTest {
|
| // Owned by the V4GetHashProtocolManager.
|
| safe_browsing::TestV4GetHashProtocolManagerFactory* v4_get_hash_factory_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(SubresourceFilterBrowserTestImpl);
|
| -};
|
| -
|
| -class SubresourceFilterBrowserTest : public SubresourceFilterBrowserTestImpl {
|
| - public:
|
| - SubresourceFilterBrowserTest()
|
| - : SubresourceFilterBrowserTestImpl(false, false) {}
|
| -};
|
| -
|
| -// TODO(pkalinnikov): It should be possible to have only one fixture, i.e.,
|
| -// SubresourceFilterBrowserTest, unsetting |measure_performance| by default, and
|
| -// providing a method to switch it on. However, the current implementation of
|
| -// ScopedSubresourceFilterFeatureToggle in use pollutes the global
|
| -// FieldTrialList in such a way that variation parameters can not be reassigned.
|
| -class SubresourceFilterWithPerformanceMeasurementBrowserTest
|
| - : public SubresourceFilterBrowserTestImpl {
|
| - public:
|
| - SubresourceFilterWithPerformanceMeasurementBrowserTest()
|
| - : SubresourceFilterBrowserTestImpl(true, false) {}
|
| -};
|
| -
|
| -class SubresourceFilterWhitelistSiteOnReloadBrowserTest
|
| - : public SubresourceFilterBrowserTestImpl {
|
| - public:
|
| - SubresourceFilterWhitelistSiteOnReloadBrowserTest()
|
| - : SubresourceFilterBrowserTestImpl(false, true) {}
|
| + DISALLOW_COPY_AND_ASSIGN(SubresourceFilterBrowserTest);
|
| };
|
|
|
| enum WebSocketCreationPolicy {
|
| @@ -430,14 +391,13 @@ enum WebSocketCreationPolicy {
|
| IN_WORKER,
|
| };
|
| class SubresourceFilterWebSocketBrowserTest
|
| - : public SubresourceFilterBrowserTestImpl,
|
| + : public SubresourceFilterBrowserTest,
|
| public ::testing::WithParamInterface<WebSocketCreationPolicy> {
|
| public:
|
| - SubresourceFilterWebSocketBrowserTest()
|
| - : SubresourceFilterBrowserTestImpl(false, false) {}
|
| + SubresourceFilterWebSocketBrowserTest() {}
|
|
|
| void SetUpOnMainThread() override {
|
| - SubresourceFilterBrowserTestImpl::SetUpOnMainThread();
|
| + SubresourceFilterBrowserTest::SetUpOnMainThread();
|
| websocket_test_server_ = base::MakeUnique<net::SpawnedTestServer>(
|
| net::SpawnedTestServer::TYPE_WS, net::SpawnedTestServer::kLocalhost,
|
| net::GetWebSocketTestDataDirectory());
|
| @@ -468,21 +428,6 @@ class SubresourceFilterWebSocketBrowserTest
|
| std::unique_ptr<net::SpawnedTestServer> websocket_test_server_;
|
| };
|
|
|
| -#if defined(GOOGLE_CHROME_BUILD)
|
| -class SubresourceFilterListBrowserTest
|
| - : public SubresourceFilterBrowserTestImpl {
|
| - public:
|
| - SubresourceFilterListBrowserTest()
|
| - : SubresourceFilterBrowserTestImpl(false, false) {}
|
| -
|
| - void SetUpActivationFeature() override {
|
| - ToggleFeatures(base::MakeUnique<ScopedSubresourceFilterFeatureToggle>(
|
| - base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled,
|
| - kActivationScopeActivationList, kActivationListSubresourceFilter, "0",
|
| - "" /* suppress_notifications */, "false"));
|
| - }
|
| -};
|
| -#endif
|
|
|
| // Tests -----------------------------------------------------------------------
|
|
|
| @@ -506,11 +451,18 @@ IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest, MainFrameActivation) {
|
| }
|
|
|
| #if defined(GOOGLE_CHROME_BUILD)
|
| -IN_PROC_BROWSER_TEST_F(SubresourceFilterListBrowserTest, MainFrameActivation) {
|
| +IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest,
|
| + MainFrameActivation_SubresourceFilterList) {
|
| GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html"));
|
| ConfigureAsSubresourceFilterOnlyURL(url);
|
| ASSERT_NO_FATAL_FAILURE(SetRulesetToDisallowURLsWithPathSuffix(
|
| "suffix-that-does-not-match-anything"));
|
| +
|
| + Configuration config(subresource_filter::ActivationLevel::ENABLED,
|
| + subresource_filter::ActivationScope::ACTIVATION_LIST,
|
| + subresource_filter::ActivationList::SUBRESOURCE_FILTER);
|
| + ResetConfiguration(std::move(config));
|
| +
|
| ui_test_utils::NavigateToURL(browser(), url);
|
| EXPECT_TRUE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame()));
|
|
|
| @@ -1105,10 +1057,12 @@ IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest,
|
| tester.ExpectTotalCount(internal::kHistogramSubresourceFilterCount, 1);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(SubresourceFilterWithPerformanceMeasurementBrowserTest,
|
| - ExpectHistogramsAreRecorded) {
|
| +IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest,
|
| + ExpectPerformanceHistogramsAreRecorded) {
|
| ASSERT_NO_FATAL_FAILURE(
|
| SetRulesetToDisallowURLsWithPathSuffix("included_script.js"));
|
| + ResetConfigurationToEnableOnPhishingSites(
|
| + true /* measure_performance */, false /* whitelist_site_on_reload */);
|
| const GURL url = GetTestUrl(kTestFrameSetPath);
|
| ConfigureAsPhishingURL(url);
|
|
|
| @@ -1192,13 +1146,14 @@ IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest,
|
| static_cast<int>(ActivationDecision::ACTIVATED), 1);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(SubresourceFilterWhitelistSiteOnReloadBrowserTest,
|
| - ActivationDisabledOnReload) {
|
| +IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest,
|
| + WhiteliseSiteOnReload_ActivationDisabledOnReload) {
|
| GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html"));
|
| ConfigureAsPhishingURL(url);
|
| ASSERT_NO_FATAL_FAILURE(
|
| SetRulesetToDisallowURLsWithPathSuffix("included_script.js"));
|
| -
|
| + ResetConfigurationToEnableOnPhishingSites(
|
| + false /* measure_performance */, true /* whitelist_site_on_reload */);
|
| base::HistogramTester tester;
|
| ui_test_utils::NavigateToURL(browser(), url);
|
| EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame()));
|
| @@ -1226,13 +1181,15 @@ IN_PROC_BROWSER_TEST_F(SubresourceFilterWhitelistSiteOnReloadBrowserTest,
|
| static_cast<int>(ActivationDecision::URL_WHITELISTED), 1);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(SubresourceFilterWhitelistSiteOnReloadBrowserTest,
|
| - ActivationDisabledOnReloadFromScript) {
|
| +IN_PROC_BROWSER_TEST_F(
|
| + SubresourceFilterBrowserTest,
|
| + WhiteliseSiteOnReload_ActivationDisabledOnReloadFromScript) {
|
| GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html"));
|
| ConfigureAsPhishingURL(url);
|
| ASSERT_NO_FATAL_FAILURE(
|
| SetRulesetToDisallowURLsWithPathSuffix("included_script.js"));
|
| -
|
| + ResetConfigurationToEnableOnPhishingSites(
|
| + false /* measure_performance */, true /* whitelist_site_on_reload */);
|
| base::HistogramTester tester;
|
| ui_test_utils::NavigateToURL(browser(), url);
|
| EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame()));
|
| @@ -1262,13 +1219,15 @@ IN_PROC_BROWSER_TEST_F(SubresourceFilterWhitelistSiteOnReloadBrowserTest,
|
| static_cast<int>(ActivationDecision::URL_WHITELISTED), 1);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(SubresourceFilterWhitelistSiteOnReloadBrowserTest,
|
| - ActivationDisabledOnNavigationToSameURL) {
|
| +IN_PROC_BROWSER_TEST_F(
|
| + SubresourceFilterBrowserTest,
|
| + WhiteliseSiteOnReload_ActivationDisabledOnNavigationToSameURL) {
|
| GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html"));
|
| ConfigureAsPhishingURL(url);
|
| ASSERT_NO_FATAL_FAILURE(
|
| SetRulesetToDisallowURLsWithPathSuffix("included_script.js"));
|
| -
|
| + ResetConfigurationToEnableOnPhishingSites(
|
| + false /* measure_performance */, true /* whitelist_site_on_reload */);
|
| base::HistogramTester tester;
|
| ui_test_utils::NavigateToURL(browser(), url);
|
| EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame()));
|
| @@ -1299,8 +1258,8 @@ IN_PROC_BROWSER_TEST_F(SubresourceFilterWhitelistSiteOnReloadBrowserTest,
|
| }
|
|
|
| #if defined(GOOGLE_CHROME_BUILD)
|
| -// This test is only enabled when GOOGLE_CHROME_BUILD is true because the store
|
| -// that this test uses is only populated on GOOGLE_CHROME_BUILD builds.
|
| +// These tests are only enabled when GOOGLE_CHROME_BUILD is true because the
|
| +// store that this test uses is only populated on GOOGLE_CHROME_BUILD builds.
|
| IN_PROC_BROWSER_TEST_F(
|
| SubresourceFilterBrowserTest,
|
| ExpectRedirectPatternHistogramsAreRecordedForSubresourceFilterOnlyMatch) {
|
|
|