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 8fc2540d9ca7088d99ad35643c5d26a33376c8ae..2ad875eaf25275bec0c8c68ff3c1a123e4b6cfe5 100644 |
--- a/components/subresource_filter/core/browser/subresource_filter_features.cc |
+++ b/components/subresource_filter/core/browser/subresource_filter_features.cc |
@@ -8,47 +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}; |
- |
-// 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)) |
@@ -56,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, |
@@ -67,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, |
@@ -89,31 +65,87 @@ 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}; |
+ |
+// 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 |