Index: components/subresource_filter/core/browser/subresource_filter_features.h |
diff --git a/components/subresource_filter/core/browser/subresource_filter_features.h b/components/subresource_filter/core/browser/subresource_filter_features.h |
index 9ac8d317cb60586a5cc86c2396b55ef1d97e2e42..487d08390a681f723530807ac783f13d4fc0459f 100644 |
--- a/components/subresource_filter/core/browser/subresource_filter_features.h |
+++ b/components/subresource_filter/core/browser/subresource_filter_features.h |
@@ -6,6 +6,8 @@ |
#define COMPONENTS_SUBRESOURCE_FILTER_CORE_BROWSER_SUBRESOURCE_FILTER_FEATURES_H_ |
#include "base/feature_list.h" |
+#include "base/macros.h" |
+#include "base/memory/ref_counted.h" |
#include "components/subresource_filter/core/common/activation_level.h" |
#include "components/subresource_filter/core/common/activation_list.h" |
#include "components/subresource_filter/core/common/activation_scope.h" |
@@ -53,8 +55,37 @@ struct Configuration { |
bool should_whitelist_site_on_reload = false; |
}; |
-// Retrieves the subresource filtering configuration to use. Expensive to call. |
-Configuration GetActiveConfiguration(); |
+// TODO(engedy): Make this an actual list once all call sites are prepared to |
+// handle multiple simultaneous configurations. |
+class ConfigurationList : public base::RefCountedThreadSafe<ConfigurationList> { |
+ public: |
+ ConfigurationList(Configuration config); |
Sorin Jianu
2017/04/24 21:58:59
explicit?
engedy
2017/04/25 08:34:24
Done.
|
+ |
+ const Configuration& the_one_and_only() const { return config_; } |
+ |
+ private: |
+ friend class base::RefCountedThreadSafe<ConfigurationList>; |
+ ~ConfigurationList(); |
+ |
+ const Configuration config_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ConfigurationList); |
+}; |
+ |
+// Retrieves all currently enabled subresource filtering configurations. The |
+// configurations are parsed on first access and then the result is cached. |
+// |
+// In tests, however, the config may change in-between navigations, so callers |
+// should not hold on to the result for long. |
+scoped_refptr<ConfigurationList> GetActiveConfigurations(); |
+ |
+namespace testing { |
+ |
+// Clears the cached active ConfigurationList so that it will be recomputed on |
+// next access. Used in tests when the variation parameters are altered. |
+void ClearCachedActiveConfigurations(); |
+ |
+} // namespace testing |
// Feature and variation parameter definitions ------------------------------- |