features.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURES_H_
  5. #define THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURES_H_
  6. #include "base/feature_list.h"
  7. #include "base/metrics/field_trial_params.h"
  8. #include "media/media_buildflags.h"
  9. #include "third_party/blink/public/common/buildflags.h"
  10. #include "third_party/blink/public/common/common_export.h"
  11. #include "third_party/blink/public/common/forcedark/forcedark_switches.h"
  12. namespace blink {
  13. namespace features {
  14. BLINK_COMMON_EXPORT extern const base::Feature
  15. kBlockingDownloadsInAdFrameWithoutUserActivation;
  16. BLINK_COMMON_EXPORT extern const base::Feature kPaintHolding;
  17. BLINK_COMMON_EXPORT extern const base::Feature kPaintHoldingCrossOrigin;
  18. BLINK_COMMON_EXPORT extern const base::Feature
  19. kEagerCacheStorageSetupForServiceWorkers;
  20. BLINK_COMMON_EXPORT extern const base::Feature kScriptStreaming;
  21. BLINK_COMMON_EXPORT extern const base::Feature kSmallScriptStreaming;
  22. BLINK_COMMON_EXPORT extern const base::Feature kUserLevelMemoryPressureSignal;
  23. BLINK_COMMON_EXPORT extern const base::Feature kFreezePurgeMemoryAllPagesFrozen;
  24. BLINK_COMMON_EXPORT extern const base::Feature kFreezeUserAgent;
  25. BLINK_COMMON_EXPORT extern const base::Feature kFtpProtocol;
  26. BLINK_COMMON_EXPORT extern const base::Feature kImplicitRootScroller;
  27. BLINK_COMMON_EXPORT extern const base::Feature kCSSOMViewScrollCoordinates;
  28. BLINK_COMMON_EXPORT extern const base::Feature kDisplayLocking;
  29. BLINK_COMMON_EXPORT extern const base::Feature kJSONModules;
  30. BLINK_COMMON_EXPORT extern const base::Feature kForceSynchronousHTMLParsing;
  31. BLINK_COMMON_EXPORT extern const base::Feature kTopLevelAwait;
  32. BLINK_COMMON_EXPORT extern const base::Feature kEditingNG;
  33. BLINK_COMMON_EXPORT extern const base::Feature kLayoutNG;
  34. BLINK_COMMON_EXPORT extern const base::Feature kLayoutNGFieldset;
  35. BLINK_COMMON_EXPORT extern const base::Feature kLayoutNGRuby;
  36. BLINK_COMMON_EXPORT extern const base::Feature kFragmentItem;
  37. BLINK_COMMON_EXPORT extern const base::Feature kMixedContentAutoupgrade;
  38. BLINK_COMMON_EXPORT extern const base::Feature kNavigationPredictor;
  39. BLINK_COMMON_EXPORT extern const base::Feature kParentNodeReplaceChildren;
  40. BLINK_COMMON_EXPORT extern const base::Feature kPlzDedicatedWorker;
  41. BLINK_COMMON_EXPORT extern const base::Feature kPortals;
  42. BLINK_COMMON_EXPORT extern const base::Feature kPortalsCrossOrigin;
  43. BLINK_COMMON_EXPORT extern const base::Feature
  44. kPreviewsResourceLoadingHintsSpecificResourceTypes;
  45. BLINK_COMMON_EXPORT extern const base::Feature
  46. kPurgeRendererMemoryWhenBackgrounded;
  47. BLINK_COMMON_EXPORT extern const base::Feature kRawClipboard;
  48. BLINK_COMMON_EXPORT extern const base::Feature kRTCGetDisplayMedia;
  49. BLINK_COMMON_EXPORT extern const base::Feature kRTCUnifiedPlanByDefault;
  50. BLINK_COMMON_EXPORT extern const base::Feature kRTCOfferExtmapAllowMixed;
  51. BLINK_COMMON_EXPORT extern const base::Feature kV8OptimizeWorkersForPerformance;
  52. BLINK_COMMON_EXPORT extern const base::Feature
  53. kWebMeasureMemoryViaPerformanceManager;
  54. BLINK_COMMON_EXPORT extern const base::Feature kWebRtcMultiplexCodec;
  55. BLINK_COMMON_EXPORT extern const base::Feature kWebRtcHideLocalIpsWithMdns;
  56. BLINK_COMMON_EXPORT extern const base::Feature kIntensiveWakeUpThrottling;
  57. BLINK_COMMON_EXPORT extern const char
  58. kIntensiveWakeUpThrottling_GracePeriodSeconds_Name[];
  59. BLINK_COMMON_EXPORT extern const base::Feature
  60. kOptOutZeroTimeoutTimersFromThrottling;
  61. BLINK_COMMON_EXPORT extern const base::Feature kOptOutWebRTCFromAllThrottling;
  62. #if BUILDFLAG(RTC_USE_H264) && BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS)
  63. BLINK_COMMON_EXPORT extern const base::Feature kWebRtcH264WithOpenH264FFmpeg;
  64. #endif // BUILDFLAG(RTC_USE_H264) && BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS)
  65. BLINK_COMMON_EXPORT extern const base::Feature kResourceLoadViaDataPipe;
  66. BLINK_COMMON_EXPORT extern const base::Feature kServiceWorkerUpdateDelay;
  67. BLINK_COMMON_EXPORT extern const base::Feature kStopInBackground;
  68. BLINK_COMMON_EXPORT extern const base::Feature
  69. kFreezeBackgroundTabOnNetworkIdle;
  70. BLINK_COMMON_EXPORT extern const base::Feature kStopNonTimersInBackground;
  71. BLINK_COMMON_EXPORT extern const base::Feature kStorageAccessAPI;
  72. BLINK_COMMON_EXPORT extern const base::Feature kTextFragmentAnchor;
  73. BLINK_COMMON_EXPORT extern const base::Feature kFontAccess;
  74. BLINK_COMMON_EXPORT extern const base::Feature kFileHandlingAPI;
  75. BLINK_COMMON_EXPORT extern const base::Feature kAllowSyncXHRInPageDismissal;
  76. BLINK_COMMON_EXPORT extern const base::Feature kPrefetchPrivacyChanges;
  77. BLINK_COMMON_EXPORT extern const base::Feature kWebComponentsV0;
  78. BLINK_COMMON_EXPORT extern const char kMixedContentAutoupgradeModeParamName[];
  79. BLINK_COMMON_EXPORT extern const char kMixedContentAutoupgradeModeAllPassive[];
  80. BLINK_COMMON_EXPORT extern const base::Feature kDecodeJpeg420ImagesToYUV;
  81. BLINK_COMMON_EXPORT extern const base::Feature kDecodeLossyWebPImagesToYUV;
  82. BLINK_COMMON_EXPORT extern const base::Feature
  83. kWebFontsCacheAwareTimeoutAdaption;
  84. BLINK_COMMON_EXPORT extern const base::Feature
  85. kBlockingFocusWithoutUserActivation;
  86. BLINK_COMMON_EXPORT extern const base::Feature kAudioWorkletRealtimeThread;
  87. BLINK_COMMON_EXPORT extern const base::Feature kLightweightNoStatePrefetch;
  88. BLINK_COMMON_EXPORT extern const base::Feature kSaveDataImgSrcset;
  89. BLINK_COMMON_EXPORT extern const base::Feature kForceWebContentsDarkMode;
  90. BLINK_COMMON_EXPORT extern const base::FeatureParam<ForceDarkInversionMethod>
  91. kForceDarkInversionMethodParam;
  92. BLINK_COMMON_EXPORT extern const base::FeatureParam<ForceDarkImageBehavior>
  93. kForceDarkImageBehaviorParam;
  94. BLINK_COMMON_EXPORT extern const base::FeatureParam<int>
  95. kForceDarkTextLightnessThresholdParam;
  96. BLINK_COMMON_EXPORT extern const base::FeatureParam<int>
  97. kForceDarkBackgroundLightnessThresholdParam;
  98. // Returns true when PlzDedicatedWorker is enabled.
  99. BLINK_COMMON_EXPORT bool IsPlzDedicatedWorkerEnabled();
  100. BLINK_COMMON_EXPORT extern const base::Feature kWebRtcUseMinMaxVEADimensions;
  101. // Blink garbage collection.
  102. BLINK_COMMON_EXPORT extern const base::Feature kBlinkHeapCompaction;
  103. BLINK_COMMON_EXPORT extern const base::Feature kBlinkHeapConcurrentMarking;
  104. BLINK_COMMON_EXPORT extern const base::Feature kBlinkHeapConcurrentSweeping;
  105. BLINK_COMMON_EXPORT extern const base::Feature kBlinkHeapIncrementalMarking;
  106. BLINK_COMMON_EXPORT extern const base::Feature
  107. kBlinkHeapIncrementalMarkingStress;
  108. BLINK_COMMON_EXPORT extern const base::Feature
  109. kVerifyHTMLFetchedFromAppCacheBeforeDelay;
  110. BLINK_COMMON_EXPORT extern const base::Feature
  111. kBlinkCompositorUseDisplayThreadPriority;
  112. BLINK_COMMON_EXPORT extern const base::Feature
  113. kIgnoreCrossOriginWindowWhenNamedAccessOnWindow;
  114. BLINK_COMMON_EXPORT extern const base::Feature
  115. kLowerJavaScriptPriorityWhenForceDeferred;
  116. BLINK_COMMON_EXPORT extern const base::Feature kDisableForceDeferInChildFrames;
  117. BLINK_COMMON_EXPORT extern const base::Feature kCompositeCrossOriginIframes;
  118. BLINK_COMMON_EXPORT extern const base::Feature kTransformInterop;
  119. BLINK_COMMON_EXPORT extern const base::Feature kSubresourceRedirect;
  120. BLINK_COMMON_EXPORT extern const base::Feature kSetLowPriorityForBeacon;
  121. BLINK_COMMON_EXPORT extern const base::Feature kCacheStorageCodeCacheHintHeader;
  122. BLINK_COMMON_EXPORT extern const base::FeatureParam<std::string>
  123. kCacheStorageCodeCacheHintHeaderName;
  124. BLINK_COMMON_EXPORT extern const base::Feature kDispatchBeforeUnloadOnFreeze;
  125. BLINK_COMMON_EXPORT extern const base::Feature kLowLatencyCanvas2dImageChromium;
  126. BLINK_COMMON_EXPORT extern const base::Feature kLowLatencyCanvas2dSwapChain;
  127. BLINK_COMMON_EXPORT extern const base::Feature kLowLatencyWebGLSwapChain;
  128. BLINK_COMMON_EXPORT extern const base::Feature kDawn2dCanvas;
  129. BLINK_COMMON_EXPORT extern const base::Feature
  130. kCSSReducedFontLoadingLayoutInvalidations;
  131. BLINK_COMMON_EXPORT extern const base::Feature kDiscardCodeCacheAfterFirstUse;
  132. BLINK_COMMON_EXPORT extern const base::Feature
  133. kSuppressContentTypeForBeaconMadeWithArrayBufferView;
  134. BLINK_COMMON_EXPORT extern const base::Feature kBlockHTMLParserOnStyleSheets;
  135. BLINK_COMMON_EXPORT extern const base::Feature kLinkDisabledNewSpecBehavior;
  136. BLINK_COMMON_EXPORT extern const base::Feature kFontPreloadingDelaysRendering;
  137. BLINK_COMMON_EXPORT extern const base::FeatureParam<int>
  138. kFontPreloadingDelaysRenderingParam;
  139. BLINK_COMMON_EXPORT extern const base::Feature kFlexAspectRatio;
  140. BLINK_COMMON_EXPORT extern const base::Feature kKeepScriptResourceAlive;
  141. BLINK_COMMON_EXPORT extern const base::Feature kDelayAsyncScriptExecution;
  142. enum class DelayAsyncScriptDelayType {
  143. kFinishedParsing,
  144. kFirstPaintOrFinishedParsing,
  145. kUseOptimizationGuide,
  146. };
  147. BLINK_COMMON_EXPORT extern const base::FeatureParam<DelayAsyncScriptDelayType>
  148. kDelayAsyncScriptExecutionDelayParam;
  149. BLINK_COMMON_EXPORT extern const base::Feature
  150. kDelayCompetingLowPriorityRequests;
  151. enum class DelayCompetingLowPriorityRequestsDelayType {
  152. kFirstPaint,
  153. kFirstContentfulPaint,
  154. kAlways,
  155. kUseOptimizationGuide,
  156. };
  157. BLINK_COMMON_EXPORT extern const base::FeatureParam<
  158. DelayCompetingLowPriorityRequestsDelayType>
  159. kDelayCompetingLowPriorityRequestsDelayParam;
  160. enum class DelayCompetingLowPriorityRequestsThreshold {
  161. kMedium,
  162. kHigh,
  163. };
  164. BLINK_COMMON_EXPORT extern const base::FeatureParam<
  165. DelayCompetingLowPriorityRequestsThreshold>
  166. kDelayCompetingLowPriorityRequestsThresholdParam;
  167. BLINK_COMMON_EXPORT extern const base::Feature kAppCache;
  168. BLINK_COMMON_EXPORT extern const base::Feature kAppCacheRequireOriginTrial;
  169. BLINK_COMMON_EXPORT extern const base::Feature kAVIF;
  170. BLINK_COMMON_EXPORT extern const base::Feature
  171. kAlignFontDisplayAutoTimeoutWithLCPGoal;
  172. BLINK_COMMON_EXPORT extern const base::FeatureParam<int>
  173. kAlignFontDisplayAutoTimeoutWithLCPGoalTimeoutParam;
  174. enum class AlignFontDisplayAutoTimeoutWithLCPGoalMode {
  175. kToFailurePeriod,
  176. kToSwapPeriod
  177. };
  178. BLINK_COMMON_EXPORT extern const base::FeatureParam<
  179. AlignFontDisplayAutoTimeoutWithLCPGoalMode>
  180. kAlignFontDisplayAutoTimeoutWithLCPGoalModeParam;
  181. BLINK_COMMON_EXPORT extern const base::Feature kThrottleInstallingServiceWorker;
  182. BLINK_COMMON_EXPORT extern const base::FeatureParam<int>
  183. kInstallingServiceWorkerOutstandingThrottledLimit;
  184. // This flag is used to set field parameters to choose predictor we use when
  185. // kResamplingInputEvents is disabled. It's used for gatherig accuracy metrics
  186. // on finch and also for choosing predictor type for predictedEvents API without
  187. // enabling resampling. It does not have any effect when the resampling flag is
  188. // enabled.
  189. BLINK_COMMON_EXPORT extern const base::Feature kInputPredictorTypeChoice;
  190. // Enables resampling input events on main thread.
  191. BLINK_COMMON_EXPORT extern const base::Feature kResamplingInputEvents;
  192. // Enables resampling GestureScroll events on compositor thread.
  193. // Uses the kPredictorName* values in ui_base_features.h as the 'predictor'
  194. // feature param.
  195. BLINK_COMMON_EXPORT extern const base::Feature kResamplingScrollEvents;
  196. // Enables the device-memory, resource-width, viewport-width and DPR client
  197. // hints to be sent to third-party origins if the first-party has opted in to
  198. // receiving client hints, regardless of Feature Policy.
  199. BLINK_COMMON_EXPORT extern const base::Feature kAllowClientHintsToThirdParty;
  200. // Enables filtering of predicted scroll events on compositor thread.
  201. // Uses the kFilterName* values in ui_base_features.h as the 'filter' feature
  202. // param.
  203. BLINK_COMMON_EXPORT extern const base::Feature kFilteringScrollPrediction;
  204. // Enables changing the influence of acceleration based on change of direction.
  205. BLINK_COMMON_EXPORT extern const base::Feature kKalmanHeuristics;
  206. // Enables discarding the prediction if the predicted direction is opposite from
  207. // the current direction.
  208. BLINK_COMMON_EXPORT extern const base::Feature kKalmanDirectionCutOff;
  209. // Skips the browser touch event filter, ensuring that events that reach the
  210. // queue and would otherwise be filtered out will instead be passed onto the
  211. // renderer compositor process as long as the page hasn't timed out. If
  212. // skip_filtering_process is browser_and_renderer, also skip the renderer cc
  213. // touch event filter, ensuring that events will be passed onto the renderer
  214. // main thread. Which event types will be always forwarded is controlled by the
  215. // "type" FeatureParam, which can be either "discrete" (default) or "all".
  216. BLINK_COMMON_EXPORT
  217. extern const base::Feature kSkipTouchEventFilter;
  218. BLINK_COMMON_EXPORT
  219. extern const char kSkipTouchEventFilterTypeParamName[];
  220. BLINK_COMMON_EXPORT
  221. extern const char kSkipTouchEventFilterTypeParamValueDiscrete[];
  222. BLINK_COMMON_EXPORT
  223. extern const char kSkipTouchEventFilterTypeParamValueAll[];
  224. BLINK_COMMON_EXPORT
  225. extern const char kSkipTouchEventFilterFilteringProcessParamName[];
  226. BLINK_COMMON_EXPORT
  227. extern const char kSkipTouchEventFilterFilteringProcessParamValueBrowser[];
  228. BLINK_COMMON_EXPORT
  229. extern const char
  230. kSkipTouchEventFilterFilteringProcessParamValueBrowserAndRenderer[];
  231. BLINK_COMMON_EXPORT extern const base::Feature kWebXrMultiGpu;
  232. BLINK_COMMON_EXPORT extern const base::Feature
  233. kCSSMatchedPropertiesCacheDependencies;
  234. BLINK_COMMON_EXPORT extern const base::Feature kCompressParkableStrings;
  235. BLINK_COMMON_EXPORT extern const base::Feature kParkableStringsToDisk;
  236. BLINK_COMMON_EXPORT bool IsParkableStringsToDiskEnabled();
  237. BLINK_COMMON_EXPORT extern const base::Feature kCrOSAutoSelect;
  238. BLINK_COMMON_EXPORT extern const base::Feature kCompositingOptimizations;
  239. BLINK_COMMON_EXPORT extern const base::Feature kReducedReferrerGranularity;
  240. BLINK_COMMON_EXPORT extern const base::Feature
  241. kContentCaptureUserActivatedDelay;
  242. BLINK_COMMON_EXPORT extern const base::Feature kCheckOfflineCapability;
  243. BLINK_COMMON_EXPORT extern const base::Feature
  244. kBackForwardCacheABExperimentControl;
  245. BLINK_COMMON_EXPORT
  246. extern const char kBackForwardCacheABExperimentGroup[];
  247. BLINK_COMMON_EXPORT extern const base::Feature kPreferCompositingToLCDText;
  248. BLINK_COMMON_EXPORT extern const base::Feature
  249. kLogUnexpectedIPCPostedToBackForwardCachedDocuments;
  250. } // namespace features
  251. } // namespace blink
  252. #endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURES_H_