| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 BASE_FEATURE_LIST_H_ | 5 #ifndef BASE_FEATURE_LIST_H_ |
| 6 #define BASE_FEATURE_LIST_H_ | 6 #define BASE_FEATURE_LIST_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 class BASE_EXPORT FeatureList { | 77 class BASE_EXPORT FeatureList { |
| 78 public: | 78 public: |
| 79 FeatureList(); | 79 FeatureList(); |
| 80 ~FeatureList(); | 80 ~FeatureList(); |
| 81 | 81 |
| 82 // Initializes feature overrides via command-line flags |enable_features| and | 82 // Initializes feature overrides via command-line flags |enable_features| and |
| 83 // |disable_features|, each of which is a comma-separated list of features to | 83 // |disable_features|, each of which is a comma-separated list of features to |
| 84 // enable or disable, respectively. If a feature appears on both lists, then | 84 // enable or disable, respectively. If a feature appears on both lists, then |
| 85 // it will be disabled. If a list entry has the format "FeatureName<TrialName" | 85 // it will be disabled. If a list entry has the format "FeatureName<TrialName" |
| 86 // then this initialization will also associate the feature state override | 86 // then this initialization will also associate the feature state override |
| 87 // with the named field trial, if it exists. Must only be invoked during the | 87 // with the named field trial, if it exists. If a feature name is prefixed |
| 88 // initialization phase (before FinalizeInitialization() has been called). | 88 // with the '*' character, it will be created with OVERRIDE_USE_DEFAULT - |
| 89 // which is useful for associating with a trial while using the default state. |
| 90 // Must only be invoked during the initialization phase (before |
| 91 // FinalizeInitialization() has been called). |
| 89 void InitializeFromCommandLine(const std::string& enable_features, | 92 void InitializeFromCommandLine(const std::string& enable_features, |
| 90 const std::string& disable_features); | 93 const std::string& disable_features); |
| 91 | 94 |
| 92 // Specifies whether a feature override enables or disables the feature. | 95 // Specifies whether a feature override enables or disables the feature. |
| 93 enum OverrideState { | 96 enum OverrideState { |
| 94 OVERRIDE_USE_DEFAULT, | 97 OVERRIDE_USE_DEFAULT, |
| 95 OVERRIDE_DISABLE_FEATURE, | 98 OVERRIDE_DISABLE_FEATURE, |
| 96 OVERRIDE_ENABLE_FEATURE, | 99 OVERRIDE_ENABLE_FEATURE, |
| 97 }; | 100 }; |
| 98 | 101 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 119 // called but before the instance is registered via SetInstance(). | 122 // called but before the instance is registered via SetInstance(). |
| 120 void RegisterFieldTrialOverride(const std::string& feature_name, | 123 void RegisterFieldTrialOverride(const std::string& feature_name, |
| 121 OverrideState override_state, | 124 OverrideState override_state, |
| 122 FieldTrial* field_trial); | 125 FieldTrial* field_trial); |
| 123 | 126 |
| 124 // Returns comma-separated lists of feature names (in the same format that is | 127 // Returns comma-separated lists of feature names (in the same format that is |
| 125 // accepted by InitializeFromCommandLine()) corresponding to features that | 128 // accepted by InitializeFromCommandLine()) corresponding to features that |
| 126 // have been overridden - either through command-line or via FieldTrials. For | 129 // have been overridden - either through command-line or via FieldTrials. For |
| 127 // those features that have an associated FieldTrial, the output entry will be | 130 // those features that have an associated FieldTrial, the output entry will be |
| 128 // of the format "FeatureName<TrialName", where "TrialName" is the name of the | 131 // of the format "FeatureName<TrialName", where "TrialName" is the name of the |
| 129 // FieldTrial. Must be called only after the instance has been initialized and | 132 // FieldTrial. Features that have overrides with OVERRIDE_USE_DEFAULT will be |
| 130 // registered. | 133 // added to |enable_overrides| with a '*' character prefix. Must be called |
| 134 // only after the instance has been initialized and registered. |
| 131 void GetFeatureOverrides(std::string* enable_overrides, | 135 void GetFeatureOverrides(std::string* enable_overrides, |
| 132 std::string* disable_overrides); | 136 std::string* disable_overrides); |
| 133 | 137 |
| 134 // Returns whether the given |feature| is enabled. Must only be called after | 138 // Returns whether the given |feature| is enabled. Must only be called after |
| 135 // the singleton instance has been registered via SetInstance(). Additionally, | 139 // the singleton instance has been registered via SetInstance(). Additionally, |
| 136 // a feature with a given name must only have a single corresponding Feature | 140 // a feature with a given name must only have a single corresponding Feature |
| 137 // struct, which is checked in builds with DCHECKs enabled. | 141 // struct, which is checked in builds with DCHECKs enabled. |
| 138 static bool IsEnabled(const Feature& feature); | 142 static bool IsEnabled(const Feature& feature); |
| 139 | 143 |
| 140 // Splits a comma-separated string containing feature names into a vector. | 144 // Splits a comma-separated string containing feature names into a vector. |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 // Whether this object has been fully initialized. This gets set to true as a | 234 // Whether this object has been fully initialized. This gets set to true as a |
| 231 // result of FinalizeInitialization(). | 235 // result of FinalizeInitialization(). |
| 232 bool initialized_; | 236 bool initialized_; |
| 233 | 237 |
| 234 DISALLOW_COPY_AND_ASSIGN(FeatureList); | 238 DISALLOW_COPY_AND_ASSIGN(FeatureList); |
| 235 }; | 239 }; |
| 236 | 240 |
| 237 } // namespace base | 241 } // namespace base |
| 238 | 242 |
| 239 #endif // BASE_FEATURE_LIST_H_ | 243 #endif // BASE_FEATURE_LIST_H_ |
| OLD | NEW |