1*6777b538SAndroid Build Coastguard Worker // Copyright 2022 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef BASE_FEATURES_H_ 6*6777b538SAndroid Build Coastguard Worker #define BASE_FEATURES_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include "base/base_export.h" 9*6777b538SAndroid Build Coastguard Worker #include "base/feature_list.h" 10*6777b538SAndroid Build Coastguard Worker #include "base/metrics/field_trial_params.h" 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker namespace base::features { 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Worker // All features in alphabetical order. The features should be documented 15*6777b538SAndroid Build Coastguard Worker // alongside the definition of their values in the .cc file. 16*6777b538SAndroid Build Coastguard Worker 17*6777b538SAndroid Build Coastguard Worker // Alphabetical: 18*6777b538SAndroid Build Coastguard Worker BASE_EXPORT BASE_DECLARE_FEATURE(kEnforceNoExecutableFileHandles); 19*6777b538SAndroid Build Coastguard Worker 20*6777b538SAndroid Build Coastguard Worker BASE_EXPORT BASE_DECLARE_FEATURE(kNotReachedIsFatal); 21*6777b538SAndroid Build Coastguard Worker 22*6777b538SAndroid Build Coastguard Worker BASE_EXPORT BASE_DECLARE_FEATURE(kOptimizeDataUrls); 23*6777b538SAndroid Build Coastguard Worker 24*6777b538SAndroid Build Coastguard Worker BASE_EXPORT BASE_DECLARE_FEATURE(kUseRustJsonParser); 25*6777b538SAndroid Build Coastguard Worker 26*6777b538SAndroid Build Coastguard Worker BASE_EXPORT BASE_DECLARE_FEATURE(kJsonNegativeZero); 27*6777b538SAndroid Build Coastguard Worker 28*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_CHROMEOS) 29*6777b538SAndroid Build Coastguard Worker BASE_EXPORT BASE_DECLARE_FEATURE(kPartialLowEndModeOn3GbDevices); 30*6777b538SAndroid Build Coastguard Worker BASE_EXPORT BASE_DECLARE_FEATURE(kPartialLowEndModeOnMidRangeDevices); 31*6777b538SAndroid Build Coastguard Worker #endif 32*6777b538SAndroid Build Coastguard Worker 33*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_ANDROID) 34*6777b538SAndroid Build Coastguard Worker BASE_EXPORT BASE_DECLARE_FEATURE(kCollectAndroidFrameTimelineMetrics); 35*6777b538SAndroid Build Coastguard Worker #endif 36*6777b538SAndroid Build Coastguard Worker 37*6777b538SAndroid Build Coastguard Worker // Policy for emitting profiler metadata from `ThreadController`. 38*6777b538SAndroid Build Coastguard Worker enum class EmitThreadControllerProfilerMetadata { 39*6777b538SAndroid Build Coastguard Worker // Always emit metadata. 40*6777b538SAndroid Build Coastguard Worker kForce, 41*6777b538SAndroid Build Coastguard Worker // Emit metadata only if enabled via the `FeatureList`. 42*6777b538SAndroid Build Coastguard Worker kFeatureDependent, 43*6777b538SAndroid Build Coastguard Worker }; 44*6777b538SAndroid Build Coastguard Worker 45*6777b538SAndroid Build Coastguard Worker // Initializes global variables that depend on `FeatureList`. Must be invoked 46*6777b538SAndroid Build Coastguard Worker // early on process startup, but after `FeatureList` initialization. Different 47*6777b538SAndroid Build Coastguard Worker // parts of //base read experiment state from global variables instead of 48*6777b538SAndroid Build Coastguard Worker // directly from `FeatureList` to avoid data races (default values are used 49*6777b538SAndroid Build Coastguard Worker // before this function is called to initialize the global variables). 50*6777b538SAndroid Build Coastguard Worker BASE_EXPORT void Init(EmitThreadControllerProfilerMetadata 51*6777b538SAndroid Build Coastguard Worker emit_thread_controller_profiler_metadata); 52*6777b538SAndroid Build Coastguard Worker 53*6777b538SAndroid Build Coastguard Worker } // namespace base::features 54*6777b538SAndroid Build Coastguard Worker 55*6777b538SAndroid Build Coastguard Worker #endif // BASE_FEATURES_H_ 56