| Index: components/subresource_filter/core/browser/subresource_filter_features_unittest.cc
|
| diff --git a/components/subresource_filter/core/browser/subresource_filter_features_unittest.cc b/components/subresource_filter/core/browser/subresource_filter_features_unittest.cc
|
| index 28b8f5108fc4637e128663879796331a3f62516f..9d2deee45f2da5349517751a562e81d6ccea47f6 100644
|
| --- a/components/subresource_filter/core/browser/subresource_filter_features_unittest.cc
|
| +++ b/components/subresource_filter/core/browser/subresource_filter_features_unittest.cc
|
| @@ -7,17 +7,20 @@
|
| #include <map>
|
| #include <memory>
|
| #include <string>
|
| +#include <utility>
|
| +#include <vector>
|
|
|
| #include "base/feature_list.h"
|
| #include "base/macros.h"
|
| #include "base/metrics/field_trial.h"
|
| #include "base/metrics/field_trial_params.h"
|
| +#include "base/strings/string_util.h"
|
| #include "components/subresource_filter/core/browser/subresource_filter_features_test_support.h"
|
| #include "components/variations/variations_associated_data.h"
|
| +#include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace subresource_filter {
|
| -namespace testing {
|
|
|
| namespace {
|
|
|
| @@ -50,14 +53,41 @@ class ScopedExperimentalStateToggle {
|
| private:
|
| base::FieldTrialList field_trial_list_;
|
|
|
| - ScopedSubresourceFilterConfigurator scoped_configurator_;
|
| + testing::ScopedSubresourceFilterConfigurator scoped_configurator_;
|
| base::test::ScopedFeatureList scoped_feature_list_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ScopedExperimentalStateToggle);
|
| };
|
|
|
| +void ExpectAndRetrieveExactlyOneEnabledConfig(Configuration* actual_config) {
|
| + DCHECK(actual_config);
|
| + const auto config_list = GetEnabledConfigurations();
|
| + ASSERT_EQ(1u, config_list->configs_by_decreasing_priority().size());
|
| + *actual_config = config_list->configs_by_decreasing_priority().front();
|
| +}
|
| +
|
| +void ExpectPresetCanBeEnabledByName(Configuration preset, const char* name) {
|
| + ScopedExperimentalStateToggle scoped_experimental_state(
|
| + base::FeatureList::OVERRIDE_ENABLE_FEATURE,
|
| + {{kEnablePresetsParameterName, name}});
|
| +
|
| + const auto config_list = GetEnabledConfigurations();
|
| + EXPECT_THAT(config_list->configs_by_decreasing_priority(),
|
| + ::testing::ElementsAre(preset, Configuration()));
|
| +}
|
| +
|
| +void ExpectPresetIsEquivalentToVariationParams(
|
| + Configuration preset,
|
| + std::map<std::string, std::string> variation_params) {
|
| + ScopedExperimentalStateToggle scoped_experimental_state(
|
| + base::FeatureList::OVERRIDE_ENABLE_FEATURE, variation_params);
|
| +
|
| + Configuration experimental_configuration;
|
| + ExpectAndRetrieveExactlyOneEnabledConfig(&experimental_configuration);
|
| + EXPECT_EQ(preset, experimental_configuration);
|
| +}
|
| +
|
| } // namespace
|
| -} // namespace testing
|
|
|
| TEST(SubresourceFilterFeaturesTest, ActivationLevel) {
|
| const struct {
|
| @@ -83,18 +113,18 @@ TEST(SubresourceFilterFeaturesTest, ActivationLevel) {
|
| SCOPED_TRACE(::testing::Message("ActivationLevelParam = \"")
|
| << test_case.activation_level_param << "\"");
|
|
|
| - testing::ScopedExperimentalStateToggle scoped_experimental_state(
|
| + ScopedExperimentalStateToggle scoped_experimental_state(
|
| test_case.feature_enabled ? base::FeatureList::OVERRIDE_ENABLE_FEATURE
|
| : base::FeatureList::OVERRIDE_USE_DEFAULT,
|
| {{kActivationLevelParameterName, test_case.activation_level_param},
|
| {kActivationScopeParameterName, kActivationScopeNoSites}});
|
|
|
| - const auto active_configurations = GetActiveConfigurations();
|
| - const Configuration& actual_configuration =
|
| - active_configurations->the_one_and_only();
|
| + Configuration actual_configuration;
|
| + ExpectAndRetrieveExactlyOneEnabledConfig(&actual_configuration);
|
| EXPECT_EQ(test_case.expected_activation_level,
|
| - actual_configuration.activation_level);
|
| - EXPECT_EQ(ActivationScope::NO_SITES, actual_configuration.activation_scope);
|
| + actual_configuration.activation_options.activation_level);
|
| + EXPECT_EQ(ActivationScope::NO_SITES,
|
| + actual_configuration.activation_conditions.activation_scope);
|
| }
|
| }
|
|
|
| @@ -122,18 +152,18 @@ TEST(SubresourceFilterFeaturesTest, ActivationScope) {
|
| SCOPED_TRACE(::testing::Message("ActivationScopeParam = \"")
|
| << test_case.activation_scope_param << "\"");
|
|
|
| - testing::ScopedExperimentalStateToggle scoped_experimental_state(
|
| + ScopedExperimentalStateToggle scoped_experimental_state(
|
| test_case.feature_enabled ? base::FeatureList::OVERRIDE_ENABLE_FEATURE
|
| : base::FeatureList::OVERRIDE_USE_DEFAULT,
|
| {{kActivationLevelParameterName, kActivationLevelDisabled},
|
| {kActivationScopeParameterName, test_case.activation_scope_param}});
|
|
|
| - const auto active_configurations = GetActiveConfigurations();
|
| - const Configuration& actual_configuration =
|
| - active_configurations->the_one_and_only();
|
| - EXPECT_EQ(ActivationLevel::DISABLED, actual_configuration.activation_level);
|
| + Configuration actual_configuration;
|
| + ExpectAndRetrieveExactlyOneEnabledConfig(&actual_configuration);
|
| + EXPECT_EQ(ActivationLevel::DISABLED,
|
| + actual_configuration.activation_options.activation_level);
|
| EXPECT_EQ(test_case.expected_activation_scope,
|
| - actual_configuration.activation_scope);
|
| + actual_configuration.activation_conditions.activation_scope);
|
| }
|
| }
|
|
|
| @@ -175,19 +205,24 @@ TEST(SubresourceFilterFeaturesTest, ActivationLevelAndScope) {
|
| kActivationScopeAllSites, ActivationScope::NO_SITES}};
|
|
|
| for (const auto& test_case : kTestCases) {
|
| - testing::ScopedExperimentalStateToggle scoped_experimental_state(
|
| + SCOPED_TRACE(::testing::Message("Enabled = ") << test_case.feature_enabled);
|
| + SCOPED_TRACE(::testing::Message("ActivationLevelParam = \"")
|
| + << test_case.activation_level_param << "\"");
|
| + SCOPED_TRACE(::testing::Message("ActivationScopeParam = \"")
|
| + << test_case.activation_scope_param << "\"");
|
| +
|
| + ScopedExperimentalStateToggle scoped_experimental_state(
|
| test_case.feature_enabled ? base::FeatureList::OVERRIDE_ENABLE_FEATURE
|
| : base::FeatureList::OVERRIDE_USE_DEFAULT,
|
| {{kActivationLevelParameterName, test_case.activation_level_param},
|
| {kActivationScopeParameterName, test_case.activation_scope_param}});
|
|
|
| - const auto active_configurations = GetActiveConfigurations();
|
| - const Configuration& actual_configuration =
|
| - active_configurations->the_one_and_only();
|
| + Configuration actual_configuration;
|
| + ExpectAndRetrieveExactlyOneEnabledConfig(&actual_configuration);
|
| EXPECT_EQ(test_case.expected_activation_level,
|
| - actual_configuration.activation_level);
|
| + actual_configuration.activation_options.activation_level);
|
| EXPECT_EQ(test_case.expected_activation_scope,
|
| - actual_configuration.activation_scope);
|
| + actual_configuration.activation_conditions.activation_scope);
|
| }
|
| }
|
|
|
| @@ -232,18 +267,56 @@ TEST(SubresourceFilterFeaturesTest, ActivationList) {
|
| SCOPED_TRACE(::testing::Message("ActivationListParam = \"")
|
| << test_case.activation_list_param << "\"");
|
|
|
| - testing::ScopedExperimentalStateToggle scoped_experimental_state(
|
| + ScopedExperimentalStateToggle scoped_experimental_state(
|
| test_case.feature_enabled ? base::FeatureList::OVERRIDE_ENABLE_FEATURE
|
| : base::FeatureList::OVERRIDE_USE_DEFAULT,
|
| {{kActivationLevelParameterName, kActivationLevelDisabled},
|
| {kActivationScopeParameterName, kActivationScopeNoSites},
|
| {kActivationListsParameterName, test_case.activation_list_param}});
|
|
|
| - const auto active_configurations = GetActiveConfigurations();
|
| - const Configuration& actual_configuration =
|
| - active_configurations->the_one_and_only();
|
| + Configuration actual_configuration;
|
| + ExpectAndRetrieveExactlyOneEnabledConfig(&actual_configuration);
|
| EXPECT_EQ(test_case.expected_activation_list,
|
| - actual_configuration.activation_list);
|
| + actual_configuration.activation_conditions.activation_list);
|
| + }
|
| +}
|
| +
|
| +TEST(SubresourceFilterFeaturesTest, ActivationPriority) {
|
| + const struct {
|
| + bool feature_enabled;
|
| + const char* activation_priority_param;
|
| + int expected_priority;
|
| + } kTestCases[] = {{false, "", 0},
|
| + {false, "not_an_integer", 0},
|
| + {false, "100", 0},
|
| + {true, "", 0},
|
| + {true, "not_an_integer", 0},
|
| + {true, "0.5not_an_integer", 0},
|
| + {true, "garbage42", 0},
|
| + {true, "42garbage", 42},
|
| + {true, "0", 0},
|
| + {true, "1", 1},
|
| + {true, "-1", -1},
|
| + {true, "2.9", 2},
|
| + {true, "-2.9", -2},
|
| + {true, "2e0", 2},
|
| + {true, "100", 100}};
|
| +
|
| + for (const auto& test_case : kTestCases) {
|
| + SCOPED_TRACE(::testing::Message("Enabled = ") << test_case.feature_enabled);
|
| + SCOPED_TRACE(::testing::Message("Priority = \"")
|
| + << test_case.activation_priority_param << "\"");
|
| +
|
| + ScopedExperimentalStateToggle scoped_experimental_state(
|
| + test_case.feature_enabled ? base::FeatureList::OVERRIDE_ENABLE_FEATURE
|
| + : base::FeatureList::OVERRIDE_USE_DEFAULT,
|
| + {{kActivationPriorityParameterName,
|
| + test_case.activation_priority_param}});
|
| +
|
| + Configuration actual_configuration;
|
| + ExpectAndRetrieveExactlyOneEnabledConfig(&actual_configuration);
|
| + EXPECT_EQ(test_case.expected_priority,
|
| + actual_configuration.activation_conditions.priority);
|
| }
|
| }
|
|
|
| @@ -271,17 +344,17 @@ TEST(SubresourceFilterFeaturesTest, PerfMeasurementRate) {
|
| SCOPED_TRACE(::testing::Message("PerfMeasurementParam = \"")
|
| << test_case.perf_measurement_param << "\"");
|
|
|
| - testing::ScopedExperimentalStateToggle scoped_experimental_state(
|
| + ScopedExperimentalStateToggle scoped_experimental_state(
|
| test_case.feature_enabled ? base::FeatureList::OVERRIDE_ENABLE_FEATURE
|
| : base::FeatureList::OVERRIDE_USE_DEFAULT,
|
| {{kPerformanceMeasurementRateParameterName,
|
| test_case.perf_measurement_param}});
|
|
|
| - const auto active_configurations = GetActiveConfigurations();
|
| - const Configuration& actual_configuration =
|
| - active_configurations->the_one_and_only();
|
| - EXPECT_EQ(test_case.expected_perf_measurement_rate,
|
| - actual_configuration.performance_measurement_rate);
|
| + Configuration actual_configuration;
|
| + ExpectAndRetrieveExactlyOneEnabledConfig(&actual_configuration);
|
| + EXPECT_EQ(
|
| + test_case.expected_perf_measurement_rate,
|
| + actual_configuration.activation_options.performance_measurement_rate);
|
| }
|
| }
|
|
|
| @@ -306,17 +379,17 @@ TEST(SubresourceFilterFeaturesTest, SuppressNotifications) {
|
| SCOPED_TRACE(::testing::Message("SuppressNotificationsParam = \"")
|
| << test_case.suppress_notifications_param << "\"");
|
|
|
| - testing::ScopedExperimentalStateToggle scoped_experimental_state(
|
| + ScopedExperimentalStateToggle scoped_experimental_state(
|
| test_case.feature_enabled ? base::FeatureList::OVERRIDE_ENABLE_FEATURE
|
| : base::FeatureList::OVERRIDE_USE_DEFAULT,
|
| {{kSuppressNotificationsParameterName,
|
| test_case.suppress_notifications_param}});
|
|
|
| - const auto active_configurations = GetActiveConfigurations();
|
| - const Configuration& actual_configuration =
|
| - active_configurations->the_one_and_only();
|
| - EXPECT_EQ(test_case.expected_suppress_notifications_value,
|
| - actual_configuration.should_suppress_notifications);
|
| + Configuration actual_configuration;
|
| + ExpectAndRetrieveExactlyOneEnabledConfig(&actual_configuration);
|
| + EXPECT_EQ(
|
| + test_case.expected_suppress_notifications_value,
|
| + actual_configuration.activation_options.should_suppress_notifications);
|
| }
|
| }
|
|
|
| @@ -341,17 +414,17 @@ TEST(SubresourceFilterFeaturesTest, WhitelistSiteOnReload) {
|
| SCOPED_TRACE(::testing::Message("WhitelistSiteOnReloadParam = \"")
|
| << test_case.whitelist_site_on_reload_param << "\"");
|
|
|
| - testing::ScopedExperimentalStateToggle scoped_experimental_state(
|
| + ScopedExperimentalStateToggle scoped_experimental_state(
|
| test_case.feature_enabled ? base::FeatureList::OVERRIDE_ENABLE_FEATURE
|
| : base::FeatureList::OVERRIDE_USE_DEFAULT,
|
| {{kWhitelistSiteOnReloadParameterName,
|
| test_case.whitelist_site_on_reload_param}});
|
|
|
| - const auto active_configurations = GetActiveConfigurations();
|
| - const Configuration& actual_configuration =
|
| - active_configurations->the_one_and_only();
|
| + Configuration actual_configuration;
|
| + ExpectAndRetrieveExactlyOneEnabledConfig(&actual_configuration);
|
| EXPECT_EQ(test_case.expected_whitelist_site_on_reload_value,
|
| - actual_configuration.should_whitelist_site_on_reload);
|
| + actual_configuration.activation_options
|
| + .should_whitelist_site_on_reload);
|
| }
|
| }
|
|
|
| @@ -369,16 +442,208 @@ TEST(SubresourceFilterFeaturesTest, RulesetFlavor) {
|
| SCOPED_TRACE(::testing::Message("Flavor = \"")
|
| << test_case.ruleset_flavor_param << "\"");
|
|
|
| - testing::ScopedExperimentalStateToggle scoped_experimental_state(
|
| + ScopedExperimentalStateToggle scoped_experimental_state(
|
| test_case.feature_enabled ? base::FeatureList::OVERRIDE_ENABLE_FEATURE
|
| : base::FeatureList::OVERRIDE_USE_DEFAULT,
|
| {{kRulesetFlavorParameterName, test_case.ruleset_flavor_param}});
|
|
|
| - const auto active_configurations = GetActiveConfigurations();
|
| - const Configuration& actual_configuration =
|
| - active_configurations->the_one_and_only();
|
| + Configuration actual_configuration;
|
| + ExpectAndRetrieveExactlyOneEnabledConfig(&actual_configuration);
|
| EXPECT_EQ(std::string(test_case.expected_ruleset_flavor_value),
|
| - actual_configuration.ruleset_flavor);
|
| + actual_configuration.general_settings.ruleset_flavor);
|
| }
|
| }
|
| +
|
| +TEST(SubresourceFilterFeaturesTest, LexicographicallyGreatestRulesetFlavor) {
|
| + const struct {
|
| + const char* expected_ruleset_flavor_selected;
|
| + std::vector<std::string> ruleset_flavors;
|
| + } kTestCases[] = {{"", std::vector<std::string>()},
|
| + {"", {""}},
|
| + {"a", {"a"}},
|
| + {"e", {"e"}},
|
| + {"foo", {"foo"}},
|
| + {"", {"", ""}},
|
| + {"a", {"a", ""}},
|
| + {"a", {"", "a"}},
|
| + {"a", {"a", "a"}},
|
| + {"c", {"b", "", "c"}},
|
| + {"b", {"", "b", "a"}},
|
| + {"aa", {"", "a", "aa"}},
|
| + {"b", {"", "a", "aa", "b"}},
|
| + {"foo", {"foo", "bar", "b", ""}},
|
| + {"2.1", {"2", "2.1", "1.3", ""}},
|
| + {"3", {"2", "2.1", "1.3", "3"}}};
|
| +
|
| + for (const auto& test_case : kTestCases) {
|
| + SCOPED_TRACE(::testing::Message()
|
| + << "ruleset_flavors: "
|
| + << ::testing::PrintToString(test_case.ruleset_flavors));
|
| +
|
| + std::vector<Configuration> configs;
|
| + for (const auto& ruleset_flavor : test_case.ruleset_flavors) {
|
| + Configuration config;
|
| + config.general_settings.ruleset_flavor = ruleset_flavor;
|
| + configs.push_back(std::move(config));
|
| + }
|
| +
|
| + subresource_filter::testing::ScopedSubresourceFilterConfigurator
|
| + scoped_configuration(std::move(configs));
|
| + EXPECT_EQ(test_case.expected_ruleset_flavor_selected,
|
| + GetEnabledConfigurations()
|
| + ->lexicographically_greatest_ruleset_flavor());
|
| + }
|
| +}
|
| +
|
| +TEST(SubresourceFilterFeaturesTest, EnabledConfigurations_FeatureDisabled) {
|
| + ScopedExperimentalStateToggle scoped_experimental_state(
|
| + base::FeatureList::OVERRIDE_DISABLE_FEATURE,
|
| + std::map<std::string, std::string>());
|
| +
|
| + const auto config_list = GetEnabledConfigurations();
|
| + EXPECT_THAT(config_list->configs_by_decreasing_priority(),
|
| + ::testing::ElementsAre(Configuration()));
|
| + EXPECT_EQ(std::string(),
|
| + config_list->lexicographically_greatest_ruleset_flavor());
|
| +}
|
| +
|
| +TEST(SubresourceFilterFeaturesTest,
|
| + EnabledConfigurations_FeatureEnabledWithNoParameters) {
|
| + ScopedExperimentalStateToggle scoped_experimental_state(
|
| + base::FeatureList::OVERRIDE_ENABLE_FEATURE,
|
| + std::map<std::string, std::string>());
|
| +
|
| + const auto config_list = GetEnabledConfigurations();
|
| + EXPECT_THAT(config_list->configs_by_decreasing_priority(),
|
| + ::testing::ElementsAre(Configuration()));
|
| + EXPECT_EQ(std::string(),
|
| + config_list->lexicographically_greatest_ruleset_flavor());
|
| +}
|
| +
|
| +TEST(SubresourceFilterFeaturesTest, PresetForLiveRunOnPhishingSites) {
|
| + ExpectPresetCanBeEnabledByName(
|
| + Configuration::MakePresetForLiveRunOnPhishingSites(),
|
| + kPresetLiveRunOnPhishingSites);
|
| + ExpectPresetIsEquivalentToVariationParams(
|
| + Configuration::MakePresetForLiveRunOnPhishingSites(),
|
| + {{kActivationLevelParameterName, kActivationLevelEnabled},
|
| + {kActivationScopeParameterName, kActivationScopeActivationList},
|
| + {kActivationListsParameterName, kActivationListPhishingInterstitial},
|
| + {kActivationPriorityParameterName, "1000"}});
|
| +}
|
| +
|
| +TEST(SubresourceFilterFeaturesTest,
|
| + PresetForPerformanceTestingDryRunOnAllSites) {
|
| + ExpectPresetCanBeEnabledByName(
|
| + Configuration::MakePresetForPerformanceTestingDryRunOnAllSites(),
|
| + kPresetPerformanceTestingDryRunOnAllSites);
|
| + ExpectPresetIsEquivalentToVariationParams(
|
| + Configuration::MakePresetForPerformanceTestingDryRunOnAllSites(),
|
| + {{kActivationLevelParameterName, kActivationLevelDryRun},
|
| + {kActivationScopeParameterName, kActivationScopeAllSites},
|
| + {kActivationPriorityParameterName, "500"},
|
| + {kPerformanceMeasurementRateParameterName, "1.0"}});
|
| +}
|
| +
|
| +TEST(SubresourceFilterFeaturesTest, ConfigurationPriorities) {
|
| + const std::vector<Configuration> expected_order_by_decreasing_priority = {
|
| + Configuration::MakePresetForLiveRunOnPhishingSites(),
|
| + Configuration::MakePresetForPerformanceTestingDryRunOnAllSites(),
|
| + Configuration() /* default constructor */
|
| + };
|
| +
|
| + std::vector<Configuration> shuffled_order = {
|
| + expected_order_by_decreasing_priority[2],
|
| + expected_order_by_decreasing_priority[0],
|
| + expected_order_by_decreasing_priority[1]};
|
| + subresource_filter::testing::ScopedSubresourceFilterConfigurator
|
| + scoped_configuration(std::move(shuffled_order));
|
| + EXPECT_THAT(
|
| + GetEnabledConfigurations()->configs_by_decreasing_priority(),
|
| + ::testing::ElementsAreArray(expected_order_by_decreasing_priority));
|
| +}
|
| +
|
| +TEST(SubresourceFilterFeaturesTest, EnableDisableMultiplePresets) {
|
| + const std::string kPhishing(kPresetLiveRunOnPhishingSites);
|
| + const std::string kPerfTest(kPresetPerformanceTestingDryRunOnAllSites);
|
| +
|
| + // The default config comes from the empty experimental configuration.
|
| + const std::vector<Configuration> kDefaultConfig = {Configuration()};
|
| + const std::vector<Configuration> kPhishingAndDefaultConfigs = {
|
| + Configuration::MakePresetForLiveRunOnPhishingSites(), Configuration()};
|
| + const std::vector<Configuration> kAllConfigs = {
|
| + Configuration::MakePresetForLiveRunOnPhishingSites(),
|
| + Configuration::MakePresetForPerformanceTestingDryRunOnAllSites(),
|
| + Configuration()};
|
| +
|
| + const struct {
|
| + std::string enable_preset_name_list;
|
| + std::string disable_preset_name_list;
|
| + const std::vector<Configuration> expected_configs;
|
| + } kTestCases[] = {
|
| + {"", "", kDefaultConfig},
|
| + {"garbage1", "garbage2", kDefaultConfig},
|
| + {"", kPhishing + "," + kPerfTest, kDefaultConfig},
|
| + {kPhishing, kPerfTest, kPhishingAndDefaultConfigs},
|
| + {kPhishing + "," + kPerfTest, "garbage", kAllConfigs},
|
| + {kPerfTest + "," + kPhishing, base::ToUpperASCII(kPerfTest),
|
| + kPhishingAndDefaultConfigs},
|
| + {kPerfTest + "," + kPhishing,
|
| + ",,garbage, ," + kPerfTest + "," + kPhishing, kDefaultConfig},
|
| + {base::ToUpperASCII(kPhishing) + "," + base::ToUpperASCII(kPerfTest), "",
|
| + kAllConfigs},
|
| + {",, ," + kPerfTest + ",," + kPhishing, "", kAllConfigs},
|
| + {"garbage,garbage2," + kPerfTest + "," + kPhishing, "", kAllConfigs}};
|
| +
|
| + for (const auto& test_case : kTestCases) {
|
| + SCOPED_TRACE(
|
| + ::testing::Message()
|
| + << "enable_preset_name_list: " << test_case.enable_preset_name_list
|
| + << " disable_preset_name_list: " << test_case.disable_preset_name_list);
|
| +
|
| + ScopedExperimentalStateToggle scoped_experimental_state(
|
| + base::FeatureList::OVERRIDE_ENABLE_FEATURE,
|
| + {{kEnablePresetsParameterName, test_case.enable_preset_name_list},
|
| + {kDisablePresetsParameterName, test_case.disable_preset_name_list}});
|
| +
|
| + const auto config_list = GetEnabledConfigurations();
|
| + EXPECT_THAT(config_list->configs_by_decreasing_priority(),
|
| + ::testing::ElementsAreArray(test_case.expected_configs));
|
| + EXPECT_EQ(std::string(),
|
| + config_list->lexicographically_greatest_ruleset_flavor());
|
| + }
|
| +}
|
| +
|
| +TEST(SubresourceFilterFeaturesTest,
|
| + EnableMultiplePresetsAndExperimentalConfig) {
|
| + const std::string kPhishing(kPresetLiveRunOnPhishingSites);
|
| + const std::string kPerfTest(kPresetPerformanceTestingDryRunOnAllSites);
|
| + const std::string kTestRulesetFlavor("foobar");
|
| +
|
| + ScopedExperimentalStateToggle scoped_experimental_state(
|
| + base::FeatureList::OVERRIDE_ENABLE_FEATURE,
|
| + {{kEnablePresetsParameterName, kPhishing + "," + kPerfTest},
|
| + {kActivationLevelParameterName, kActivationLevelDryRun},
|
| + {kActivationScopeParameterName, kActivationScopeActivationList},
|
| + {kActivationListsParameterName, kActivationListSubresourceFilter},
|
| + {kActivationPriorityParameterName, "750"},
|
| + {kRulesetFlavorParameterName, kTestRulesetFlavor}});
|
| +
|
| + Configuration experimental_config(ActivationLevel::DRYRUN,
|
| + ActivationScope::ACTIVATION_LIST,
|
| + ActivationList::SUBRESOURCE_FILTER);
|
| + experimental_config.activation_conditions.priority = 750;
|
| + experimental_config.general_settings.ruleset_flavor = kTestRulesetFlavor;
|
| +
|
| + const auto config_list = GetEnabledConfigurations();
|
| + EXPECT_THAT(
|
| + config_list->configs_by_decreasing_priority(),
|
| + ::testing::ElementsAre(
|
| + Configuration::MakePresetForLiveRunOnPhishingSites(),
|
| + experimental_config,
|
| + Configuration::MakePresetForPerformanceTestingDryRunOnAllSites()));
|
| + EXPECT_EQ(kTestRulesetFlavor,
|
| + config_list->lexicographically_greatest_ruleset_flavor());
|
| +}
|
| +
|
| } // namespace subresource_filter
|
|
|