xref: /aosp_15_r20/external/cronet/base/features.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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