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

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

Issue 2838193002: Split the ScopedSubresourceFilterFeatureToggle into two helper classes. (Closed)
Patch Set: Rebase. Created 3 years, 7 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 #ifndef COMPONENTS_SUBRESOURCE_FILTER_CORE_BROWSER_SUBRESOURCE_FILTER_FEATURES_H _ 5 #ifndef COMPONENTS_SUBRESOURCE_FILTER_CORE_BROWSER_SUBRESOURCE_FILTER_FEATURES_H _
6 #define COMPONENTS_SUBRESOURCE_FILTER_CORE_BROWSER_SUBRESOURCE_FILTER_FEATURES_H _ 6 #define COMPONENTS_SUBRESOURCE_FILTER_CORE_BROWSER_SUBRESOURCE_FILTER_FEATURES_H _
7 7
8 #include "base/feature_list.h" 8 #include "base/feature_list.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
11 #include "components/subresource_filter/core/common/activation_level.h" 11 #include "components/subresource_filter/core/common/activation_level.h"
12 #include "components/subresource_filter/core/common/activation_list.h" 12 #include "components/subresource_filter/core/common/activation_list.h"
13 #include "components/subresource_filter/core/common/activation_scope.h" 13 #include "components/subresource_filter/core/common/activation_scope.h"
14 14
15 namespace subresource_filter { 15 namespace subresource_filter {
16 16
17 // Encapsulates all parameters that define how the subresource filter feature 17 // Encapsulates all parameters that define how the subresource filter feature
18 // should operate. 18 // should operate.
19 struct Configuration { 19 struct Configuration {
20 Configuration(); 20 Configuration();
21 Configuration(ActivationLevel activation_level,
22 ActivationScope activation_scope,
23 ActivationList activation_list = ActivationList::NONE);
24 Configuration(Configuration&&);
21 ~Configuration(); 25 ~Configuration();
22 Configuration(Configuration&&);
23 Configuration& operator=(Configuration&&); 26 Configuration& operator=(Configuration&&);
24 27
25 // The maximum degree to which subresource filtering should be activated on 28 // The maximum degree to which subresource filtering should be activated on
26 // any RenderFrame. This will be ActivationLevel::DISABLED unless the feature 29 // any RenderFrame. This will be ActivationLevel::DISABLED unless the feature
27 // is enabled and variation parameters prescribe a higher activation level. 30 // is enabled and variation parameters prescribe a higher activation level.
28 ActivationLevel activation_level = ActivationLevel::DISABLED; 31 ActivationLevel activation_level = ActivationLevel::DISABLED;
29 32
30 // The activation scope. That is, the subset of page loads where subresource 33 // The activation scope. That is, the subset of page loads where subresource
31 // filtering should be activated. This will be ActivationScope::NO_SITES 34 // filtering should be activated. This will be ActivationScope::NO_SITES
32 // unless the feature is =enabled and variation parameters prescribe a wider 35 // unless the feature is =enabled and variation parameters prescribe a wider
33 // activation scope. 36 // activation scope.
34 ActivationScope activation_scope = ActivationScope::NO_SITES; 37 ActivationScope activation_scope = ActivationScope::NO_SITES;
35 38
36 // The activation list to use when the |activation_scope| is ACTIVATION_LIST. 39 // The activation list to use when the |activation_scope| is ACTIVATION_LIST.
37 // This will be ActivationList::NONE unless variation parameters prescribe a 40 // This will be ActivationList::NONE unless variation parameters prescribe a
38 // recognized list. 41 // recognized list.
39 ActivationList activation_list = ActivationList::NONE; 42 ActivationList activation_list = ActivationList::NONE;
40 43
41 // A number in the range [0, 1], indicating the fraction of page loads that 44 // A number in the range [0, 1], indicating the fraction of page loads that
42 // should have extended performance measurements enabled. The rate will 45 // should have extended performance measurements enabled. The rate will
43 // be 0 unless a greater frequency is specified by variation parameters. 46 // be 0 unless a greater frequency is specified by variation parameters.
44 double performance_measurement_rate = 0.0; 47 double performance_measurement_rate = 0.0;
45 48
46 // Whether notifications indicating that a subresource was disallowed should 49 // Whether notifications indicating that a subresource was disallowed should
47 // be suppressed in the UI. 50 // be suppressed in the UI.
48 bool should_suppress_notifications = false; 51 bool should_suppress_notifications = false;
49 52
50 // The ruleset flavor to download through the component updater, or the empty 53 // The ruleset flavor to download through the component updater. This or the
51 // string if the default ruleset should be used. 54 // empty string if the default ruleset should be used.
52 std::string ruleset_flavor; 55 std::string ruleset_flavor;
53 56
54 // Whether to whitelist a site when a page loaded from that site is reloaded. 57 // Whether to whitelist a site when a page loaded from that site is reloaded.
55 bool should_whitelist_site_on_reload = false; 58 bool should_whitelist_site_on_reload = false;
56 }; 59 };
57 60
58 // TODO(engedy): Make this an actual list once all call sites are prepared to 61 // TODO(engedy): Make this an actual list once all call sites are prepared to
59 // handle multiple simultaneous configurations. 62 // handle multiple simultaneous configurations.
60 class ConfigurationList : public base::RefCountedThreadSafe<ConfigurationList> { 63 class ConfigurationList : public base::RefCountedThreadSafe<ConfigurationList> {
61 public: 64 public:
62 explicit ConfigurationList(Configuration config); 65 explicit ConfigurationList(Configuration config);
63 66
64 const Configuration& the_one_and_only() const { return config_; } 67 const Configuration& the_one_and_only() const { return config_; }
65 68
66 private: 69 private:
67 friend class base::RefCountedThreadSafe<ConfigurationList>; 70 friend class base::RefCountedThreadSafe<ConfigurationList>;
68 ~ConfigurationList(); 71 ~ConfigurationList();
69 72
70 const Configuration config_; 73 const Configuration config_;
71 74
72 DISALLOW_COPY_AND_ASSIGN(ConfigurationList); 75 DISALLOW_COPY_AND_ASSIGN(ConfigurationList);
73 }; 76 };
74 77
75 // Retrieves all currently enabled subresource filtering configurations. The 78 // Retrieves all currently enabled subresource filtering configurations. The
76 // configurations are parsed on first access and then the result is cached. 79 // configurations are parsed on first access and then the result is cached.
77 // 80 //
78 // In tests, however, the config may change in-between navigations, so callers 81 // In tests, however, the config may be altered in-between navigations, so
79 // should not hold on to the result for long. 82 // callers should not hold on to the result for long.
80 scoped_refptr<ConfigurationList> GetActiveConfigurations(); 83 scoped_refptr<ConfigurationList> GetActiveConfigurations();
81 84
82 namespace testing { 85 namespace testing {
83 86
84 // Clears the cached active ConfigurationList so that it will be recomputed on 87 // Returns the currently cached active ConfigurationList, if any, and replaces
85 // next access. Used in tests when the variation parameters are altered. 88 // it with |new_configs|, which may be nullptr to clear the cache.
86 void ClearCachedActiveConfigurations(); 89 scoped_refptr<ConfigurationList> GetAndSetActivateConfigurations(
90 scoped_refptr<ConfigurationList> new_configs);
87 91
88 } // namespace testing 92 } // namespace testing
89 93
90 // Feature and variation parameter definitions ------------------------------- 94 // Feature and variation parameter definitions -------------------------------
91 95
92 // The master toggle to enable/disable the Safe Browsing Subresource Filter. 96 // The master toggle to enable/disable the Safe Browsing Subresource Filter.
93 extern const base::Feature kSafeBrowsingSubresourceFilter; 97 extern const base::Feature kSafeBrowsingSubresourceFilter;
94 98
95 // Enables the new experimental UI for the Subresource Filter. 99 // Enables the new experimental UI for the Subresource Filter.
96 extern const base::Feature kSafeBrowsingSubresourceFilterExperimentalUI; 100 extern const base::Feature kSafeBrowsingSubresourceFilterExperimentalUI;
(...skipping 18 matching lines...) Expand all
115 119
116 extern const char kPerformanceMeasurementRateParameterName[]; 120 extern const char kPerformanceMeasurementRateParameterName[];
117 121
118 extern const char kSuppressNotificationsParameterName[]; 122 extern const char kSuppressNotificationsParameterName[];
119 123
120 extern const char kWhitelistSiteOnReloadParameterName[]; 124 extern const char kWhitelistSiteOnReloadParameterName[];
121 125
122 } // namespace subresource_filter 126 } // namespace subresource_filter
123 127
124 #endif // COMPONENTS_SUBRESOURCE_FILTER_CORE_BROWSER_SUBRESOURCE_FILTER_FEATURE S_H_ 128 #endif // COMPONENTS_SUBRESOURCE_FILTER_CORE_BROWSER_SUBRESOURCE_FILTER_FEATURE S_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698