| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef BASE_FEATURES_H_ |
| #define BASE_FEATURES_H_ |
| |
| #include "base/base_export.h" |
| #include "base/feature_list.h" |
| #include "base/metrics/field_trial_params.h" |
| |
| namespace base::features { |
| |
| // All features in alphabetical order. The features should be documented |
| // alongside the definition of their values in the .cc file. |
| |
| // Alphabetical: |
| BASE_EXPORT BASE_DECLARE_FEATURE(kEnforceNoExecutableFileHandles); |
| |
| BASE_EXPORT BASE_DECLARE_FEATURE(kNotReachedIsFatal); |
| |
| BASE_EXPORT BASE_DECLARE_FEATURE(kOptimizeDataUrls); |
| |
| BASE_EXPORT BASE_DECLARE_FEATURE(kUseRustJsonParser); |
| |
| BASE_EXPORT BASE_DECLARE_FEATURE(kJsonNegativeZero); |
| |
| #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_CHROMEOS) |
| BASE_EXPORT BASE_DECLARE_FEATURE(kPartialLowEndModeOn3GbDevices); |
| BASE_EXPORT BASE_DECLARE_FEATURE(kPartialLowEndModeOnMidRangeDevices); |
| #endif |
| |
| #if BUILDFLAG(IS_ANDROID) |
| BASE_EXPORT BASE_DECLARE_FEATURE(kCollectAndroidFrameTimelineMetrics); |
| #endif |
| |
| // Policy for emitting profiler metadata from `ThreadController`. |
| enum class EmitThreadControllerProfilerMetadata { |
| // Always emit metadata. |
| kForce, |
| // Emit metadata only if enabled via the `FeatureList`. |
| kFeatureDependent, |
| }; |
| |
| // Initializes global variables that depend on `FeatureList`. Must be invoked |
| // early on process startup, but after `FeatureList` initialization. Different |
| // parts of //base read experiment state from global variables instead of |
| // directly from `FeatureList` to avoid data races (default values are used |
| // before this function is called to initialize the global variables). |
| BASE_EXPORT void Init(EmitThreadControllerProfilerMetadata |
| emit_thread_controller_profiler_metadata); |
| |
| } // namespace base::features |
| |
| #endif // BASE_FEATURES_H_ |