diff options
Diffstat (limited to 'chromium/components/subresource_filter/core/browser/subresource_filter_features.cc')
-rw-r--r-- | chromium/components/subresource_filter/core/browser/subresource_filter_features.cc | 143 |
1 files changed, 91 insertions, 52 deletions
diff --git a/chromium/components/subresource_filter/core/browser/subresource_filter_features.cc b/chromium/components/subresource_filter/core/browser/subresource_filter_features.cc index ef13cad4bc4..2ad875eaf25 100644 --- a/chromium/components/subresource_filter/core/browser/subresource_filter_features.cc +++ b/chromium/components/subresource_filter/core/browser/subresource_filter_features.cc @@ -8,43 +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}; - -// 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 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)) @@ -52,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, @@ -63,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, @@ -77,36 +57,95 @@ ActivationList GetCurrentActivationList() { activation_list, kActivationListSocialEngineeringAdsInterstitial)) { activation_list_type = ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL; + } else if (base::LowerCaseEqualsASCII(activation_list, + kActivationListSubresourceFilter)) { + activation_list_type = ActivationList::SUBRESOURCE_FILTER; } } 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}; + +// 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 |