Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(186)

Side by Side Diff: components/subresource_filter/core/browser/subresource_filter_features.cc

Issue 2798983002: Introduce subresource_filter::Configuration. (Closed)
Patch Set: Rebase. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/subresource_filter/core/browser/subresource_filter_features .h" 5 #include "components/subresource_filter/core/browser/subresource_filter_features .h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/metrics/field_trial_params.h" 9 #include "base/metrics/field_trial_params.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
11 #include "base/strings/string_piece.h"
11 #include "base/strings/string_split.h" 12 #include "base/strings/string_split.h"
12 #include "base/strings/string_util.h" 13 #include "base/strings/string_util.h"
13 #include "components/variations/variations_associated_data.h" 14 #include "components/variations/variations_associated_data.h"
14 15
15 namespace subresource_filter { 16 namespace subresource_filter {
16 17
17 const base::Feature kSafeBrowsingSubresourceFilter{ 18 namespace {
18 "SubresourceFilter", base::FEATURE_DISABLED_BY_DEFAULT};
19 19
20 const base::Feature kSafeBrowsingSubresourceFilterExperimentalUI{ 20 std::string TakeVariationParamOrReturnEmpty(
21 "SubresourceFilterExperimentalUI", base::FEATURE_DISABLED_BY_DEFAULT}; 21 std::map<std::string, std::string>* params,
22 const std::string& key) {
23 auto it = params->find(key);
24 if (it == params->end())
25 return std::string();
26 std::string value = std::move(it->second);
27 params->erase(it);
28 return value;
29 }
22 30
23 // Legacy name `activation_state` is used in variation parameters. 31 ActivationLevel ParseActivationLevel(const base::StringPiece activation_level) {
24 const char kActivationLevelParameterName[] = "activation_state";
25 const char kActivationLevelDryRun[] = "dryrun";
26 const char kActivationLevelEnabled[] = "enabled";
27 const char kActivationLevelDisabled[] = "disabled";
28
29 const char kActivationScopeParameterName[] = "activation_scope";
30 const char kActivationScopeAllSites[] = "all_sites";
31 const char kActivationScopeActivationList[] = "activation_list";
32 const char kActivationScopeNoSites[] = "no_sites";
33
34 const char kActivationListsParameterName[] = "activation_lists";
35 const char kActivationListSocialEngineeringAdsInterstitial[] =
36 "social_engineering_ads_interstitial";
37 const char kActivationListPhishingInterstitial[] = "phishing_interstitial";
38 const char kActivationListSubresourceFilter[] = "subresource_filter";
39
40 const char kRulesetFlavorParameterName[] = "ruleset_flavor";
41
42 const char kPerformanceMeasurementRateParameterName[] =
43 "performance_measurement_rate";
44
45 const char kSuppressNotificationsParameterName[] = "suppress_notifications";
46
47 const char kWhitelistSiteOnReloadParameterName[] = "whitelist_site_on_reload";
48
49 ActivationLevel GetMaximumActivationLevel() {
50 std::string activation_level = variations::GetVariationParamValueByFeature(
51 kSafeBrowsingSubresourceFilter, kActivationLevelParameterName);
52 if (base::LowerCaseEqualsASCII(activation_level, kActivationLevelEnabled)) 32 if (base::LowerCaseEqualsASCII(activation_level, kActivationLevelEnabled))
53 return ActivationLevel::ENABLED; 33 return ActivationLevel::ENABLED;
54 else if (base::LowerCaseEqualsASCII(activation_level, kActivationLevelDryRun)) 34 else if (base::LowerCaseEqualsASCII(activation_level, kActivationLevelDryRun))
55 return ActivationLevel::DRYRUN; 35 return ActivationLevel::DRYRUN;
56 return ActivationLevel::DISABLED; 36 return ActivationLevel::DISABLED;
57 } 37 }
58 38
59 ActivationScope GetCurrentActivationScope() { 39 ActivationScope ParseActivationScope(const base::StringPiece activation_scope) {
60 std::string activation_scope = variations::GetVariationParamValueByFeature(
61 kSafeBrowsingSubresourceFilter, kActivationScopeParameterName);
62 if (base::LowerCaseEqualsASCII(activation_scope, kActivationScopeAllSites)) 40 if (base::LowerCaseEqualsASCII(activation_scope, kActivationScopeAllSites))
63 return ActivationScope::ALL_SITES; 41 return ActivationScope::ALL_SITES;
64 else if (base::LowerCaseEqualsASCII(activation_scope, 42 else if (base::LowerCaseEqualsASCII(activation_scope,
65 kActivationScopeActivationList)) 43 kActivationScopeActivationList))
66 return ActivationScope::ACTIVATION_LIST; 44 return ActivationScope::ACTIVATION_LIST;
67 return ActivationScope::NO_SITES; 45 return ActivationScope::NO_SITES;
68 } 46 }
69 47
70 ActivationList GetCurrentActivationList() { 48 ActivationList ParseActivationList(const base::StringPiece activation_lists) {
71 std::string activation_lists = variations::GetVariationParamValueByFeature(
72 kSafeBrowsingSubresourceFilter, kActivationListsParameterName);
73 ActivationList activation_list_type = ActivationList::NONE; 49 ActivationList activation_list_type = ActivationList::NONE;
74 for (const base::StringPiece& activation_list : 50 for (const base::StringPiece& activation_list :
75 base::SplitStringPiece(activation_lists, ",", base::TRIM_WHITESPACE, 51 base::SplitStringPiece(activation_lists, ",", base::TRIM_WHITESPACE,
76 base::SPLIT_WANT_NONEMPTY)) { 52 base::SPLIT_WANT_NONEMPTY)) {
77 if (base::LowerCaseEqualsASCII(activation_list, 53 if (base::LowerCaseEqualsASCII(activation_list,
78 kActivationListPhishingInterstitial)) { 54 kActivationListPhishingInterstitial)) {
79 return ActivationList::PHISHING_INTERSTITIAL; 55 return ActivationList::PHISHING_INTERSTITIAL;
80 } else if (base::LowerCaseEqualsASCII( 56 } else if (base::LowerCaseEqualsASCII(
81 activation_list, 57 activation_list,
82 kActivationListSocialEngineeringAdsInterstitial)) { 58 kActivationListSocialEngineeringAdsInterstitial)) {
83 activation_list_type = ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL; 59 activation_list_type = ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL;
84 } else if (base::LowerCaseEqualsASCII(activation_list, 60 } else if (base::LowerCaseEqualsASCII(activation_list,
85 kActivationListSubresourceFilter)) { 61 kActivationListSubresourceFilter)) {
86 activation_list_type = ActivationList::SUBRESOURCE_FILTER; 62 activation_list_type = ActivationList::SUBRESOURCE_FILTER;
87 } 63 }
88 } 64 }
89 return activation_list_type; 65 return activation_list_type;
90 } 66 }
91 67
92 double GetPerformanceMeasurementRate() { 68 double ParsePerformanceMeasurementRate(const std::string& rate) {
93 const std::string rate = variations::GetVariationParamValueByFeature(
94 kSafeBrowsingSubresourceFilter, kPerformanceMeasurementRateParameterName);
95 double value = 0; 69 double value = 0;
96 if (!base::StringToDouble(rate, &value) || value < 0) 70 if (!base::StringToDouble(rate, &value) || value < 0)
97 return 0; 71 return 0;
98 return value < 1 ? value : 1; 72 return value < 1 ? value : 1;
99 } 73 }
100 74
101 bool ShouldSuppressNotifications() { 75 bool ParseBool(const base::StringPiece value) {
102 return base::GetFieldTrialParamByFeatureAsBool( 76 return base::LowerCaseEqualsASCII(value, "true");
103 kSafeBrowsingSubresourceFilter, kSuppressNotificationsParameterName,
104 false /* default value */);
105 } 77 }
106 78
107 std::string GetRulesetFlavor() { 79 } // namespace
108 return variations::GetVariationParamValueByFeature(
109 subresource_filter::kSafeBrowsingSubresourceFilter,
110 subresource_filter::kRulesetFlavorParameterName);
111 }
112 80
113 bool ShouldWhitelistSiteOnReload() { 81 const base::Feature kSafeBrowsingSubresourceFilter{
114 return base::GetFieldTrialParamByFeatureAsBool( 82 "SubresourceFilter", base::FEATURE_DISABLED_BY_DEFAULT};
115 kSafeBrowsingSubresourceFilter, kWhitelistSiteOnReloadParameterName, 83
116 false /* default value */); 84 const base::Feature kSafeBrowsingSubresourceFilterExperimentalUI{
85 "SubresourceFilterExperimentalUI", base::FEATURE_DISABLED_BY_DEFAULT};
86
87 // Legacy name `activation_state` is used in variation parameters.
88 const char kActivationLevelParameterName[] = "activation_state";
89 const char kActivationLevelDryRun[] = "dryrun";
90 const char kActivationLevelEnabled[] = "enabled";
91 const char kActivationLevelDisabled[] = "disabled";
92
93 const char kActivationScopeParameterName[] = "activation_scope";
94 const char kActivationScopeAllSites[] = "all_sites";
95 const char kActivationScopeActivationList[] = "activation_list";
96 const char kActivationScopeNoSites[] = "no_sites";
97
98 const char kActivationListsParameterName[] = "activation_lists";
99 const char kActivationListSocialEngineeringAdsInterstitial[] =
100 "social_engineering_ads_interstitial";
101 const char kActivationListPhishingInterstitial[] = "phishing_interstitial";
102 const char kActivationListSubresourceFilter[] = "subresource_filter";
103
104 const char kRulesetFlavorParameterName[] = "ruleset_flavor";
105
106 const char kPerformanceMeasurementRateParameterName[] =
107 "performance_measurement_rate";
108
109 const char kSuppressNotificationsParameterName[] = "suppress_notifications";
110
111 const char kWhitelistSiteOnReloadParameterName[] = "whitelist_site_on_reload";
112
113 Configuration::Configuration() = default;
114 Configuration::~Configuration() = default;
115 Configuration::Configuration(Configuration&&) = default;
116 Configuration& Configuration::operator=(Configuration&&) = default;
117
118 Configuration GetActiveConfiguration() {
119 Configuration active_configuration;
120
121 std::map<std::string, std::string> params;
122 base::GetFieldTrialParamsByFeature(kSafeBrowsingSubresourceFilter, &params);
123
124 active_configuration.activation_level = ParseActivationLevel(
125 TakeVariationParamOrReturnEmpty(&params, kActivationLevelParameterName));
126
127 active_configuration.activation_scope = ParseActivationScope(
128 TakeVariationParamOrReturnEmpty(&params, kActivationScopeParameterName));
129
130 active_configuration.activation_list = ParseActivationList(
131 TakeVariationParamOrReturnEmpty(&params, kActivationListsParameterName));
132
133 active_configuration.performance_measurement_rate =
134 ParsePerformanceMeasurementRate(TakeVariationParamOrReturnEmpty(
135 &params, kPerformanceMeasurementRateParameterName));
136
137 active_configuration.should_suppress_notifications =
138 ParseBool(TakeVariationParamOrReturnEmpty(
139 &params, kSuppressNotificationsParameterName));
140
141 active_configuration.ruleset_flavor =
142 TakeVariationParamOrReturnEmpty(&params, kRulesetFlavorParameterName);
143
144 active_configuration.should_whitelist_site_on_reload =
145 ParseBool(TakeVariationParamOrReturnEmpty(
146 &params, kWhitelistSiteOnReloadParameterName));
147
148 return active_configuration;
117 } 149 }
118 150
119 } // namespace subresource_filter 151 } // namespace subresource_filter
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698