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

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

Issue 2798983002: Introduce subresource_filter::Configuration. (Closed)
Patch Set: Workaround 2. 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 base::StringPiece GetVariationParamOrEmpty(
Charlie Harrison 2017/04/05 20:43:04 A little odd to have this return a non-owning Stri
engedy 2017/04/07 08:40:58 Indeed. I reworked this slightly, what do you thin
21 "SubresourceFilterExperimentalUI", base::FEATURE_DISABLED_BY_DEFAULT}; 21 const std::map<std::string, std::string>& params,
22 const std::string& key) {
23 auto it = params.find(key);
24 return it != params.end() ? it->second : base::StringPiece();
25 }
22 26
23 const base::Feature kSubresourceFilterSafeBrowsingActivationThrottle{ 27 ActivationLevel ParseActivationLevel(const base::StringPiece activation_level) {
24 "SubresourceFilterSafeBrowsingActivationThrottle",
25 base::FEATURE_DISABLED_BY_DEFAULT};
26
27 // Legacy name `activation_state` is used in variation parameters.
28 const char kActivationLevelParameterName[] = "activation_state";
29 const char kActivationLevelDryRun[] = "dryrun";
30 const char kActivationLevelEnabled[] = "enabled";
31 const char kActivationLevelDisabled[] = "disabled";
32
33 const char kActivationScopeParameterName[] = "activation_scope";
34 const char kActivationScopeAllSites[] = "all_sites";
35 const char kActivationScopeActivationList[] = "activation_list";
36 const char kActivationScopeNoSites[] = "no_sites";
37
38 const char kActivationListsParameterName[] = "activation_lists";
39 const char kActivationListSocialEngineeringAdsInterstitial[] =
40 "social_engineering_ads_interstitial";
41 const char kActivationListPhishingInterstitial[] = "phishing_interstitial";
42 const char kActivationListSubresourceFilter[] = "subresource_filter";
43
44 const char kRulesetFlavorParameterName[] = "ruleset_flavor";
45
46 const char kPerformanceMeasurementRateParameterName[] =
47 "performance_measurement_rate";
48
49 const char kSuppressNotificationsParameterName[] = "suppress_notifications";
50
51 const char kWhitelistSiteOnReloadParameterName[] = "whitelist_site_on_reload";
52
53 ActivationLevel GetMaximumActivationLevel() {
54 std::string activation_level = variations::GetVariationParamValueByFeature(
55 kSafeBrowsingSubresourceFilter, kActivationLevelParameterName);
56 if (base::LowerCaseEqualsASCII(activation_level, kActivationLevelEnabled)) 28 if (base::LowerCaseEqualsASCII(activation_level, kActivationLevelEnabled))
57 return ActivationLevel::ENABLED; 29 return ActivationLevel::ENABLED;
58 else if (base::LowerCaseEqualsASCII(activation_level, kActivationLevelDryRun)) 30 else if (base::LowerCaseEqualsASCII(activation_level, kActivationLevelDryRun))
59 return ActivationLevel::DRYRUN; 31 return ActivationLevel::DRYRUN;
60 return ActivationLevel::DISABLED; 32 return ActivationLevel::DISABLED;
61 } 33 }
62 34
63 ActivationScope GetCurrentActivationScope() { 35 ActivationScope ParseActivationScope(const base::StringPiece activation_scope) {
64 std::string activation_scope = variations::GetVariationParamValueByFeature(
65 kSafeBrowsingSubresourceFilter, kActivationScopeParameterName);
66 if (base::LowerCaseEqualsASCII(activation_scope, kActivationScopeAllSites)) 36 if (base::LowerCaseEqualsASCII(activation_scope, kActivationScopeAllSites))
67 return ActivationScope::ALL_SITES; 37 return ActivationScope::ALL_SITES;
68 else if (base::LowerCaseEqualsASCII(activation_scope, 38 else if (base::LowerCaseEqualsASCII(activation_scope,
69 kActivationScopeActivationList)) 39 kActivationScopeActivationList))
70 return ActivationScope::ACTIVATION_LIST; 40 return ActivationScope::ACTIVATION_LIST;
71 return ActivationScope::NO_SITES; 41 return ActivationScope::NO_SITES;
72 } 42 }
73 43
74 ActivationList GetCurrentActivationList() { 44 ActivationList ParseActivationList(const base::StringPiece activation_lists) {
75 std::string activation_lists = variations::GetVariationParamValueByFeature(
76 kSafeBrowsingSubresourceFilter, kActivationListsParameterName);
77 ActivationList activation_list_type = ActivationList::NONE; 45 ActivationList activation_list_type = ActivationList::NONE;
78 for (const base::StringPiece& activation_list : 46 for (const base::StringPiece& activation_list :
79 base::SplitStringPiece(activation_lists, ",", base::TRIM_WHITESPACE, 47 base::SplitStringPiece(activation_lists, ",", base::TRIM_WHITESPACE,
80 base::SPLIT_WANT_NONEMPTY)) { 48 base::SPLIT_WANT_NONEMPTY)) {
81 if (base::LowerCaseEqualsASCII(activation_list, 49 if (base::LowerCaseEqualsASCII(activation_list,
82 kActivationListPhishingInterstitial)) { 50 kActivationListPhishingInterstitial)) {
83 return ActivationList::PHISHING_INTERSTITIAL; 51 return ActivationList::PHISHING_INTERSTITIAL;
84 } else if (base::LowerCaseEqualsASCII( 52 } else if (base::LowerCaseEqualsASCII(
85 activation_list, 53 activation_list,
86 kActivationListSocialEngineeringAdsInterstitial)) { 54 kActivationListSocialEngineeringAdsInterstitial)) {
87 activation_list_type = ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL; 55 activation_list_type = ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL;
88 } else if (base::LowerCaseEqualsASCII(activation_list, 56 } else if (base::LowerCaseEqualsASCII(activation_list,
89 kActivationListSubresourceFilter)) { 57 kActivationListSubresourceFilter)) {
90 activation_list_type = ActivationList::SUBRESOURCE_FILTER; 58 activation_list_type = ActivationList::SUBRESOURCE_FILTER;
91 } 59 }
92 } 60 }
93 return activation_list_type; 61 return activation_list_type;
94 } 62 }
95 63
96 double GetPerformanceMeasurementRate() { 64 double ParsePerformanceMeasurementRate(const base::StringPiece rate) {
97 const std::string rate = variations::GetVariationParamValueByFeature(
98 kSafeBrowsingSubresourceFilter, kPerformanceMeasurementRateParameterName);
99 double value = 0; 65 double value = 0;
100 if (!base::StringToDouble(rate, &value) || value < 0) 66 // TODO(engedy): Refactor StringToDouble to take a StringPiece.
67 if (!base::StringToDouble(rate.as_string(), &value) || value < 0)
101 return 0; 68 return 0;
102 return value < 1 ? value : 1; 69 return value < 1 ? value : 1;
103 } 70 }
104 71
105 bool ShouldSuppressNotifications() { 72 bool ParseBool(const base::StringPiece value) {
106 return base::GetFieldTrialParamByFeatureAsBool( 73 return base::LowerCaseEqualsASCII(value, "true");
107 kSafeBrowsingSubresourceFilter, kSuppressNotificationsParameterName,
108 false /* default value */);
109 } 74 }
110 75
111 std::string GetRulesetFlavor() { 76 } // namespace
112 return variations::GetVariationParamValueByFeature(
113 subresource_filter::kSafeBrowsingSubresourceFilter,
114 subresource_filter::kRulesetFlavorParameterName);
115 }
116 77
117 bool ShouldWhitelistSiteOnReload() { 78 const base::Feature kSafeBrowsingSubresourceFilter{
118 return base::GetFieldTrialParamByFeatureAsBool( 79 "SubresourceFilter", base::FEATURE_DISABLED_BY_DEFAULT};
119 kSafeBrowsingSubresourceFilter, kWhitelistSiteOnReloadParameterName, 80
120 false /* default value */); 81 const base::Feature kSafeBrowsingSubresourceFilterExperimentalUI{
82 "SubresourceFilterExperimentalUI", base::FEATURE_DISABLED_BY_DEFAULT};
83
84 const base::Feature kSubresourceFilterSafeBrowsingActivationThrottle{
85 "SubresourceFilterSafeBrowsingActivationThrottle",
86 base::FEATURE_DISABLED_BY_DEFAULT};
87
88 // Legacy name `activation_state` is used in variation parameters.
89 const char kActivationLevelParameterName[] = "activation_state";
90 const char kActivationLevelDryRun[] = "dryrun";
91 const char kActivationLevelEnabled[] = "enabled";
92 const char kActivationLevelDisabled[] = "disabled";
93
94 const char kActivationScopeParameterName[] = "activation_scope";
95 const char kActivationScopeAllSites[] = "all_sites";
96 const char kActivationScopeActivationList[] = "activation_list";
97 const char kActivationScopeNoSites[] = "no_sites";
98
99 const char kActivationListsParameterName[] = "activation_lists";
100 const char kActivationListSocialEngineeringAdsInterstitial[] =
101 "social_engineering_ads_interstitial";
102 const char kActivationListPhishingInterstitial[] = "phishing_interstitial";
103 const char kActivationListSubresourceFilter[] = "subresource_filter";
104
105 const char kRulesetFlavorParameterName[] = "ruleset_flavor";
106
107 const char kPerformanceMeasurementRateParameterName[] =
108 "performance_measurement_rate";
109
110 const char kSuppressNotificationsParameterName[] = "suppress_notifications";
111
112 const char kWhitelistSiteOnReloadParameterName[] = "whitelist_site_on_reload";
113
114 Configuration::Configuration() = default;
115 Configuration::~Configuration() = default;
116
117 Configuration GetActiveConfiguration() {
118 Configuration active_configuration;
119
120 std::map<std::string, std::string> params;
121 base::GetFieldTrialParamsByFeature(kSafeBrowsingSubresourceFilter, &params);
122
123 active_configuration.activation_level = ParseActivationLevel(
124 GetVariationParamOrEmpty(params, kActivationLevelParameterName));
125
126 active_configuration.activation_scope = ParseActivationScope(
127 GetVariationParamOrEmpty(params, kActivationScopeParameterName));
128
129 active_configuration.activation_list = ParseActivationList(
130 GetVariationParamOrEmpty(params, kActivationListsParameterName));
131
132 active_configuration.performance_measurement_rate =
133 ParsePerformanceMeasurementRate(GetVariationParamOrEmpty(
134 params, kPerformanceMeasurementRateParameterName));
135
136 active_configuration.should_suppress_notifications = ParseBool(
137 GetVariationParamOrEmpty(params, kSuppressNotificationsParameterName));
138
139 active_configuration.ruleset_flavor =
140 GetVariationParamOrEmpty(params, kRulesetFlavorParameterName).as_string();
141
142 active_configuration.should_whitelist_site_on_reload = ParseBool(
143 GetVariationParamOrEmpty(params, kWhitelistSiteOnReloadParameterName));
144
145 return active_configuration;
121 } 146 }
122 147
123 } // namespace subresource_filter 148 } // namespace subresource_filter
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698