| Index: components/subresource_filter/core/browser/subresource_filter_features.cc
|
| diff --git a/components/subresource_filter/core/browser/subresource_filter_features.cc b/components/subresource_filter/core/browser/subresource_filter_features.cc
|
| index acef5adaf65199cd4c78f7f3ddad96d3c9b3ed53..9334170bf0d8187f7547d40c2613c719d1a2cd52 100644
|
| --- a/components/subresource_filter/core/browser/subresource_filter_features.cc
|
| +++ b/components/subresource_filter/core/browser/subresource_filter_features.cc
|
| @@ -8,51 +8,27 @@
|
|
|
| #include "base/metrics/field_trial_params.h"
|
| #include "base/strings/string_number_conversions.h"
|
| +#include "base/strings/string_piece.h"
|
| #include "base/strings/string_split.h"
|
| #include "base/strings/string_util.h"
|
| #include "components/variations/variations_associated_data.h"
|
|
|
| namespace subresource_filter {
|
|
|
| -const base::Feature kSafeBrowsingSubresourceFilter{
|
| - "SubresourceFilter", base::FEATURE_DISABLED_BY_DEFAULT};
|
| -
|
| -const base::Feature kSafeBrowsingSubresourceFilterExperimentalUI{
|
| - "SubresourceFilterExperimentalUI", base::FEATURE_DISABLED_BY_DEFAULT};
|
| -
|
| -const base::Feature kSubresourceFilterSafeBrowsingActivationThrottle{
|
| - "SubresourceFilterSafeBrowsingActivationThrottle",
|
| - base::FEATURE_DISABLED_BY_DEFAULT};
|
| -
|
| -// Legacy name `activation_state` is used in variation parameters.
|
| -const char kActivationLevelParameterName[] = "activation_state";
|
| -const char kActivationLevelDryRun[] = "dryrun";
|
| -const char kActivationLevelEnabled[] = "enabled";
|
| -const char kActivationLevelDisabled[] = "disabled";
|
| -
|
| -const char kActivationScopeParameterName[] = "activation_scope";
|
| -const char kActivationScopeAllSites[] = "all_sites";
|
| -const char kActivationScopeActivationList[] = "activation_list";
|
| -const char kActivationScopeNoSites[] = "no_sites";
|
| -
|
| -const char kActivationListsParameterName[] = "activation_lists";
|
| -const char kActivationListSocialEngineeringAdsInterstitial[] =
|
| - "social_engineering_ads_interstitial";
|
| -const char kActivationListPhishingInterstitial[] = "phishing_interstitial";
|
| -const char kActivationListSubresourceFilter[] = "subresource_filter";
|
| -
|
| -const char kRulesetFlavorParameterName[] = "ruleset_flavor";
|
| -
|
| -const char kPerformanceMeasurementRateParameterName[] =
|
| - "performance_measurement_rate";
|
| -
|
| -const char kSuppressNotificationsParameterName[] = "suppress_notifications";
|
| -
|
| -const char kWhitelistSiteOnReloadParameterName[] = "whitelist_site_on_reload";
|
| +namespace {
|
| +
|
| +std::string TakeVariationParamOrReturnEmpty(
|
| + std::map<std::string, std::string>* params,
|
| + const std::string& key) {
|
| + auto it = params->find(key);
|
| + if (it == params->end())
|
| + return std::string();
|
| + std::string value = std::move(it->second);
|
| + params->erase(it);
|
| + return value;
|
| +}
|
|
|
| -ActivationLevel GetMaximumActivationLevel() {
|
| - std::string activation_level = variations::GetVariationParamValueByFeature(
|
| - kSafeBrowsingSubresourceFilter, kActivationLevelParameterName);
|
| +ActivationLevel ParseActivationLevel(const base::StringPiece activation_level) {
|
| if (base::LowerCaseEqualsASCII(activation_level, kActivationLevelEnabled))
|
| return ActivationLevel::ENABLED;
|
| else if (base::LowerCaseEqualsASCII(activation_level, kActivationLevelDryRun))
|
| @@ -60,9 +36,7 @@ ActivationLevel GetMaximumActivationLevel() {
|
| return ActivationLevel::DISABLED;
|
| }
|
|
|
| -ActivationScope GetCurrentActivationScope() {
|
| - std::string activation_scope = variations::GetVariationParamValueByFeature(
|
| - kSafeBrowsingSubresourceFilter, kActivationScopeParameterName);
|
| +ActivationScope ParseActivationScope(const base::StringPiece activation_scope) {
|
| if (base::LowerCaseEqualsASCII(activation_scope, kActivationScopeAllSites))
|
| return ActivationScope::ALL_SITES;
|
| else if (base::LowerCaseEqualsASCII(activation_scope,
|
| @@ -71,9 +45,7 @@ ActivationScope GetCurrentActivationScope() {
|
| return ActivationScope::NO_SITES;
|
| }
|
|
|
| -ActivationList GetCurrentActivationList() {
|
| - std::string activation_lists = variations::GetVariationParamValueByFeature(
|
| - kSafeBrowsingSubresourceFilter, kActivationListsParameterName);
|
| +ActivationList ParseActivationList(const base::StringPiece activation_lists) {
|
| ActivationList activation_list_type = ActivationList::NONE;
|
| for (const base::StringPiece& activation_list :
|
| base::SplitStringPiece(activation_lists, ",", base::TRIM_WHITESPACE,
|
| @@ -93,31 +65,91 @@ ActivationList GetCurrentActivationList() {
|
| return activation_list_type;
|
| }
|
|
|
| -double GetPerformanceMeasurementRate() {
|
| - const std::string rate = variations::GetVariationParamValueByFeature(
|
| - kSafeBrowsingSubresourceFilter, kPerformanceMeasurementRateParameterName);
|
| +double ParsePerformanceMeasurementRate(const std::string& rate) {
|
| double value = 0;
|
| if (!base::StringToDouble(rate, &value) || value < 0)
|
| return 0;
|
| return value < 1 ? value : 1;
|
| }
|
|
|
| -bool ShouldSuppressNotifications() {
|
| - return base::GetFieldTrialParamByFeatureAsBool(
|
| - kSafeBrowsingSubresourceFilter, kSuppressNotificationsParameterName,
|
| - false /* default value */);
|
| +bool ParseBool(const base::StringPiece value) {
|
| + return base::LowerCaseEqualsASCII(value, "true");
|
| }
|
|
|
| -std::string GetRulesetFlavor() {
|
| - return variations::GetVariationParamValueByFeature(
|
| - subresource_filter::kSafeBrowsingSubresourceFilter,
|
| - subresource_filter::kRulesetFlavorParameterName);
|
| -}
|
| +} // namespace
|
| +
|
| +const base::Feature kSafeBrowsingSubresourceFilter{
|
| + "SubresourceFilter", base::FEATURE_DISABLED_BY_DEFAULT};
|
| +
|
| +const base::Feature kSafeBrowsingSubresourceFilterExperimentalUI{
|
| + "SubresourceFilterExperimentalUI", base::FEATURE_DISABLED_BY_DEFAULT};
|
| +
|
| +const base::Feature kSubresourceFilterSafeBrowsingActivationThrottle{
|
| + "SubresourceFilterSafeBrowsingActivationThrottle",
|
| + base::FEATURE_DISABLED_BY_DEFAULT};
|
| +
|
| +// Legacy name `activation_state` is used in variation parameters.
|
| +const char kActivationLevelParameterName[] = "activation_state";
|
| +const char kActivationLevelDryRun[] = "dryrun";
|
| +const char kActivationLevelEnabled[] = "enabled";
|
| +const char kActivationLevelDisabled[] = "disabled";
|
| +
|
| +const char kActivationScopeParameterName[] = "activation_scope";
|
| +const char kActivationScopeAllSites[] = "all_sites";
|
| +const char kActivationScopeActivationList[] = "activation_list";
|
| +const char kActivationScopeNoSites[] = "no_sites";
|
| +
|
| +const char kActivationListsParameterName[] = "activation_lists";
|
| +const char kActivationListSocialEngineeringAdsInterstitial[] =
|
| + "social_engineering_ads_interstitial";
|
| +const char kActivationListPhishingInterstitial[] = "phishing_interstitial";
|
| +const char kActivationListSubresourceFilter[] = "subresource_filter";
|
| +
|
| +const char kRulesetFlavorParameterName[] = "ruleset_flavor";
|
| +
|
| +const char kPerformanceMeasurementRateParameterName[] =
|
| + "performance_measurement_rate";
|
| +
|
| +const char kSuppressNotificationsParameterName[] = "suppress_notifications";
|
| +
|
| +const char kWhitelistSiteOnReloadParameterName[] = "whitelist_site_on_reload";
|
| +
|
| +Configuration::Configuration() = default;
|
| +Configuration::~Configuration() = default;
|
| +Configuration::Configuration(Configuration&&) = default;
|
| +Configuration& Configuration::operator=(Configuration&&) = default;
|
| +
|
| +Configuration GetActiveConfiguration() {
|
| + Configuration active_configuration;
|
| +
|
| + std::map<std::string, std::string> params;
|
| + base::GetFieldTrialParamsByFeature(kSafeBrowsingSubresourceFilter, ¶ms);
|
| +
|
| + active_configuration.activation_level = ParseActivationLevel(
|
| + TakeVariationParamOrReturnEmpty(¶ms, kActivationLevelParameterName));
|
| +
|
| + active_configuration.activation_scope = ParseActivationScope(
|
| + TakeVariationParamOrReturnEmpty(¶ms, kActivationScopeParameterName));
|
| +
|
| + active_configuration.activation_list = ParseActivationList(
|
| + TakeVariationParamOrReturnEmpty(¶ms, kActivationListsParameterName));
|
| +
|
| + active_configuration.performance_measurement_rate =
|
| + ParsePerformanceMeasurementRate(TakeVariationParamOrReturnEmpty(
|
| + ¶ms, kPerformanceMeasurementRateParameterName));
|
| +
|
| + active_configuration.should_suppress_notifications =
|
| + ParseBool(TakeVariationParamOrReturnEmpty(
|
| + ¶ms, kSuppressNotificationsParameterName));
|
| +
|
| + active_configuration.ruleset_flavor =
|
| + TakeVariationParamOrReturnEmpty(¶ms, kRulesetFlavorParameterName);
|
| +
|
| + active_configuration.should_whitelist_site_on_reload =
|
| + ParseBool(TakeVariationParamOrReturnEmpty(
|
| + ¶ms, kWhitelistSiteOnReloadParameterName));
|
|
|
| -bool ShouldWhitelistSiteOnReload() {
|
| - return base::GetFieldTrialParamByFeatureAsBool(
|
| - kSafeBrowsingSubresourceFilter, kWhitelistSiteOnReloadParameterName,
|
| - false /* default value */);
|
| + return active_configuration;
|
| }
|
|
|
| } // namespace subresource_filter
|
|
|