| { |
| // See third_party/blink/renderer/platform/RuntimeEnabledFeatures.md |
| // |
| // This list is used to generate runtime_enabled_features.h/cc which contains |
| // a class that stores static enablers for all experimental features. |
| |
| parameters: { |
| // Each feature can be assigned a "status". The "status" can be either |
| // one of the values in the |valid_values| list or a dictionary of |
| // the platforms listed in |valid_keys| to |valid_values|. |
| // Use "default" as the key if you want to specify the status of |
| // the platforms other than the ones declared in the dictionary. |
| // ** Omitting "default" means the feature is not enabled on |
| // the platforms not listed in the status dictionary |
| // |
| // Definition of each status: |
| // * status=stable: Enable this in all Blink configurations. We are |
| // committed to these APIs indefinitely. |
| // * status=experimental: In-progress features, Web Developers might play |
| // with, but are not on by default in stable. |
| // * status=test: Enabled in ContentShell for testing, otherwise off. |
| // Features without a status are not enabled anywhere by default. |
| // |
| // Example of the dictionary value use: |
| // { |
| // name: "ExampleFeature", |
| // status: {"Android": "stable", "Win": "experimental"}, |
| // } |
| // "ExampleFeature" will be stable on Android/WebView/WebLayer, experimental |
| // on Windows and not enabled on any other platform. |
| // |
| // Note that the Android status key implies Chrome for Android, WebView and |
| // WebLayer. |
| // |
| // "stable" features listed here should be rare, as anything which we've |
| // shipped stable can have its runtime flag removed soon after. |
| status: { |
| valid_values: ["stable", "experimental", "test"], |
| valid_keys: ["Android", "Win", "ChromeOS_Ash", "ChromeOS_Lacros", "Mac", "Linux"] |
| }, |
| |
| // "implied_by" or "depends_on" specifies relationship to other features: |
| // * implied_by: ["feature1","feature2",...] |
| // The feature is automatically enabled if any implied_by features is |
| // enabled. To effectively disable the feature, you must disable the |
| // feature and all the implied_by features. |
| // * depends_on: ["feature1","feature2",...] |
| // The feature can be enabled only if all depends_on features are enabled. |
| // Only one of "implied_by" and "depends_on" can be specified. |
| implied_by: { |
| default: [], |
| valid_type: "list", |
| }, |
| |
| // *DO NOT* specify features that depend on origin trial features. |
| // It is NOT supported. As a workaround, you can either specify the same |
| // |origin_trial_feature_name| for the feature or add the OT feature to |
| // the |implied_by| list. |
| // TODO(https://crbug.com/954679): Add support for origin trial features in 'depends_on' list |
| depends_on: { |
| default: [], |
| valid_type: "list", |
| }, |
| |
| // origin_trial_feature_name: "FEATURE_NAME" is used to integrate the |
| // feature with the Origin Trials framework. The framework allows the |
| // feature to be enabled at runtime on a per-page basis through a signed |
| // token for the corresponding feature name. Declaring the |
| // origin_trial_feature_name will modify the generation of the static |
| // methods in runtime_enabled_features.h/cpp -- the no-parameter version |
| // will not be generated, so all callers have to use the version that takes |
| // a const FeatureContext* argument. |
| origin_trial_feature_name: { |
| }, |
| // origin_trial_os specifies the platforms where the trial is available. |
| // The default is empty, meaning all platforms. |
| origin_trial_os: { |
| default: [], |
| valid_type: "list", |
| }, |
| // origin_trial_type specifies the unique type of the trial, when not the |
| // usual trial for a new experimental feature. |
| origin_trial_type: { |
| default: "", |
| valid_type: "str", |
| valid_values: ["deprecation", "intervention", ""], |
| }, |
| // origin_trial_allows_insecure specifies whether the trial can be enabled |
| // in an insecure context, with default being false. This can only be set |
| // to true for a "deprecation" type trial. |
| origin_trial_allows_insecure: { |
| valid_type: "bool", |
| }, |
| |
| // origin_trial_allows_third_party specifies whether the trial can be enabled |
| // from third party origins, with default being false. |
| origin_trial_allows_third_party: { |
| valid_type: "bool", |
| }, |
| |
| // settable_from_internals specifies whether a feature can be set from |
| // internals.runtimeFlags, with the default being false. |
| settable_from_internals: { |
| valid_type: "bool", |
| }, |
| |
| // public specifies whether a feature can be accessed via |
| // third_party/blink/public/platform/web_runtime_features.h, with the |
| // default being false. |
| public: { |
| valid_type: "bool", |
| }, |
| |
| // Feature policy IDL extended attribute (see crrev.com/2247923004). |
| feature_policy: { |
| }, |
| |
| // The string name of a base::Feature. The C++ variable name in |
| // blink::features is built with this string by prepending 'k'. |
| // If this field is specified, the base::Feature is automatically generated |
| // in features_generated.{h,cc}. |
| // |
| // The default value of the base::Feature instance is: |
| // base::FEATURE_ENABLED_BY_DEFAULT if 'status' field is 'stable", and |
| // base::FEATURE_DISABLED_BY_DEFAULT otheriwse. |
| // It can be overridden by 'base_feature_status' field. |
| // |
| // If the flag should be associated with a feature not in blink::features, |
| // we need to map them in content/child/runtime_features.cc. |
| base_feature: { |
| valid_type: "str", |
| default: "", |
| }, |
| |
| // Specifiy the default value of the base::Feature instance. This field |
| // works only if base_feature is not empty. |
| // If the field is missing or "", the default value depends on the 'status' |
| // field. See the comment above. |
| // "disabled" sets base::FEATURE_DISABLED_BY_DEFAULT, and "enabled" sets |
| // base::FEATURE_ENABLED_BY_DEFAULT. |
| base_feature_status: { |
| valid_type: "str", |
| valid_values: ["", "disabled", "enabled"], |
| default: "", |
| }, |
| |
| // Specify how the flag value is updated from the base::Feature value. This |
| // field is used only if base_feature is not empty. |
| // |
| // * "enabled_or_overridden" |
| // - If the base::Feature default is overridden by field trial or command |
| // line, set Blink feature to the state of the base::Feature; |
| // - Otherwise if the base::Feature is enabled, enable the Blink feature. |
| // - Otherwise no change. |
| // |
| // * "overridden" |
| // Enables the Blink feature when the base::Feature is overridden by field |
| // trial or command line. Otherwise no change. Its difference from |
| // "enabled_or_overridden" is that the Blink feature isn't affected by the |
| // default state of the base::Feature. |
| // |
| // This is useful for Blink origin trial features especially those |
| // implemented in both Chromium and Blink. As origin trial only controls |
| // the Blink features, for now we require the base::Feature to be enabled |
| // by default, but we don't want the default enabled status affect the |
| // Blink feature. See also https://crbug.com/1048656#c10. |
| // This can also be used for features that are enabled by default in |
| // Chromium but not in Blink on all platforms and we want to use the Blink |
| // status. However, we would prefer consistent Chromium and Blink status |
| // to this. |
| copied_from_base_feature_if: { |
| valid_type: "str", |
| valid_values: ["enabled_or_overridden", "overridden"], |
| default: "enabled_or_overridden", |
| }, |
| |
| browser_process_read_access: { |
| default: false, |
| value_type: "bool", |
| }, |
| browser_process_read_write_access: { |
| default: false, |
| value_type: "bool", |
| }, |
| override_from_pref: { |
| valid_keys: [ |
| // Chrome Prefs name (string) from which we will conditionally override |
| // the runtime feature value. |
| "name", |
| // If the preference equals the provided integral, string, or boolean |
| // value, the feature will be force enabled. |
| "force_enable_val", |
| // If the preference equals the provided integral, string, or |
| // boolean value, the feature will be force disabled. |
| "force_disable_val", |
| // Short-hand boolean flag. If true, will always override |
| // the feature. The specified Chrome Pref must be boolean. |
| "override_from_boolean_val", |
| ], |
| } |
| }, |
| |
| data: [ |
| { |
| name: "AbortSignalAny", |
| status: "experimental", |
| base_feature: "AbortSignalAny", |
| }, |
| { |
| name: "AbortSignalThrowIfAborted", |
| status: "stable", |
| }, |
| { |
| name: "AbortSignalTimeout", |
| status: "stable", |
| }, |
| { |
| name: "Accelerated2dCanvas", |
| settable_from_internals: true, |
| status: "stable", |
| }, |
| { |
| name: "AcceleratedSmallCanvases", |
| status: "stable", |
| }, |
| { |
| name: "AccessibilityAriaTouchPassthrough", |
| status: "experimental", |
| origin_trial_feature_name: "AccessibilityAriaTouchPassthrough", |
| }, |
| { |
| name: "AccessibilityAriaVirtualContent", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "AccessibilityExposeDisplayNone", |
| status: "test", |
| }, |
| { |
| name: "AccessibilityExposeHTMLElement", |
| public: true, |
| }, |
| { |
| name: "AccessibilityExposeIgnoredNodes", |
| public: true, |
| }, |
| { |
| name: "AccessibilityObjectModel", |
| status: "experimental", |
| }, |
| { |
| name: "AccessibilityPageZoom", |
| public: true, |
| }, |
| { |
| name: "AccessibilityUseAXPositionForDocumentMarkers", |
| public: true, |
| }, |
| { |
| name: "AddIdentityInCanMakePaymentEvent", |
| base_feature: "AddIdentityInCanMakePaymentEvent", |
| origin_trial_allows_third_party: true, |
| origin_trial_feature_name: "AddIdentityInCanMakePaymentEvent", |
| public: true, |
| }, |
| { |
| name: "AddressSpace", |
| status: "experimental", |
| implied_by: ["CorsRFC1918"], |
| }, |
| { |
| // Interest Group JS API/runtimeflag. |
| name: "AdInterestGroupAPI", |
| origin_trial_feature_name: "AdInterestGroupAPI", |
| implied_by: ["Fledge", "Parakeet"], |
| base_feature: "AdInterestGroupAPI", |
| }, |
| { |
| name: "AdTagging", |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "AllowContentInitiatedDataUrlNavigations", |
| }, |
| { |
| name: "AndroidDownloadableFontsMatching", |
| public: true, |
| }, |
| { |
| name: "AnimationWorklet", |
| status: "experimental", |
| }, |
| { |
| name: "AnonymousIframe", |
| origin_trial_allows_third_party: true, |
| origin_trial_feature_name: "AnonymousIframeOriginTrial", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "AOMAriaRelationshipProperties", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "AriaTouchPassthrough", |
| status: "experimental", |
| }, |
| { |
| name: "AttributionReporting", |
| origin_trial_feature_name: "PrivacySandboxAdsAPIs", |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| }, |
| { |
| name: "AudioContextSetSinkId", |
| status: "stable", |
| }, |
| { |
| name: "AudioOutputDevices", |
| // Android does not yet support switching of audio output devices |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "AudioVideoTracks", |
| status: "experimental", |
| }, |
| { |
| name: "AutoDarkMode", |
| origin_trial_feature_name: "AutoDarkMode", |
| }, |
| { |
| name: "AutoDisableAccessibilityV2", |
| public: true, |
| }, |
| { |
| // Makes autofill look across shadow boundaries when collecting form |
| // controls to fill. |
| name: "AutofillShadowDOM", |
| status: "stable", |
| base_feature: "AutofillShadowDOM", |
| }, |
| { |
| name: "AutomationControlled", |
| public: true, |
| settable_from_internals: true, |
| }, |
| { |
| // Flag set by the media::kAutoplayIgnoreWebAudio feature flag. |
| name: "AutoplayIgnoresWebAudio", |
| public: true, |
| settable_from_internals: true, |
| }, |
| // When enabled, enforces new interoperable semantics for 3D transforms. |
| // See crbug.com/1008483. |
| { |
| name: "BackfaceVisibilityInterop", |
| base_feature: "BackfaceVisibilityInterop", |
| }, |
| { |
| name: "BackForwardCache", |
| public: true, |
| }, |
| { |
| name: "BackForwardCacheExperimentHTTPHeader", |
| origin_trial_feature_name: "BackForwardCacheExperimentHTTPHeader", |
| status: "experimental", |
| }, |
| { |
| name: "BackForwardCacheNotRestoredReasons", |
| status: "experimental", |
| origin_trial_feature_name: "BackForwardCacheNotRestoredReasons", |
| base_feature: "BackForwardCacheSendNotRestoredReasons", |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "BackgroundFetch", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "BarcodeDetector", |
| status: { |
| // Built-in barcode detection APIs are only available from some |
| // platforms. See //services/shape_detection. |
| "Android": "stable", |
| "ChromeOS_Ash": "stable", |
| "ChromeOS_Lacros": "stable", |
| "Mac": "stable", |
| "default": "test", |
| }, |
| }, |
| { |
| // https://github.com/WICG/display-locking/blob/master/explainer-beforematch.md |
| name: "BeforeMatchEvent", |
| origin_trial_feature_name: "BeforeMatchEvent", |
| status: "stable", |
| }, |
| { |
| name: "BidiCaretAffinity", |
| }, |
| { |
| name: "BlinkExtensionChromeOS", |
| }, |
| { |
| name: "BlinkExtensionChromeOSHID", |
| depends_on: ["BlinkExtensionChromeOS"], |
| }, |
| { |
| name: "BlinkExtensionChromeOSTelemetry", |
| depends_on: ["BlinkExtensionChromeOS"], |
| }, |
| { |
| name: "BlinkExtensionChromeOSWindowManagement", |
| depends_on: ["BlinkExtensionChromeOS"], |
| }, |
| { |
| name: "BlinkRuntimeCallStats", |
| }, |
| { |
| // https://html.spec.whatwg.org/multipage/urls-and-fetching.html#blocking-attributes |
| name: "BlockingAttribute", |
| status: "stable", |
| }, |
| { |
| name: "BlockingFocusWithoutUserActivation", |
| status: "experimental", |
| base_feature: "BlockingFocusWithoutUserActivation", |
| }, |
| { |
| name: "BrowserVerifiedUserActivationKeyboard", |
| public: true, |
| }, |
| { |
| name: "BrowserVerifiedUserActivationMouse", |
| public: true, |
| }, |
| { |
| name: "CacheStorageCodeCacheHint", |
| origin_trial_feature_name: "CacheStorageCodeCacheHint", |
| status: "experimental", |
| }, |
| { |
| // If set, the parser will canonicalize whitespace strings. |
| name: "CanonicalizeWhitespaceStrings", |
| status: "stable", |
| base_feature: "CanonicalizeWhitespaceStrings", |
| }, |
| { |
| name: "Canvas2dImageChromium", |
| public: true, |
| }, |
| { |
| name: "Canvas2dLayers", |
| }, |
| { |
| name: "Canvas2dScrollPathIntoView", |
| status: "experimental", |
| }, |
| { |
| name: "CanvasFloatingPoint", |
| status: "experimental", |
| }, |
| { |
| name: "CanvasHDR", |
| status: "experimental", |
| }, |
| { |
| name: "CanvasImageSmoothing", |
| status: "experimental", |
| }, |
| { |
| name: "CapabilityDelegationFullscreenRequest", |
| status: "stable", |
| }, |
| { |
| name: "CaptureController", |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "CaptureHandle", |
| depends_on: ["GetDisplayMedia"], |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "checkVisibility", |
| status: "stable", |
| }, |
| { |
| name: "ClickToCapturedPointer", |
| status: "experimental", |
| }, |
| { |
| name: "ClientHintsMetaEquivDelegateCH", |
| status: "stable", |
| base_feature: "ClientHintsMetaEquivDelegateCH", |
| }, |
| { |
| name: "ClientHintsMetaHTTPEquivAcceptCH", |
| status: "stable", |
| base_feature: "ClientHintsMetaHTTPEquivAcceptCH", |
| }, |
| { |
| name: "ClientHintThirdPartyDelegation", |
| status: "stable", |
| base_feature: "ClientHintThirdPartyDelegation", |
| }, |
| { |
| // Allows read/write of custom formats with unsanitized clipboard content. |
| // See crbug.com/106449. |
| name: "ClipboardCustomFormats", |
| status: "stable", |
| base_feature: "ClipboardCustomFormats", |
| }, |
| { |
| name: "ClipboardSvg", |
| status: "experimental", |
| }, |
| { |
| name: "ClipboardUnsanitizedContent", |
| status: "experimental", |
| }, |
| { |
| name: "CloseWatcher", |
| }, |
| { |
| name: "CLSScrollAnchoring", |
| status: "stable", |
| base_feature: "CLSScrollAnchoring", |
| }, |
| { |
| name: "CoepReflection", |
| status: "test", |
| }, |
| { |
| name: "CompositeBGColorAnimation", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "CompositeBoxShadowAnimation", |
| }, |
| { |
| name: "CompositeClipPathAnimation", |
| public: true, |
| }, |
| { |
| name: "CompositedSelectionUpdate", |
| public: true, |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "ComputedAccessibilityInfo", |
| status: "experimental", |
| }, |
| { |
| name: "ComputePressure", |
| status: "experimental", |
| base_feature: "ComputePressure", |
| }, |
| { |
| name: "ConditionalFocus", |
| depends_on: ["CaptureController"], |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "ConfirmationOfAction", |
| status: "test", |
| }, |
| { |
| name: "ConsolidatedMovementXY", |
| public: true, |
| }, |
| { |
| name: "ContactsManager", |
| status: {"Android": "stable", "default": "test"}, |
| }, |
| { |
| name: "ContactsManagerExtraProperties", |
| status: {"Android": "stable", "default": "test"}, |
| }, |
| { |
| name: "ContentIndex", |
| status: {"Android": "stable", "default": "experimental"}, |
| }, |
| { |
| name: "ContentVisibilityAutoStateChangeEvent", |
| status: "stable", |
| }, |
| { |
| name: "ContextMenu", |
| status: "experimental", |
| }, |
| { |
| name: "CooperativeScheduling", |
| public: true, |
| }, |
| { |
| name: "CorsRFC1918", |
| }, |
| { |
| name: "CrossFramePerformanceTimeline", |
| status: "experimental", |
| base_feature: "CrossFramePerformanceTimeline", |
| }, |
| { |
| // Allows positioning a positioned element relative to another one. |
| // https://drafts.csswg.org/css-anchor-1/ |
| name: "CSSAnchorPositioning", |
| implied_by: ["HTMLSelectMenuElement"], |
| status: "experimental", |
| }, |
| { |
| // Whether <image> values are allowed as counter style <symbol> |
| name: "CSSAtRuleCounterStyleImageSymbols", |
| }, |
| { |
| // https://drafts.csswg.org/css-counter-styles/#counter-style-speak-as |
| name: "CSSAtRuleCounterStyleSpeakAsDescriptor", |
| status: "test", |
| }, |
| { |
| // https://drafts.csswg.org/css-conditional-4/#support-definition-ext |
| // https://github.com/w3c/csswg-drafts/issues/7280#issuecomment-1143852187 |
| name: "CSSAtSupportsAlwaysNonForgivingParsing", |
| status: "experimental", |
| }, |
| { |
| name: "CSSBaselineSource", |
| status: "experimental", |
| }, |
| { |
| // Support CSS Values Level 4 calc simplification and serialization |
| // as specified in the specs below. |
| // https://drafts.csswg.org/css-values-4/#calc-simplification |
| // https://drafts.csswg.org/css-values-4/#calc-serialize |
| name: "CSSCalcSimplificationAndSerialization" |
| }, |
| { |
| // Support case-sensitive attribute selector modifier |
| // https://drafts.csswg.org/selectors-4/#attribute-case |
| name: "CSSCaseSensitiveSelector", |
| status: "test", |
| }, |
| { |
| // Support for CSS Color Module Level 4 |
| // https://www.w3.org/TR/css-color-4/ |
| name: "CSSColor4", |
| status: "experimental", |
| }, |
| { |
| name: "CSSColorContrast", |
| status: "experimental", |
| }, |
| { |
| name: "CSSColorTypedOM", |
| status: "experimental", |
| }, |
| { |
| name: "CSSDisplayAnimation", |
| status: "test" |
| }, |
| { |
| // Include custom properties in CSSComputedStyleDeclaration::item/length. |
| // https://crbug.com/949807 |
| name: "CSSEnumeratedCustomProperties", |
| status: "test", |
| }, |
| { |
| name: "CSSFocusVisible", |
| status: "stable", |
| }, |
| { |
| name: "CSSFoldables", |
| status: "experimental", |
| }, |
| { |
| // @font-face Font property descriptors auto range. |
| // https://www.w3.org/TR/css-fonts-4/#font-prop-desc |
| name: "CSSFontFaceAutoVariableRange", |
| status: "stable", |
| }, |
| { |
| name: "CSSFontFaceSrcTechParsing", |
| status: "stable" |
| }, |
| { |
| name: "CSSFontFamilyMath", |
| status: "stable", |
| implied_by: ["MathMLCore"], |
| }, |
| { |
| name: "CSSFontSizeAdjust", |
| status: "test", |
| }, |
| { |
| name: "CSSGridTemplatePropertyInterpolation", |
| status: "stable", |
| }, |
| { |
| // This needs to be kept as a runtime flag as long as we need to forcibly |
| // disable it for WebView on Android versions older than P. See |
| // https://crrev.com/f311a84728272e30979432e8474089b3db3c67df |
| name: "CSSHexAlphaColor", |
| status: "stable", |
| }, |
| { |
| // crbug.com/924069 |
| name: "CSSHyphenateLimitChars", |
| status: "stable", |
| base_feature: "CSSHyphenateLimitChars", |
| }, |
| { |
| name: "CSSIcUnit", |
| status: "stable", |
| }, |
| { |
| // If enabled, |
| // image-set values without the `-webkit-` prefix |
| // will be parsed. |
| name: "CSSImageSet", |
| status: "experimental", |
| base_feature: "CSSImageSet", |
| }, |
| { |
| name: "CSSIndependentTransformProperties", |
| status: "stable", |
| }, |
| { |
| // http://crbug.com/1276900 |
| name: "CSSInitialLetter", |
| status: "stable", |
| base_feature: "CSSInitialLetter", |
| }, |
| { |
| name: "CSSLastBaseline", |
| status: "stable", |
| }, |
| { |
| name: "CSSLayoutAPI", |
| status: "experimental", |
| }, |
| { |
| name: "CSSLhUnit", |
| status: "stable", |
| base_feature: "CSSLhUnit", |
| }, |
| { |
| name: "CSSLogical", |
| status: "experimental", |
| }, |
| { |
| name: "CSSLogicalOverflow", |
| status: "test", |
| }, |
| { |
| name: "CSSMarkerNestedPseudoElement", |
| status: "experimental", |
| }, |
| { |
| name: "CSSMathDepth", |
| status: "stable", |
| implied_by: ["MathMLCore"], |
| }, |
| { |
| name: "CSSMathShift", |
| status: "stable", |
| implied_by: ["MathMLCore"], |
| }, |
| { |
| name: "CSSMathStyle", |
| status: "stable", |
| implied_by: ["MathMLCore"], |
| }, |
| { |
| name: "CSSMathVariant", |
| status: "stable", |
| implied_by: ["MathMLCore"], |
| }, |
| { |
| name: "CSSMixBlendModePlusLighter", |
| status: "stable" |
| }, |
| { |
| // Support for CSS Nesting Level 1. |
| // |
| // https://csswg.sesse.net/css-nesting-1/ |
| name: "CSSNesting", |
| status: "experimental" |
| }, |
| { |
| name: "CSSNewRootFontUnits", |
| status: "stable", |
| }, |
| { |
| name: "CSSObjectViewBox", |
| status: "stable", |
| }, |
| { |
| name: "CSSOffsetPathRay", |
| status: "experimental", |
| }, |
| { |
| name: "CSSOffsetPathRayContain", |
| status: "experimental", |
| }, |
| { |
| name: "CSSOffsetPositionAnchor", |
| status: "experimental", |
| }, |
| { |
| name: "CSSOverflowForReplacedElements", |
| status: "stable", |
| base_feature: "CSSOverflowForReplacedElements", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "CSSPaintAPIArguments", |
| status: "experimental", |
| }, |
| { |
| // Use the new CSS-based painting for spelling and grammar errors, |
| // regardless of whether the new highlights or decorations are exposed |
| // to authors (see CSSSpellingGrammarErrors). |
| name: "CSSPaintingForSpellingGrammarErrors", |
| status: "stable", |
| base_feature: "CssPaintingForSpellingGrammarErrors", |
| }, |
| { |
| name: "CSSPictureInPicture", |
| status: "stable", |
| }, |
| { |
| name: "CSSPositionStickyStaticScrollPosition", |
| status: "test", |
| }, |
| { |
| name: "CSSPseudoDir", |
| status: "experimental", |
| }, |
| { |
| name: "CSSPseudoHasNonForgivingParsing", |
| status: "experimental", |
| base_feature: "CSSPseudoHasNonForgivingParsing", |
| }, |
| { |
| // When an audio, video, or similar resource is "playing" |
| // or "paused". |
| // https://www.w3.org/TR/selectors-4/#video-state |
| name: "CSSPseudoPlayingPaused", |
| status: "test", |
| }, |
| { |
| // https://drafts.csswg.org/css-cascade-6/#scoped-styles |
| name: "CSSScope", |
| status: "experimental", |
| }, |
| // Scrollbar styling. |
| // https://drafts.csswg.org/css-scrollbars/ |
| { |
| name: "CSSScrollbars", |
| status: "test", |
| }, |
| // Support for scroll-timeline. |
| // |
| // https://drafts.csswg.org/scroll-animations-1/#scroll-timeline-shorthand |
| { |
| name: "CSSScrollTimeline", |
| status: "experimental", |
| }, |
| { |
| name: "CSSSelectorFragmentAnchor", |
| status: "experimental", |
| base_feature: "CssSelectorFragmentAnchor", |
| }, |
| { |
| // Support for :nth-child(An + B of S). |
| // |
| // https://drafts.csswg.org/selectors-4/#the-nth-child-pseudo |
| name: "CSSSelectorNthChildComplexSelector", |
| status: "stable" |
| }, |
| { |
| // Support for CSS ::spelling-error, ::grammar-error, and the |
| // spelling-error and grammar-error values in text-decoration-line. |
| // |
| // https://drafts.csswg.org/css-pseudo-4/#selectordef-spelling-error |
| // https://drafts.csswg.org/css-pseudo-4/#selectordef-grammar-error |
| // https://drafts.csswg.org/css-text-decor-4/#valdef-text-decoration-line-spelling-error |
| // https://drafts.csswg.org/css-text-decor-4/#valdef-text-decoration-line-grammar-error |
| name: "CSSSpellingGrammarErrors", |
| status: "experimental", |
| }, |
| { |
| // https://drafts.csswg.org/css-contain-3/#style-container |
| // This flag is for querying custom properties only. |
| name: "CSSStyleQueries", |
| status: "stable" |
| }, |
| // Support for CSS Toggles, https://tabatkins.github.io/css-toggle/ |
| { |
| name: "CSSToggles", |
| status: "experimental", |
| }, |
| { |
| // Support for tree-scoped [1] timeline names (e.g. produced by |
| // scroll-timeline). |
| // |
| // [1] https://drafts.csswg.org/css-scoping-1/#shadow-names |
| name: "CSSTreeScopedTimelines", |
| }, |
| { |
| // Explainer: https://github.com/DevSDK/css-trigonometric-functions |
| name: "CSSTrigonometricFunctions", |
| status: "stable", |
| }, |
| // Support for registered custom properties with <image> syntax. |
| { |
| name: "CSSVariables2ImageValues", |
| status: "test", |
| }, |
| // Support for registered custom properties with <transform-list> and |
| // <transform-function> syntax. |
| { |
| name: "CSSVariables2TransformValues", |
| status: "test", |
| }, |
| { |
| name: "CSSVideoDynamicRangeMediaQueries", |
| status: "experimental" |
| }, |
| { |
| // Support for viewport units added by css-values-4. |
| // |
| // https://drafts.csswg.org/css-values-4/#viewport-relative-units |
| name: "CSSViewportUnits4", |
| status: "stable", |
| }, |
| // Support for view-timeline. |
| // |
| // https://drafts.csswg.org/scroll-animations-1/#view-timeline-shorthand |
| { |
| name: "CSSViewTimeline", |
| status: "experimental", |
| }, |
| { |
| name: "Database", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "DecodeJpeg420ImagesToYUV", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "DecodeLossyWebPImagesToYUV", |
| public: true, |
| status: "stable", |
| }, |
| { |
| // crbug.com/1259085 |
| name: "DeferredShaping", |
| status: "test", |
| base_feature: "DeferredShaping", |
| }, |
| { |
| name: "DeflateRawCompressionFormat", |
| status: "stable", |
| }, |
| { |
| name: "DelegatedInkTrails", |
| status: "stable", |
| }, |
| // https://github.com/w3c/resource-timing/pull/343 |
| { |
| name: "DeliveryType", |
| status: "experimental", |
| implied_by: ["SpeculationRulesPrefetchFuture"], |
| origin_trial_feature_name: "DeliveryType", |
| }, |
| { |
| name: "DesktopCaptureDisableLocalEchoControl", |
| status: "experimental", |
| }, |
| { |
| name: "DesktopPWAsSubApps", |
| status: "test", |
| base_feature: "DesktopPWAsSubApps", |
| }, |
| { |
| name: "DeviceAttributes", |
| origin_trial_feature_name: "DeviceAttributes", |
| origin_trial_os: ["chromeos"], |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| }, |
| { |
| name: "DeviceOrientationRequestPermission", |
| status: "experimental", |
| }, |
| { |
| name: "DevicePosture", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "DialogNewFocusBehavior", |
| status: "experimental", |
| base_feature: "DialogNewFocusBehavior", |
| }, |
| { |
| name: "DigitalGoods", |
| origin_trial_feature_name: "DigitalGoodsV2", |
| origin_trial_os: ["android", "chromeos"], |
| public: true, |
| status: { |
| "Android": "stable", |
| "ChromeOS_Ash": "stable", |
| "ChromeOS_Lacros": "stable", |
| // crbug.com/1143079: Web tests cannot differentiate ChromeOS and Linux, |
| // so enable the API on all platforms for testing. |
| "default": "test" |
| }, |
| }, |
| { |
| name: "DigitalGoodsV2_1", |
| status: { |
| "Android": "stable", |
| "ChromeOS_Ash": "stable", |
| "ChromeOS_Lacros": "stable", |
| // crbug.com/1143079: Web tests cannot differentiate ChromeOS and Linux, |
| // so enable the API on all platforms for testing. |
| "default": "test" |
| }, |
| }, |
| { |
| name: "DirectSockets", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "DisableDifferentOriginSubframeDialogSuppression", |
| origin_trial_feature_name: "DisableDifferentOriginSubframeDialogSuppression", |
| origin_trial_type: "deprecation", |
| origin_trial_allows_insecure: true, |
| }, |
| { |
| name: "DisableHardwareNoiseSuppression", |
| origin_trial_feature_name: "DisableHardwareNoiseSuppression", |
| status: "experimental", |
| }, |
| { |
| name: "DisableTextDecorationColorOverride", |
| status: "stable", |
| base_feature: "DisableTextDecorationColorOverride", |
| }, |
| // This feature should only be enabled if |
| // DisableThirdPartyStoragePartitioning is enabled, but as |
| // DisableThirdPartyStoragePartitioning will be linked to a deprecation |
| // trial it isn't possible to set a `depends_on`. |
| { |
| name: "DisableThirdPartySessionStoragePartitioningAfterGeneralPartitioning", |
| origin_trial_feature_name: "DisableThirdPartySessionStoragePartitioningAfterGeneralPartitioning", |
| status: "experimental", |
| }, |
| // This feature will represent the deprecation trial that allows first |
| // parties to temporarily use unpartitioned storage in embeds loaded |
| // on their site. |
| { |
| name: "DisableThirdPartyStoragePartitioning", |
| status: "experimental", |
| browser_process_read_write_access: true, |
| }, |
| { |
| name: "DisplayCutoutAPI", |
| public: true, |
| }, |
| { |
| // When a Web application calls getDisplayMedia() and asks for video, |
| // allow a hint to be provided as to whether it prefers that a |
| // certain surface type be more prominently offered to the user. |
| // |
| // https://github.com/w3c/mediacapture-screen-share/pull/186/files |
| name: "DisplaySurfaceConstraint", |
| status: "stable", |
| }, |
| { |
| name: "DocumentCookie", |
| }, |
| { |
| name: "DocumentDomain", |
| }, |
| { |
| name: "DocumentOpenSandboxInheritanceRemoval", |
| status: "experimental", |
| base_feature: "DocumentOpenSandboxInheritanceRemoval", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "DocumentPictureInPictureAPI", |
| status: { |
| "Android": "", |
| "ChromeOS_Lacros": "", |
| "default": "experimental", |
| }, |
| base_feature: "DocumentPictureInPictureAPI", |
| }, |
| { |
| name: "DocumentPolicy", |
| public: true, |
| status: "stable", |
| }, |
| // Enables the ability to use Document Policy header to control feature |
| // DocumentDomain. |
| { |
| name: "DocumentPolicyDocumentDomain", |
| status: "experimental", |
| depends_on: ["DocumentPolicy"], |
| }, |
| { |
| name: "DocumentPolicyNegotiation", |
| origin_trial_feature_name: "DocumentPolicyNegotiation", |
| public: true, |
| status: "experimental", |
| depends_on: ["DocumentPolicy"], |
| }, |
| // Enables the ability to use Document Policy header to control feature |
| // SyncXHR. |
| { |
| name: "DocumentPolicySyncXHR", |
| status: "experimental", |
| depends_on: ["DocumentPolicy"], |
| }, |
| { |
| name: "DocumentWrite", |
| }, |
| { |
| name: "EarlyHintsPreloadForNavigationOptIn", |
| origin_trial_feature_name: "EarlyHintsPreloadForNavigation", |
| status: "stable", |
| }, |
| { |
| // If enabled, allows web pages to use the experimental EditContext API to |
| // better control text input. See crbug.com/999184. |
| name: "EditContext", |
| status: "experimental", |
| base_feature: "EditContext", |
| }, |
| { |
| name: "ElementSuperRareData", |
| status: "experimental", |
| base_feature: "ElementSuperRareData", |
| }, |
| { |
| // Non-standard API Event.path. Should be replaced by Event.composedPath. |
| name: "EventPath", |
| public: true, |
| base_feature: "EventPath", |
| }, |
| { |
| name: "EventTimingInteractionCount", |
| status: "experimental", |
| }, |
| { |
| name: "ExperimentalContentSecurityPolicyFeatures", |
| status: "experimental", |
| }, |
| { |
| name: "ExperimentalJSProfilerMarkers", |
| status: "experimental" |
| }, |
| { |
| name: "ExperimentalPolicies", |
| depends_on: ["DocumentPolicy"], |
| status: "experimental" |
| }, |
| // Prototype implementation of web snapshots - blink integration. Suitable |
| // for local testing, *not* suitable for origin trials. Replacing the |
| // current implementation with the real Blink integration is expected |
| // before M102. See crbug.com/1173534. |
| { |
| name: "ExperimentalWebSnapshots", |
| }, |
| { |
| name: "ExposeRenderTimeNonTaoDelayedImage", |
| }, |
| { |
| name: "ExtendedTextMetrics", |
| status: "experimental", |
| }, |
| { |
| name: "ExtraWebGLVideoTextureMetadata", |
| }, |
| { |
| name: "EyeDropperAPI", |
| status: { |
| // EyeDropper UI is available only on Windows, Mac, and Linux. This list |
| // should match the supported operating systems for the kEyeDropper |
| // base::Feature. |
| "Mac": "stable", |
| "Win": "stable", |
| "Linux": "stable", |
| }, |
| }, |
| { |
| name: "FaceDetector", |
| status: "experimental", |
| }, |
| { |
| name: "FakeNoAllocDirectCallForTesting", |
| status: "test", |
| }, |
| { |
| name: "FastComparePositions", |
| status: "stable", |
| base_feature: "FastComparePositions", |
| }, |
| { |
| name: "FastPositionIterator", |
| status: "stable", |
| base_feature: "FastPositionIterator", |
| }, |
| { |
| name: "FeaturePolicyReporting", |
| status: "experimental" |
| }, |
| { |
| name: "FedCm", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "FedCmAutoSignin", |
| depends_on: ["FedCm"], |
| public: true, |
| }, |
| { |
| // This only exists so we can use RuntimeEnabled in the IDL file |
| // when either implied_by flag is enabled. |
| name: "FedCmIdentityProviderInterface", |
| implied_by: ["FedCmIdpSigninStatus", "FedCmUserInfo"], |
| }, |
| { |
| name: "FedCmIdpSigninStatus", |
| depends_on: ["FedCm"], |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "FedCmIdpSignout", |
| depends_on: ["FedCm"], |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "FedCmIframeSupport", |
| depends_on: ["FedCm"], |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "FedCmLoginHint", |
| depends_on: ["FedCm"], |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "FedCmMultipleIdentityProviders", |
| depends_on: ["FedCm"], |
| public: true, |
| }, |
| { |
| name: "FedCmRpContext", |
| depends_on: ["FedCm"], |
| public: true, |
| }, |
| { |
| name: "FedCmSelectiveDisclosure", |
| depends_on: ["FedCm"], |
| public: true, |
| }, |
| { |
| name: "FedCmUserInfo", |
| depends_on: ["FedCm"], |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "FencedFrames", |
| // This helps enable and expose the <fencedframe> element, but note that |
| // blink::features::kFencedFrames must be enabled as well, similar to |
| // Portals, as we require the support of the browser process to fully |
| // enable the feature. Enabling this runtime enabled feature alone has no |
| // effect. |
| origin_trial_feature_name: "PrivacySandboxAdsAPIs", |
| origin_trial_allows_third_party: true, |
| public: true, |
| }, |
| { |
| name: "FencedFramesAPIChanges", |
| // Various new IDL attributes on the <fencedframe> element (such as |
| // `config`, `sandbox`, and `allow`). |
| origin_trial_feature_name: "PrivacySandboxAdsAPIs", |
| origin_trial_allows_third_party: true, |
| base_feature: "FencedFramesAPIChanges", |
| base_feature_status: "disabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "FetchUploadStreaming", |
| status: "stable", |
| }, |
| { |
| // Also enabled when blink::features::kFileHandlingAPI is overridden |
| // on the command line (or via chrome://flags). |
| name: "FileHandling", |
| depends_on: ["FileSystemAccessLocal"], |
| status: {"Android": "test", "default": "stable"}, |
| origin_trial_feature_name: "FileHandling", |
| origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos"], |
| base_feature: "FileHandlingAPI", |
| }, |
| { |
| name: "FileHandlingIcons", |
| depends_on: ["FileHandling"], |
| status: {"Android": "test", "default": "experimental"}, |
| }, |
| { |
| name: "FileSystem", |
| public: true, |
| status: "stable", |
| }, |
| { |
| // Shared objects by OPFS and non-OPFS File System Access API. |
| name: "FileSystemAccess", |
| implied_by: ["FileSystemAccessLocal", "FileSystemAccessOriginPrivate"], |
| }, |
| { |
| name: "FileSystemAccessAccessHandle", |
| status: "stable", |
| }, |
| { |
| // In-development features for the File System Access API. |
| name: "FileSystemAccessAPIExperimental", |
| status: "experimental", |
| }, |
| { |
| // Non-OPFS File System Access API. |
| name: "FileSystemAccessLocal", |
| status: {"Android": "test", "default": "stable"}, |
| }, |
| { |
| // OPFS File System Access API. |
| name: "FileSystemAccessOriginPrivate", |
| status: "stable", |
| }, |
| { |
| name: "FirstPartySets", |
| status: "experimental", |
| }, |
| { |
| name: "FirstRectForRangeVertical", |
| status: "stable", |
| base_feature: "FirstRectForRangeVertical", |
| }, |
| { |
| name: "FixedElementsDontOverscroll", |
| status: "stable", |
| base_feature: "FixedElementsDontOverscroll", |
| }, |
| { |
| name: "Fledge", |
| origin_trial_feature_name: "PrivacySandboxAdsAPIs", |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| name: "FluentScrollbars", |
| }, |
| { |
| name: "Focusgroup", |
| status: "experimental", |
| origin_trial_feature_name: "Focusgroup", |
| }, |
| { |
| name: "FocuslessSpatialNavigation", |
| settable_from_internals: true, |
| }, |
| { |
| name: "FontAccess", |
| base_feature: "FontAccess", |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "FontSrcLocalMatching", |
| // No status, as the web platform runtime enabled feature is controlled by |
| // a Chromium level feature. |
| }, |
| { |
| name: "FontVariantAlternates", |
| status: "stable", |
| }, |
| { |
| name: "FontVariantPosition", |
| status: "experimental", |
| }, |
| { |
| // TODO(crbug.com/1231644): This flag is being kept (even though the |
| // feature has shipped) until there are settings to allow users to |
| // customize the feature. |
| name: "ForcedColors", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "ForcedColorsPreserveParentColor", |
| status: "stable", |
| }, |
| { |
| // This is used in tests to perform memory measurement without |
| // waiting for GC. |
| name:"ForceEagerMeasureMemory", |
| }, |
| { |
| // https://github.com/flackr/reduce-motion/blob/main/explainer.md |
| name: "ForceReduceMotion", |
| }, |
| { |
| name: "ForceTallerSelectPopup", |
| status: {"ChromeOS_Ash": "stable", "ChromeOS_Lacros": "stable"}, |
| }, |
| { |
| name: "FormattedText", |
| status: "experimental", |
| }, |
| { |
| name: "FormControlsVerticalWritingModeSupport", |
| status: "experimental", |
| base_feature: "FormControlsVerticalWritingModeSupport", |
| }, |
| { |
| name: "FormRelAttribute", |
| status: "stable", |
| base_feature: "FormRelAttribute", |
| }, |
| { |
| name: "FractionalScrollOffsets", |
| implied_by: ["PercentBasedScrolling"], |
| public: true, |
| }, |
| { |
| name: "FreezeFramesOnVisibility", |
| status: "experimental", |
| }, |
| { |
| // If enabled, `window.screen` always provides display dimensions. |
| // Otherwise, `window.screen` provides viewport dimensions in fullscreen |
| // as a speculative site compatibility measure, because web authors may |
| // assume that screen dimensions match window.innerWidth/innerHeight while |
| // a page is fullscreen, but that is not always true. crbug.com/1367416 |
| name: "FullscreenScreenSizeMatchesDisplay", |
| status: "experimental", |
| base_feature: "FullscreenScreenSizeMatchesDisplay", |
| }, |
| { |
| name: "GamepadButtonAxisEvents", |
| status: "experimental", |
| }, |
| { |
| name: "GetDisplayMedia", |
| public: true, |
| status: { |
| "Android": "experimental", |
| "default": "stable", |
| }, |
| }, |
| { |
| // Enables the getDisplayMediaSet API for multi surface capture. |
| name: "GetDisplayMediaSet", |
| depends_on: ["GetDisplayMedia"], |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "GetDisplayMediaSetAutoSelectAllScreens", |
| depends_on: ["GetDisplayMediaSet"], |
| public: true, |
| status: { |
| "ChromeOS_Ash": "test", |
| "ChromeOS_Lacros": "test", |
| "Linux": "test", |
| "default": "", |
| } |
| }, |
| { |
| name: "GroupEffect", |
| status: "test", |
| }, |
| { |
| name: "HandwritingRecognition", |
| status: { |
| "ChromeOS_Ash": "stable", |
| "ChromeOS_Lacros": "stable", |
| "default": "experimental", |
| }, |
| }, |
| // HighlightAPI's custom highlights use HighlightInheritance's behavior even |
| // if the HighlightInheritance feature is not enabled. |
| { |
| name: "HighlightAPI", |
| status: "stable", |
| }, |
| { |
| name: "HighlightInheritance", |
| status: "experimental", |
| }, |
| { |
| name: "HighlightOverlayPainting", |
| status: "stable", |
| }, |
| { |
| name: "HighlightPointerEvents", |
| depends_on: ["HighlightAPI"], |
| }, |
| { |
| name: "HrefTranslate", |
| depends_on: ["TranslateService"], |
| origin_trial_feature_name: "HrefTranslate", |
| status: "stable", |
| }, |
| { |
| // A kill-switch for a fix of crbug.com/108489. |
| name: "HTMLMapToImgMatchingByNameAndId", |
| status: "stable", |
| base_feature: "HTMLMapToImgMatchingByNameAndId", |
| }, |
| { |
| // TODO(crbug.com/1307772): Enables the Popover API. |
| name: "HTMLPopoverAttribute", |
| status: "experimental", |
| // Because the OT is already underway, it is being left with the "popup" name. |
| origin_trial_feature_name: "HTMLPopupAttribute", |
| implied_by: ["HTMLSelectMenuElement"], |
| base_feature: "HTMLPopoverAttribute", |
| }, |
| { |
| name: "HTMLSelectMenuElement", |
| status: "experimental", |
| }, |
| { |
| name: "IDBBatchGetAll", |
| status:"experimental", |
| }, |
| { |
| name: "IdleDetection", |
| public: true, |
| status: "stable", |
| }, |
| { |
| // TODO(crbug.com/1406358): Remove after the origin trial ends in M113. |
| name: "IgnoreCSPInWebPaymentAPI", |
| base_feature: "IgnoreCSPInWebPaymentAPI", |
| origin_trial_feature_name: "IgnoreCSPInWebPaymentAPI", |
| origin_trial_allows_third_party: true, |
| public: true, |
| }, |
| { |
| name: "ImeVerticalFlag", |
| status: "stable", |
| base_feature: "ImeVerticalFlag", |
| }, |
| { |
| name: "ImplicitRootScroller", |
| public: true, |
| settable_from_internals: true, |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "IncomingCallNotifications", |
| base_feature: "IncomingCallNotifications", |
| }, |
| { |
| name: "InertAttribute", |
| status: "stable", |
| }, |
| { |
| // If a painting bug no longer reproduces with this feature enabled, then |
| // the bug is caused by incorrect cull rects. |
| name: "InfiniteCullRect", |
| }, |
| { |
| // If enabled, setting innerHTML will use a special fast-path parser. |
| name: "InnerHTMLParserFastpath", |
| base_feature: "InnerHTMLParserFastpath", |
| status: "experimental", |
| }, |
| { |
| name: "InputMultipleFieldsUI", |
| // No plan to support complex UI for date/time INPUT types on Android. |
| status: {"Android": "test", "default": "stable"}, |
| }, |
| { |
| name: "InstalledApp", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "KeyboardAccessibleTooltip", |
| status: "experimental", |
| }, |
| { |
| name: "KeyboardFocusableScrollers", |
| status: "experimental", |
| }, |
| { |
| name: "LangAttributeAwareFormControlUI", |
| settable_from_internals: true, |
| }, |
| { |
| name: "LangAttributeAwareSvgText", |
| base_feature: "LangAttributeAwareSvgText", |
| status: "stable", |
| }, |
| { |
| name: "LayoutMediaNGContainer", |
| // This feature doesn't work in the legacy layout. |
| depends_on: ["LayoutNGPrinting"], |
| status: "stable", |
| base_feature: "LayoutMediaNGContainer", |
| }, |
| { |
| // A kill-switch for a fix of crbug.com/1366268. |
| name: "LayoutNGDelayScrollOffsetClamping", |
| base_feature: "LayoutNGDelayScrollOffsetClamping", |
| status: "stable", |
| }, |
| { |
| // crbug.com/1353190 |
| name: "LayoutNGNoCopyBack", |
| depends_on: ["LayoutMediaNGContainer", "LayoutNGReplacedNoBoxSetters"], |
| status: "stable", |
| base_feature: "LayoutNGNoCopyBack", |
| }, |
| { |
| name: "LayoutNGPrinting", |
| status: "stable", |
| base_feature: "LayoutNGPrinting", |
| }, |
| { |
| // Avoid UpdateLogicalWidth() and UpdateLogicalHeight() in LayoutReplaced |
| // subclasses. |
| // It's a part of "stop-copying-back" project. crbug.com/1353190 |
| name: "LayoutNGReplacedNoBoxSetters", |
| depends_on: ["LayoutNGPrinting"], |
| status: "stable", |
| base_feature: "LayoutNGReplacedNoBoxSetters", |
| }, |
| { |
| name: "LayoutNGSubgrid", |
| status: "test" |
| }, |
| { |
| // Merge UpdateAfterLayout() calls for LayoutReplaced into one in |
| // CopyFragmentDataToLayoutBox(). crbug.com/1353190 |
| name: "LayoutNGUnifyUpdateAfterLayout", |
| // This feature doesn't work in the legacy layout. |
| depends_on: ["LayoutNGPrinting"], |
| status: "stable", |
| base_feature: "LayoutNGUnifyUpdateAfterLayout", |
| }, |
| { |
| name: "LazyFrameLoading", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "LazyImageLoading", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "LazyImageVisibleLoadTimeMetrics", |
| public: true, |
| }, |
| { |
| name: "LazyInitializeMediaControls", |
| public: true, |
| // This is enabled by features::kLazyInitializeMediaControls. |
| }, |
| { |
| name: "LCPAnimatedImagesWebExposed", |
| status: "test", |
| }, |
| { |
| name: "LCPMouseoverHeuristics", |
| base_feature: "LCPMouseoverHeuristics" |
| }, |
| { |
| name: "LCPMultipleUpdatesPerElement", |
| base_feature: "LCPMultipleUpdatesPerElement" |
| }, |
| { |
| name: "LegacyWindowsDWriteFontFallback", |
| // Enabled by features::kLegacyWindowsDWriteFontFallback; |
| }, |
| { |
| name: "MachineLearningCommon", |
| implied_by: ["MachineLearningModelLoader", "MachineLearningNeuralNetwork"], |
| status: "experimental", |
| }, |
| { |
| name: "MachineLearningModelLoader", |
| status: "experimental", |
| }, |
| { |
| name: "MachineLearningNeuralNetwork", |
| status: "test", |
| }, |
| { |
| name: "ManagedConfiguration", |
| status: "stable", |
| base_feature: "ManagedConfiguration", |
| }, |
| { |
| name: "MathMLCore", |
| status: "stable", |
| base_feature: "MathMLCore", |
| }, |
| { |
| name:"MeasureMemory", |
| status:"stable", |
| }, |
| { |
| name: "MediaCapabilitiesDynamicRange", |
| status: "test", |
| }, |
| { |
| name: "MediaCapabilitiesEncodingInfo", |
| status: "experimental", |
| }, |
| { |
| name: "MediaCapabilitiesSpatialAudio", |
| status: "test", |
| }, |
| { |
| name: "MediaCapture", |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "MediaCaptureBackgroundBlur", |
| status: "experimental", |
| }, |
| // Set to reflect the MediaCastOverlayButton feature. |
| { |
| name: "MediaCastOverlayButton", |
| public: true, |
| }, |
| { |
| name: "MediaControlsExpandGesture", |
| public: true, |
| }, |
| { |
| name: "MediaControlsOverlayPlayButton", |
| public: true, |
| settable_from_internals: true, |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "MediaElementVolumeGreaterThanOne", |
| }, |
| // Set to reflect the kMediaEngagementBypassAutoplayPolicies feature. |
| { |
| name: "MediaEngagementBypassAutoplayPolicies", |
| public: true, |
| }, |
| { |
| name: "MediaLatencyHint", |
| status: "test", |
| }, |
| { |
| name: "MediaQueryNavigationControls", |
| }, |
| { |
| name: "MediaSession", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "MediaSessionSlides", |
| status: "stable", |
| }, |
| { |
| name: "MediaSourceExperimental", |
| status: "experimental", |
| }, |
| { |
| name: "MediaSourceExtensionsForWebCodecs", |
| status: "experimental", |
| origin_trial_feature_name: "MediaSourceExtensionsForWebCodecs", |
| }, |
| { |
| name: "MediaSourceInWorkers", |
| status: "stable", |
| origin_trial_feature_name: "MediaSourceInWorkers", |
| base_feature: "MediaSourceInWorkers", |
| }, |
| { |
| // Availability of this feature depends on MediaSourceInWorkers also |
| // being enabled. MediaSourceInWorkers is an OT feature, so this cannot |
| // use the "depends_on" key. |
| name: "MediaSourceInWorkersUsingHandle", |
| status: "stable", |
| base_feature: "MediaSourceInWorkersUsingHandle", |
| }, |
| { |
| name: "MediaSourceNewAbortAndDuration", |
| status: "experimental", |
| }, |
| { |
| // This is used in cases of mixed specification of stable and |
| // experimental MediaSource features, such as in the IDL for an interface |
| // constructor where exposure of the constructor in Window vs other |
| // contexts can vary in stable vs experimental. |
| name: "MediaSourceStable", |
| status: "stable", |
| }, |
| { |
| name: "MediaStreamTrackTransfer", |
| status: "test", |
| }, |
| // This is enabled by default on Windows only. The only part that's |
| // "experimental" is the support on other platforms. |
| { |
| name: "MiddleClickAutoscroll", |
| status: "test", |
| }, |
| { |
| |
| name: "MobileLayoutTheme", |
| }, |
| { |
| name: "MojoJS", |
| status: "test", |
| }, |
| // MojoJSTest is used exclusively in testing environments, whereas MojoJS |
| // may also be used elsewhere. |
| { |
| name: "MojoJSTest", |
| status: "test", |
| }, |
| { |
| // When enabled, iframes are not capturing mouse events by default. |
| name: "MouseSubframeNoImplicitCapture", |
| public: true, |
| }, |
| { |
| name: "NavigationId", |
| status: "experimental", |
| base_feature: "NavigationId", |
| origin_trial_feature_name: "SoftNavigationHeuristics", |
| }, |
| { |
| name: "NavigatorContentUtils", |
| // Android does not yet support NavigatorContentUtils. |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "NetInfoDownlinkMax", |
| public: true, |
| // Only Android, ChromeOS support NetInfo downlinkMax, type and ontypechange now |
| status: { |
| "Android": "stable", |
| "ChromeOS_Ash": "stable", |
| "ChromeOS_Lacros": "stable", |
| "default": "experimental", |
| }, |
| }, |
| { |
| name: "NewFlexboxSizing", |
| }, |
| { |
| name: "NoIdleEncodingForWebTests", |
| status: "test", |
| }, |
| { |
| name: "NotificationConstructor", |
| // Android won't be able to reliably support non-persistent notifications, the |
| // intended behavior for which is in flux by itself. |
| status: {"Android": "", "default": "stable"}, |
| }, |
| // NotificationContentImage is not available in all platforms |
| // The Notification Center on Mac OS X does not support content images. |
| { |
| name: "NotificationContentImage", |
| public: true, |
| status: {"Mac": "test", "default": "stable"}, |
| }, |
| { |
| name: "Notifications", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "NotificationTriggers", |
| origin_trial_feature_name: "NotificationTriggers", |
| status: "experimental", |
| }, |
| // Origin trial to experiment with No-Vary-Search in Prefetch Cache |
| // See crbug.com/1378075. Depends on SpeculationRulesPrefetchProxy to be |
| // enabled. |
| // On the browser side, the trial needs features::kPrefetchUseContentRefactor |
| // enabled. If features::kPrefetchUseContentRefactor is disabled, then |
| // the code will behave as if PrefetchNoVarySearch is disabled. |
| { |
| name: "NoVarySearchPrefetch", |
| origin_trial_feature_name: "NoVarySearchPrefetch", |
| }, |
| { |
| name: "OffMainThreadCSSPaint", |
| status: "stable", |
| }, |
| { |
| name: "OffscreenCanvasCommit", |
| status: "experimental", |
| }, |
| { |
| // TODO(crbug.com/920069): Remove OffsetParentNewSpecBehavior after the |
| // feature is in stable with no issues. |
| name: "OffsetParentNewSpecBehavior", |
| status: "stable", |
| base_feature: "OffsetParentNewSpecBehavior", |
| public: true, |
| }, |
| { |
| name: "OnDeviceChange", |
| // Android does not yet support SystemMonitor. |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "OrientationEvent", |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "OriginIsolationHeader", |
| status: "stable", |
| }, |
| { |
| name: "OriginPolicy", |
| status: "experimental", |
| }, |
| |
| // Define a sample API for testing integration with the Origin Trials |
| // Framework. The sample API is used in both unit and web tests for the |
| // Origin Trials Framework. Do not change this flag to stable, as it exists |
| // solely to generate code used by the sample API implementation. |
| { |
| name: "OriginTrialsSampleAPI", |
| origin_trial_feature_name: "Frobulate", |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| // TODO(yashard): Add tests for this feature. |
| { |
| name: "OriginTrialsSampleAPIDependent", |
| depends_on: ["OriginTrialsSampleAPI"], |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| { |
| name: "OriginTrialsSampleAPIDeprecation", |
| origin_trial_feature_name: "FrobulateDeprecation", |
| origin_trial_type: "deprecation", |
| origin_trial_allows_insecure: true, |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| { |
| name: "OriginTrialsSampleAPIExpiryGracePeriod", |
| origin_trial_feature_name: "FrobulateExpiryGracePeriod", |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| { |
| name: "OriginTrialsSampleAPIExpiryGracePeriodThirdParty", |
| origin_trial_feature_name: "FrobulateExpiryGracePeriodThirdParty", |
| origin_trial_allows_third_party: true, |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| { |
| name: "OriginTrialsSampleAPIImplied", |
| origin_trial_feature_name: "FrobulateImplied", |
| implied_by: ["OriginTrialsSampleAPI", "OriginTrialsSampleAPIInvalidOS"], |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| { |
| name: "OriginTrialsSampleAPIInvalidOS", |
| origin_trial_feature_name: "FrobulateInvalidOS", |
| origin_trial_os: ["invalid"], |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| { |
| name: "OriginTrialsSampleAPINavigation", |
| origin_trial_feature_name: "FrobulateNavigation", |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| { |
| name: "OriginTrialsSampleAPIPersistentExpiryGracePeriod", |
| origin_trial_feature_name: "FrobulatePersistentExpiryGracePeriod", |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| { |
| name: "OriginTrialsSampleAPIPersistentFeature", |
| origin_trial_feature_name: "FrobulatePersistent", |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| { |
| name: "OriginTrialsSampleAPIThirdParty", |
| origin_trial_feature_name: "FrobulateThirdParty", |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| name: "OverscrollCustomization", |
| status: "experimental", |
| }, |
| // The following are developer opt-outs and opt-ins for page freezing. If |
| // neither is specified then heuristics will be applied to determine whether |
| // the page is eligible. |
| { |
| name: "PageFreezeOptIn", |
| origin_trial_feature_name: "PageFreezeOptIn", |
| }, |
| { |
| name: "PageFreezeOptOut", |
| origin_trial_feature_name: "PageFreezeOptOut", |
| }, |
| { |
| name: "PagePopup", |
| // Android does not have support for PagePopup |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "PaintUnderInvalidationChecking", |
| settable_from_internals: true, |
| }, |
| { |
| // PARAKEET ad serving runtime flag/JS API. |
| name: "Parakeet", |
| origin_trial_feature_name: "Parakeet", |
| base_feature: "Parakeet", |
| }, |
| { |
| name: "PartitionedCookies", |
| origin_trial_feature_name: "PartitionedCookies", |
| // No status because this blink runtime feature doesn't work by itself. |
| // It's controlled by the corresponding Chromium feature, |
| // net::features::kPartitionedCookies, which needs to be enabled to make |
| // the whole feature work. |
| }, |
| // This is to add an option to enable the Reveal button on password inputs while waiting ::reveal gets standardized. |
| { |
| name: "PasswordReveal", |
| }, |
| { |
| name: "PaymentApp", |
| depends_on: ["PaymentRequest"], |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "PaymentInstruments", |
| depends_on: ["PaymentApp"], |
| status: "stable", |
| }, |
| { |
| name: "PaymentMethodChangeEvent", |
| depends_on: ["PaymentRequest"], |
| status: "stable", |
| }, |
| // PaymentRequest is enabled by default on Android |
| { |
| name: "PaymentRequest", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "PaymentRequestMerchantValidationEvent", |
| status: "experimental", |
| }, |
| { |
| name: "PendingBeaconAPI", |
| origin_trial_feature_name: "PendingBeaconAPI", |
| origin_trial_allows_third_party: true, |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "PercentBasedScrolling", |
| public: true, |
| settable_from_internals: true, |
| }, |
| { |
| name: "PerformanceManagerInstrumentation", |
| public: true, |
| }, |
| { |
| name: "PeriodicBackgroundSync", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "PerMethodCanMakePaymentQuota", |
| origin_trial_feature_name: "PerMethodCanMakePaymentQuota", |
| status: "experimental", |
| }, |
| { |
| name: "Permissions", |
| public: true, |
| status: "stable", |
| }, |
| // See https://crbug.com/1324111 |
| { |
| name: "PermissionsPolicyUnload", |
| origin_trial_feature_name: "PermissionsPolicyUnload", |
| status: "experimental", |
| base_feature: "PermissionsPolicyUnload", |
| }, |
| { |
| name: "PermissionsRequestRevoke", |
| status: "experimental", |
| }, |
| // This is a reverse OT used for a phased deprecation. |
| // https://crbug.com/918374 |
| { |
| name: "PNaCl", |
| origin_trial_feature_name: "PNaCl", |
| }, |
| { |
| name: "PointerLockOptions", |
| origin_trial_feature_name: "PointerLockOptions", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "Portals", |
| // Portals must be enabled by blink::features::kPortals as we require the |
| // support of the browser process to enable the feature. Enabling this |
| // feature specifically within blink has no effect. An experimental/test |
| // status can only be set here if the default of blink::features::kPortals |
| // allows for it. |
| |
| // Note that the origin trial paramaters are kept for future OT usage. |
| // There is no currently running OT and it is not possible for OT code to |
| // enable portals without browser process support. |
| origin_trial_feature_name: "Portals", |
| origin_trial_os: ["android"], |
| public: true, |
| base_feature: "Portals", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "PreciseMemoryInfo", |
| public: true, |
| }, |
| // Prefer not using composited scrolling. Composited scrolling will still |
| // be used if there are other reasons forcing compositing. For consistency, |
| // any code calling Settings::GetPreferCompositingToLCDTextEnabled() should |
| // ensure that this flag overrides the setting. |
| { |
| name: "PreferNonCompositedScrolling", |
| settable_from_internals: true, |
| }, |
| { |
| name: "PrefersReducedData", |
| status: "experimental", |
| }, |
| // TODO(crbug/695586): This flag is being used to deprecate support for |
| // legacy quota API window.webkitStorageInfo. |
| { |
| name: "PrefixedStorageInfo", |
| public: true, |
| status: "test", |
| base_feature: "PrefixedStorageInfo", |
| base_feature_status: "disabled", |
| }, |
| // This feature is deprecated and we are evangelizing affected sites. |
| // See https://crbug.com/346236 for current status. |
| { |
| name: "PrefixedVideoFullscreen", |
| status: "stable", |
| }, |
| { |
| // https://crbug.com/1126305 |
| name: "Prerender2", |
| status: "stable", |
| base_feature: "Prerender2", |
| }, |
| // This RTE feature is used to indicate the status of RTE feature Prerender2 |
| // and an embedder feature flag that enables the Prerender2. With this flag |
| // on, the related functions document.prerendering, |
| // document.onprerenderingchange, and activationStart will be exported. |
| { |
| name: "Prerender2RelatedFeatures", |
| implied_by: ["Prerender2"], |
| // This is not going into origin trial, "origin_trial_feature_name" is |
| // required for using the "implied_by" behaviour. |
| origin_trial_feature_name: "Prerender2RelatedFeatures__DONOTUSE", |
| public: true, |
| }, |
| { |
| name: "Presentation", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "PriorityHints", |
| status: "stable", |
| }, |
| // The RTE feature encompasses multiple APIs, including: Attribution |
| // Reporting, FLEDGE, Topics and Fenced Frames. |
| { |
| name: "PrivacySandboxAdsAPIs", |
| origin_trial_feature_name: "PrivacySandboxAdsAPIs", |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| name: "PrivateNetworkAccessNonSecureContextsAllowed", |
| origin_trial_feature_name: "PrivateNetworkAccessNonSecureContextsAllowed", |
| origin_trial_type: "deprecation", |
| origin_trial_allows_insecure: true, |
| status: "experimental", |
| }, |
| { |
| name: "PrivateNetworkAccessPermissionPrompt", |
| base_feature: "PrivateNetworkAccessPermissionPrompt", |
| }, |
| { |
| name: "PrivateStateTokens", |
| origin_trial_feature_name: "TrustTokens", |
| origin_trial_allows_third_party: true, |
| public: true, |
| // status: "test", |
| }, |
| { |
| // Always allow trust token issuance (so long as the base::Feature |
| // is enabled). Used for testing; circumvents a runtime check that, |
| // if this RuntimeEnabledFeature is not present, guarantees the origin |
| // trial is enabled. |
| name: "PrivateStateTokensAlwaysAllowIssuance", |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "PushMessaging", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "PushMessagingSubscriptionChange", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "QuickIntensiveWakeUpThrottlingAfterLoading", |
| base_feature: "QuickIntensiveWakeUpThrottlingAfterLoading", |
| }, |
| { |
| name: "QuotaChange", |
| status: "experimental", |
| }, |
| // If enabled, the Accept-Language header will be reduced. |
| { |
| name: "ReduceAcceptLanguage", |
| origin_trial_feature_name: "ReduceAcceptLanguage" |
| }, |
| { |
| // If enabled, the deviceModel will be reduced to "K" and the |
| // androidVersion will be reduced to a static "10" string in android |
| // User-Agent string. |
| name: "ReduceUserAgentAndroidVersionDeviceModel", |
| depends_on: ["ReduceUserAgentMinorVersion"], |
| status: {"Android": "experimental"}, |
| base_feature: "ReduceUserAgentAndroidVersionDeviceModel", |
| }, |
| // If enabled, the minor version of the User-Agent string will be reduced. |
| // This User-Agent Reduction feature has been enabled starting from M101, |
| // but we still keep this flag for future phase tests. |
| { |
| name: "ReduceUserAgentMinorVersion", |
| status: "stable", |
| base_feature: "ReduceUserAgentMinorVersion", |
| }, |
| { |
| // If enabled, the platform and oscpu of the User-Agent string will be |
| // reduced. |
| name: "ReduceUserAgentPlatformOsCpu", |
| depends_on: ["ReduceUserAgentMinorVersion"], |
| status: "experimental", |
| base_feature: "ReduceUserAgentPlatformOsCpu", |
| }, |
| { |
| name: "RegionCapture", |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "RemotePlayback", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "RemotePlaybackBackend", |
| settable_from_internals: true, |
| // Tracking bug for the implementation: https://crbug.com/728609 |
| status: {"Android": "stable", "default": ""}, |
| }, |
| { |
| name: "RemoveDataUrlInSvgUse", |
| status: "experimental" |
| }, |
| { |
| name: "RemoveMobileViewportDoubleTap", |
| public: true, |
| status: "stable" |
| }, |
| { |
| name: "RenderBlockingStatus", |
| status: "stable" |
| }, |
| { |
| // The renderpriority attribute feature. |
| // https://github.com/WICG/display-locking/blob/main/explainers/update-rendering.md |
| name: "RenderPriorityAttribute" |
| }, |
| { |
| name: "ResourceTimingContentType", |
| status: "experimental", |
| }, |
| { |
| name: "ResourceTimingInterimResponseTimes", |
| status: "test" |
| }, |
| { |
| name: "ResourceTimingResponseStatus", |
| status: "stable", |
| }, |
| { |
| name: "ResourceTimingUseCORSForBodySizes", |
| status: "test" |
| }, |
| { |
| name: "RestrictGamepadAccess", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "RtcAudioJitterBufferMaxPackets", |
| origin_trial_feature_name: "RtcAudioJitterBufferMaxPackets", |
| status: "experimental", |
| }, |
| { |
| name: "RTCEncodedVideoFrameAdditionalMetadata", |
| status: "experimental", |
| base_feature: "RTCEncodedVideoFrameAdditionalMetadata", |
| }, |
| { |
| name: "RTCEncodedVideoFrameClone", |
| status: "experimental", |
| base_feature: "RTCEncodedVideoFrameClone", |
| }, |
| // Enables the use of the RTCIceTransport with extensions. |
| { |
| name: "RTCIceTransportExtension", |
| origin_trial_feature_name: "RTCQuicTransport", |
| status: "experimental", |
| }, |
| // Enables the use of the Insertable Streams legacy API. |
| // TODO(https://crbug.com/1119801): Remove when the origin trial ends. |
| { |
| name: "RTCInsertableStreams", |
| origin_trial_feature_name: "RTCInsertableStreams", |
| status: "experimental", |
| }, |
| // Enables the use of the RTCQuicTransport object. |
| { |
| name: "RTCQuicTransport", |
| origin_trial_feature_name: "RTCQuicTransport", |
| status: "experimental", |
| }, |
| // Enables the use of |RTCRtpTransceiver::setOfferedRtpHeaderExtensions|, |
| // |RTCRtpTransceiver::headerExtensionsToOffer|, and |
| // |RTCRtpTransceiver::headerExtensionsNegotiated|. |
| { |
| name: "RTCRtpHeaderExtensionControl", |
| status: "experimental", |
| }, |
| { |
| name: "RTCStatsRelativePacketArrivalDelay", |
| origin_trial_feature_name: "RTCStatsRelativePacketArrivalDelay", |
| status: "experimental", |
| }, |
| // Enables the use of SVC scalability mode in WebRTC. |
| // Spec: https://w3c.github.io/webrtc-svc/ |
| { |
| name: "RTCSvcScalabilityMode", |
| status: "stable", |
| base_feature: "RTCSvcScalabilityMode", |
| }, |
| { |
| name: "SanitizerAPI", |
| status: "experimental", |
| base_feature: "SanitizerAPI", |
| }, |
| { |
| name: "SanitizerAPIv0", |
| status: "stable", |
| implied_by: ["SanitizerAPI"], |
| base_feature: "SanitizerAPIv0", |
| }, |
| { |
| // https://wicg.github.io/webcomponents/proposals/Scoped-Custom-Element-Registries |
| name: "ScopedCustomElementRegistry", |
| status: "test", |
| }, |
| |
| // WebSpeech API with both speech recognition and synthesis functionality |
| // is not fully enabled on all platforms. |
| { |
| name: "ScriptedSpeechRecognition", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "ScriptedSpeechSynthesis", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "ScriptElementSupports", |
| status: "stable", |
| }, |
| { |
| name: "ScrollbarWidth", |
| status: "test", |
| }, |
| { |
| name: "ScrollCustomization", |
| }, |
| { |
| name: "ScrollEndEvents", |
| status: "experimental", |
| }, |
| { |
| name: "ScrollTimeline", |
| status: "experimental", |
| implied_by: ["AnimationWorklet", "CSSScrollTimeline", "CSSViewTimeline"] |
| }, |
| // Implements documentElement.scrollTop/Left and bodyElement.scrollTop/Left |
| // as per the spec, matching other Web engines. |
| { |
| name: "ScrollTopLeftInterop", |
| status: "stable", |
| }, |
| { |
| name: "SecureContextFixForSharedWorkers", |
| status: "stable", |
| }, |
| // SecurePaymentConfirmation has shipped on some platforms, but its |
| // availability is controlled by the browser process (via the |
| // SecurePaymentConfirmationBrowser feature), as it requires browser |
| // support to function. See //content/public/common/content_features.cc |
| // |
| // The status is set to 'test' here to enable some WPT tests that only |
| // require blink-side support to function. |
| { |
| name: "SecurePaymentConfirmation", |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "SecurePaymentConfirmationDebug", |
| public: true, |
| }, |
| { |
| name: "SecurePaymentConfirmationOptOut", |
| origin_trial_feature_name: "SecurePaymentConfirmationOptOut", |
| origin_trial_allows_third_party: true, |
| status: "stable", |
| }, |
| { |
| // When a Web application calls getDisplayMedia() and asks for video, |
| // allow a hint to be provided as to whether the current tab should be |
| // excluded from the list of tabs offered to the user. |
| // |
| // https://github.com/w3c/mediacapture-screen-share/pull/216/files |
| name: "SelfBrowserSurfaceConstraint", |
| status: "stable", |
| }, |
| { |
| name: "SendBeaconThrowForBlobWithNonSimpleType", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "SendFullUserAgentAfterReduction", |
| origin_trial_feature_name: "SendFullUserAgentAfterReduction", |
| origin_trial_allows_third_party: true |
| }, |
| { |
| name: "SendMouseEventsDisabledFormControls", |
| base_feature: "SendMouseEventsDisabledFormControls", |
| status: "experimental", |
| public: true, |
| }, |
| { |
| name: "SensorExtraClasses", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "Serial", |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "ServiceWorkerBypassFetchHandler", |
| origin_trial_feature_name: "ServiceWorkerBypassFetchHandlerForMainResource", |
| public: true, |
| }, |
| { |
| name: "ServiceWorkerClientLifecycleState", |
| status: "experimental", |
| }, |
| { |
| name: "SharedArrayBuffer", |
| public: true, |
| }, |
| { |
| name: "SharedArrayBufferOnDesktop", |
| public: true, |
| }, |
| { |
| name: "SharedArrayBufferUnrestrictedAccessAllowed", |
| public: true, |
| }, |
| { |
| name: "SharedAutofill", |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "SharedStorageAPI", |
| origin_trial_feature_name: "PrivacySandboxAdsAPIs", |
| origin_trial_allows_third_party: true, |
| public: true, |
| }, |
| { |
| name: "SharedWorker", |
| public: true, |
| // Android does not yet support SharedWorker. crbug.com/154571 |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "SignatureBasedIntegrity", |
| origin_trial_feature_name: "SignatureBasedIntegrity", |
| status: "experimental", |
| }, |
| { |
| name: "SiteInitiatedMirroring", |
| status: "experimental", |
| }, |
| { |
| name: "SkipAd", |
| depends_on: ["MediaSession"], |
| status: "experimental", |
| }, |
| { |
| // Skips the browser touch event filter, ensuring that events that reach |
| // the queue and would otherwise be filtered out will instead be passed |
| // onto the renderer compositor process as long as the page hasn't timed |
| // out. If skip_filtering_process is browser_and_renderer, also skip the |
| // renderer cc touch event filter, ensuring that events will be passed |
| // onto the renderer main thread. |
| name: "SkipTouchEventFilter", |
| base_feature: "SkipTouchEventFilter", |
| status: "stable", |
| }, |
| { |
| name: "SmartCard", |
| status: {"Android": "", "default": "test"}, |
| base_feature: "SmartCard", |
| }, |
| { |
| // If enabled Border, Outline and Column-Rule Widths |
| // will be pixel snapped before layout. |
| name: "SnapBorderWidthsBeforeLayout", |
| status: "stable", |
| base_feature: "SnapBorderWidthsBeforeLayout", |
| }, |
| { |
| name: "SoftNavigationHeuristics", |
| status: "experimental", |
| depends_on: ["NavigationId"], |
| base_feature: "SoftNavigationHeuristics", |
| origin_trial_feature_name: "SoftNavigationHeuristics", |
| }, |
| // An origin trial feature name is required for this, even though it's |
| // actually enabled by the more specific trial. Having these as separate |
| // features will allow Blink to distinguish for which thing the trial |
| // was enabled. |
| { |
| name: "SpeculationRules", |
| status: "stable", |
| implied_by: ["SpeculationRulesPrefetchProxy", "SpeculationRulesPrefetchWithSubresources", "Prerender2", "SpeculationRulesDocumentRules", "SpeculationRulesRelativeToDocument"], |
| origin_trial_feature_name: "SpeculationRules__DONOTUSE", |
| }, |
| { |
| name: "SpeculationRulesDocumentRules", |
| origin_trial_feature_name: "SpeculationRulesPrefetchFuture", |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| name: "SpeculationRulesDocumentRulesSelectorMatches", |
| }, |
| { |
| name: "SpeculationRulesEagerness", |
| }, |
| { |
| name: "SpeculationRulesFetchFromHeader", |
| origin_trial_feature_name: "SpeculationRulesPrefetchFuture", |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| name: "SpeculationRulesPointerDownHeuristics", |
| base_feature: "SpeculationRulesPointerDownHeuristics", |
| base_feature_status: "enabled", |
| }, |
| { |
| name: "SpeculationRulesPointerHoverHeuristics", |
| base_feature: "SpeculationRulesPointerHoverHeuristics" |
| }, |
| // This feature exists solely to be the target of implied_by for features |
| // that are part of this trial but which may also be enabled another way. |
| // Otherwise, runtime-enabled features can be added to the origin trial |
| // with the following: |
| // origin_trial_feature_name: "SpeculationRulesPrefetchFuture", |
| // origin_trial_allows_third_party: true, |
| { |
| name: "SpeculationRulesPrefetchFuture", |
| origin_trial_feature_name: "SpeculationRulesPrefetchFuture", |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| name: "SpeculationRulesPrefetchProxy", |
| origin_trial_feature_name: "SpeculationRulesPrefetch", |
| status: "stable", |
| base_feature: "SpeculationRulesPrefetchProxy", |
| copied_from_base_feature_if: "overridden", |
| implied_by: ["SpeculationRulesPrefetchFuture", "NoVarySearchPrefetch"], |
| }, |
| { |
| "name": "SpeculationRulesPrefetchWithSubresources", |
| }, |
| // Adds a "referrer_policy" key to speculation rules. See https://crbug.com/1355146 |
| // TODO(mcnee): This feature shipped in M111. Clean up this flag in M113. |
| { |
| name: "SpeculationRulesReferrerPolicyKey", |
| status: "stable", |
| base_feature: "SpeculationRulesReferrerPolicyKey", |
| origin_trial_feature_name: "SpeculationRulesReferrerPolicyKey", |
| implied_by: ["SpeculationRulesPrefetchFuture"], |
| }, |
| { |
| name: "SpeculationRulesRelativeToDocument", |
| origin_trial_feature_name: "SpeculationRulesPrefetchFuture", |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| name: "SrcsetMaxDensity", |
| }, |
| // Used as argument in attribute of stable-release functions/interfaces |
| // where a runtime-enabled feature name is required for correct IDL syntax. |
| // This is a global flag; do not change its status. |
| { |
| name: "StableBlinkFeatures", |
| status: "stable", |
| }, |
| { |
| // Enabled when blink::features::kStorageAccessAPI is enabled. |
| name: "StorageAccessAPI", |
| status: "experimental", |
| implied_by: ["FirstPartySets"], |
| }, |
| { |
| name: "StorageAccessAPIForOriginExtension", |
| public: true, |
| status: "test", |
| base_feature: "StorageAccessAPIForOriginExtension", |
| }, |
| { |
| name: "StorageBuckets", |
| status: "experimental", |
| base_feature: "StorageBuckets", |
| }, |
| { |
| // Gates the `locks()` method on a storage bucket. |
| name: "StorageBucketsLocks", |
| status: "experimental", |
| base_feature: "StorageBucketsLocks", |
| }, |
| { |
| name: "StreamingDeclarativeShadowDOM", |
| status: "experimental", |
| base_feature: "StreamingDeclarativeShadowDOM", |
| }, |
| { |
| name: "StrictMimeTypesForWorkers", |
| status: "experimental" |
| }, |
| { |
| name: "StylusHandwriting", |
| }, |
| { |
| name: "SupportsFontFormatTech", |
| status: "stable" |
| }, |
| { |
| // Allow an application that's capturing a tab, to control whether |
| // the local audio playback of the captured tab is suppressed. |
| // |
| // https://w3c.github.io/mediacapture-screen-share/#dfn-suppresslocalaudioplayback |
| name: "SuppressLocalAudioPlayback", |
| status: "stable", |
| }, |
| { |
| // When a Web application calls getDisplayMedia() and asks for video, |
| // allow a hint to be provided to offer the user an option to |
| // dynamically switch the source display surface during the capture. |
| // |
| // https://github.com/w3c/mediacapture-screen-share/pull/225/files |
| name: "SurfaceSwitchingConstraint", |
| status: "stable", |
| }, |
| { |
| // crbug.com/1393223 |
| name: "SvgContainersRejectSvgInDisplayContents", |
| status: "stable", |
| base_feature: "SvgContainersRejectSvgInDisplayContents", |
| }, |
| { |
| name: "SynthesizedKeyboardEventsForAccessibilityActions", |
| status: "experimental", |
| }, |
| { |
| // When a Web application calls getDisplayMedia() and asks for audio, |
| // allow a hint to be provided as to whether the Web application is |
| // interested in system-audio being among the options offered to the user. |
| // |
| // https://github.com/w3c/mediacapture-screen-share/pull/222/files |
| name: "SystemAudioConstraint", |
| status: "stable", |
| }, |
| { |
| name: "SystemWakeLock", |
| status: "experimental", |
| }, |
| // For unit tests. |
| { |
| name: "TestFeature", |
| browser_process_read_write_access: true, |
| }, |
| // For unit tests. |
| { |
| name: "TestFeatureDependent", |
| depends_on: ["TestFeatureImplied"], |
| }, |
| // For unit tests. |
| { |
| name: "TestFeatureImplied", |
| implied_by: ["TestFeature"], |
| }, |
| { |
| // crbug.com/1008951 |
| name: "TextDecoratingBox", |
| status: "stable", |
| }, |
| { |
| name: "TextDetector", |
| status: "experimental", |
| }, |
| { |
| name: "TextFragmentAPI", |
| status: "experimental", |
| }, |
| { |
| name: "TextFragmentIdentifiers", |
| origin_trial_feature_name: "TextFragmentIdentifiers", |
| public: true, |
| status: "stable", |
| base_feature: "TextFragmentAnchor", |
| }, |
| { |
| name: "TextFragmentTapOpensContextMenu", |
| status: {"Android": "stable"}, |
| }, |
| // To enable the deprecation trial, use the |
| // `DisableThirdPartyStoragePartitioning` feature instead. |
| { |
| name: "ThirdPartyStoragePartitioning", |
| status: "experimental", |
| browser_process_read_write_access: true, |
| }, |
| { |
| name: "TimerThrottlingForBackgroundTabs", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "TimeZoneChangeEvent", |
| status: "experimental", |
| }, |
| { |
| name: "TopicsAPI", |
| origin_trial_feature_name: "PrivacySandboxAdsAPIs", |
| origin_trial_allows_third_party: true, |
| public: true, |
| }, |
| { |
| name: "TopicsXHR", |
| origin_trial_feature_name: "PrivacySandboxAdsAPIs", |
| origin_trial_allows_third_party: true, |
| public: true, |
| }, |
| // https://crbug.com/1314739 |
| { |
| name: "TouchActionEffectiveAtPointerDown", |
| status: "stable", |
| }, |
| // This feature allows touch dragging and a context menu to occur |
| // simultaneously, with the assumption that the menu is non-modal. Without |
| // this feature, a long-press touch gesture can start either a drag or a |
| // context-menu in Blink, not both (more precisely, a context menu is shown |
| // only if a drag cannot be started). |
| { |
| name: "TouchDragAndContextMenu", |
| implied_by: ["TouchDragOnShortPress"], |
| public: true, |
| }, |
| // This feature makes touch dragging to occur at the short-press gesture, |
| // which occurs right before the long-press gesture. This feature assumes |
| // that TouchDragAndContextMenu is enabled. |
| { |
| name: "TouchDragOnShortPress", |
| }, |
| // Many websites disable mouse support when touch APIs are available. We'd |
| // like to enable this always but can't until more websites fix this bug. |
| // Chromium sets this conditionally (eg. based on the presence of a |
| // touchscreen) in ApplyWebPreferences. "Touch events" themselves are always |
| // enabled since they're a feature always supported by Chrome. |
| { |
| name: "TouchEventFeatureDetection", |
| origin_trial_feature_name: "ForceTouchEventFeatureDetectionForInspector", |
| public: true, |
| status: "stable", |
| }, |
| // This is conditionally set if the platform supports translation. |
| { |
| name: "TranslateService" |
| }, |
| { |
| name: "TrustedTypeBeforePolicyCreationEvent", |
| status: "experimental", |
| }, |
| { |
| name: "TrustedTypesFromLiteral", |
| status: "experimental", |
| }, |
| { |
| name: "TrustedTypesUseCodeLike", |
| status: "experimental", |
| }, |
| { |
| name: "UnclosedFormControlIsInvalid", |
| status: "experimental", |
| }, |
| { |
| // Allow unbalanced columns (no implicit breaks), even if the block-size |
| // of the multicol container isn't constrained, rather than forcing column |
| // balancing in such cases. See crbug.com/1156312 |
| name: "UnconstrainedColumnFillAuto", |
| status: "stable", |
| base_feature: "UnconstrainedColumnFillAuto", |
| }, |
| { |
| name: "UnexposedTaskIds", |
| }, |
| // This is a reverse OT used for a phased deprecation, on desktop |
| // https://crbug.com/1071424 |
| { |
| name: "UnrestrictedSharedArrayBuffer", |
| origin_trial_feature_name: "UnrestrictedSharedArrayBuffer", |
| origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos"], |
| }, |
| { |
| name: "URLPatternCompareComponent", |
| status: "experimental", |
| }, |
| { |
| name: "UserActivationSameOriginVisibility", |
| public: true, |
| }, |
| { |
| name: "UserAgentClientHint", |
| status: "stable", |
| base_feature: "UserAgentClientHint", |
| }, |
| { |
| name: "UserAgentReduction", |
| origin_trial_feature_name: "UserAgentReduction", |
| origin_trial_allows_third_party: true, |
| // iOS not included as it should not send a reduced User-Agent string. |
| origin_trial_os: ["android", "chromeos", "fuchsia", "linux", "mac", "win"], |
| base_feature: "ReduceUserAgent", |
| }, |
| { |
| // When moving trees between documents, traverse the tree first to |
| // notify nodes that they `WillMoveToNewDocument()` before doing a |
| // second traversal to move them. If not set, then these two steps are |
| // done during a single traversal at the cost of the ordering of |
| // `WillMoveToNewDocument()` sometimes being called after the node has |
| // already been moved. `false` is the original behavior, while `true` |
| // is the new default. Switch is present in case there is some |
| // interaction that causes a web-visible change that wasn't anticipated. |
| name: "UseSeparateTraversalForWillMove", |
| status: "stable", |
| base_feature: "UseSeparateTraversalForWillMove", |
| }, |
| { |
| name: "V8IdleTasks", |
| public: true, |
| }, |
| { |
| name: "VariableCOLRV1", |
| status: "stable", |
| base_feature: "VariableCOLRV1", |
| }, |
| { |
| // Whether a video element should automatically play fullscreen unless |
| // 'playsinline' is set. |
| name: "VideoAutoFullscreen", |
| settable_from_internals: true, |
| }, |
| { |
| name: "VideoFullscreenOrientationLock", |
| }, |
| { |
| name: "VideoPlaybackQuality", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "VideoRotateToFullscreen", |
| }, |
| { |
| name: "VideoTrackGenerator", |
| status: "test", |
| }, |
| { |
| name: "VideoTrackGeneratorInWindow", |
| status: "test", |
| }, |
| { |
| name: "VideoTrackGeneratorInWorker", |
| }, |
| { |
| name: "VideoWakeLockOptimisationHiddenMuted", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "ViewportHeightClientHintHeader", |
| status: "stable", |
| base_feature: "ViewportHeightClientHintHeader", |
| }, |
| { |
| name: "ViewportMetaInteractiveWidgetProperty", |
| status: "stable", |
| }, |
| { |
| name: "ViewportSegments", |
| status: "experimental", |
| }, |
| { |
| // View transitions. |
| // See https://www.w3.org/TR/css-view-transitions-1/ |
| name: "ViewTransition", |
| base_feature: "ViewTransition", |
| implied_by: ["ViewTransitionOnNavigation"], |
| }, |
| { |
| // If enabled, ViewTransition API is supported for navigations including |
| // cross-document transitions. |
| // See https://drafts.csswg.org/css-view-transitions-1/. |
| name: "ViewTransitionOnNavigation", |
| base_feature: "ViewTransitionOnNavigation", |
| }, |
| { |
| name: "VisibilityCollapseColumn", |
| }, |
| { |
| name: "VisibilityStateEntry", |
| status: "experimental", |
| }, |
| { |
| // The "WakeLock" feature was originally implied_by "ScreenWakeLock" and |
| // "SystemWakeLock". The former was removed after being promoted to |
| // stable, but we need to keep this feature around for code and IDLs that |
| // should work with both screen and system wake locks. |
| name: "WakeLock", |
| status: "stable", |
| implied_by: ["SystemWakeLock"], |
| }, |
| { |
| // When enabled, this will issue a warning to the console any time |
| // rendering is forced withing content-visibility subtrees (both |
| // content-visibility: auto and content-visibility: hidden). |
| name: "WarnOnContentVisibilityRenderAccess", |
| }, |
| { |
| // A kill switch. Please consider removing this after M112. |
| name: "WarnSandboxIneffective", |
| status: "stable", |
| base_feature: "WarnSandboxIneffective", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "WebAnimationsAPI", |
| status: "stable", |
| implied_by: ["AnimationWorklet"], |
| }, |
| { |
| name: "WebAnimationsSVG", |
| status: "experimental", |
| }, |
| { |
| name: "WebAppDarkMode", |
| origin_trial_feature_name: "WebAppDarkModeV2", |
| status: "experimental", |
| base_feature: "WebAppEnableDarkMode", |
| }, |
| { |
| name: "WebAppLaunchHandler", |
| origin_trial_feature_name: "Launch Handler", |
| status: {"Android": "experimental", "default": "stable"}, |
| base_feature: "WebAppEnableLaunchHandler", |
| }, |
| { |
| name: "WebAppLaunchQueue", |
| // This is not going into origin trial, "origin_trial_feature_name" is |
| // required for using the "implied_by" behaviour. |
| origin_trial_feature_name: "WebAppLaunchQueue", |
| implied_by: ["WebAppLaunchHandler", "FileHandling"], |
| }, |
| { |
| name:"WebAppsLockScreen", |
| status:"experimental", |
| }, |
| { |
| name: "WebAppTabStrip", |
| status: "experimental", |
| }, |
| { |
| name: "WebAppTranslations", |
| status: "experimental", |
| base_feature: "WebAppEnableTranslations", |
| }, |
| { |
| // This flag enables the Manifest parser to handle URL Handlers. |
| // Also enabled when blink::features::kWebAppEnableUrlHandlers is |
| // overridden on the command line (or via chrome://flags). |
| name: "WebAppUrlHandling", |
| status: "experimental", |
| origin_trial_feature_name: "WebAppUrlHandling", |
| origin_trial_os: ["win", "mac", "linux"], |
| }, |
| { |
| name: "WebAppWindowControlsOverlay", |
| origin_trial_feature_name: "WebAppWindowControlsOverlay", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| status: "stable", |
| }, |
| { |
| name: "WebAssemblyGC", |
| origin_trial_feature_name: "WebAssemblyGC", |
| status: "experimental", |
| }, |
| // WebAuth is disabled on Android versions prior to N (7.0) due to lack of |
| // supporting APIs, see runtime_features.cc. |
| { |
| name: "WebAuth", |
| status: "stable", |
| }, |
| // When enabled adds the authenticator attachment used for registration and |
| // authentication to the public key credential response. |
| { |
| name: "WebAuthAuthenticatorAttachment", |
| status: "test" |
| }, |
| // A more subtle UI for WebAuthn that is web exposed. |
| // It's controlled by the corresponding Chromium feature which needs to |
| // be enabled to make the whole feature work, except for WPTs where the |
| // virtual authenticator environment is used. |
| { |
| name: "WebAuthenticationConditionalUI", |
| status: "stable", |
| }, |
| // https://github.com/w3c/webauthn/pull/1663 |
| { |
| name: "WebAuthenticationDevicePublicKey", |
| status: "experimental", |
| }, |
| { |
| name: "WebAuthenticationLargeBlobExtension", |
| status: "experimental", |
| }, |
| // https://w3c.github.io/webauthn/#prf-extension |
| { |
| name: "WebAuthenticationPRF", |
| status: "experimental", |
| }, |
| { |
| name: "WebAuthenticationRemoteDesktopSupport", |
| public: true, |
| }, |
| // WebBluetooth is enabled by default on Android, ChromeOS and Mac. |
| // It is also supported in Windows 10 which is handled in runtime_features.cc |
| { |
| name: "WebBluetooth", |
| public: true, |
| status: { |
| "Android": "stable", |
| "ChromeOS_Ash": "stable", "ChromeOS_Lacros": "stable", |
| "Mac": "stable", |
| "default": "experimental", |
| }, |
| }, |
| { |
| name: "WebBluetoothGetDevices", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "WebBluetoothScanning", |
| status: "experimental", |
| }, |
| { |
| name: "WebBluetoothWatchAdvertisements", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "WebCodecs", |
| status: "stable", |
| origin_trial_feature_name: "WebCodecs" |
| }, |
| { |
| name: "WebCodecsDequeueEvent", |
| status: "stable", |
| }, |
| { |
| name: "WebCryptoCurve25519", |
| status: "experimental", |
| }, |
| { |
| name: "WebFontResizeLCP", |
| status: "experimental", |
| base_feature: "WebFontResizeLCP", |
| }, |
| { |
| name: "WebGLDeveloperExtensions", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| // Draft WebGL extensions are deliberately not enabled by experimental web |
| // platform features. |
| name: "WebGLDraftExtensions", |
| public: true, |
| }, |
| { |
| name: "WebGLDrawingBufferStorage", |
| status: "experimental", |
| }, |
| { |
| name: "WebGLImageChromium", |
| public: true, |
| }, |
| // WebGPU adds a large attack surface area to the GPU process and allows |
| // running arbitrary programs on the GPU (compute shaders), which may |
| // perform arbitrary read/writes of GPU memory if not properly sandboxed. |
| // That's why it is not enabled as part of the |
| // --enable-experimental-web-platform-features flag. |
| { |
| name: "WebGPU", |
| origin_trial_feature_name: "WebGPU", |
| public: true, |
| }, |
| { |
| // WebGPU developer features are deliberately not enabled by experimental |
| // web platform features. |
| name: "WebGPUDeveloperFeatures", |
| public: true, |
| }, |
| { |
| // Requires both WebGPU and --enable-experimental-web-platform-features |
| name: "WebGPUImportTexture", |
| status: "experimental", |
| }, |
| { |
| name: "WebHID", |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| // It is only enabled in extension environment for now. |
| name: "WebHIDOnServiceWorkers", |
| depends_on: ["WebHID"], |
| public: true, |
| }, |
| // Legacy ::-webkit-scrollbar* pseudo element styling. Enabled for stable |
| // but configurable via WebPreferences. |
| { |
| name: "WebKitScrollbarStyling", |
| status: "stable", |
| }, |
| { |
| name: "WebNFC", |
| public: true, |
| status: {"Android": "stable", "default": "test"}, |
| }, |
| { |
| name: "WebOTP", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "WebOTPAssertionFeaturePolicy", |
| depends_on: ["WebOTP"], |
| public: true, |
| status: "stable", |
| }, |
| // WebShare is enabled by default on Android. |
| { |
| name: "WebShare", |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "WebSocketStream", |
| status: "experimental", |
| }, |
| { |
| name: "WebTransportCustomCertificates", |
| origin_trial_feature_name: "WebTransportCustomCertificates", |
| status: "stable", |
| }, |
| { |
| name: "WebUSB", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "WebUSBOnDedicatedWorkers", |
| status: "stable", |
| depends_on: ["WebUSB"], |
| }, |
| { |
| // It is only enabled in extension environment for now. |
| name: "WebUSBOnServiceWorkers", |
| depends_on: ["WebUSB"], |
| public: true, |
| }, |
| { |
| name: "WebViewXRequestedWithDeprecation", |
| origin_trial_feature_name: "WebViewXRequestedWithDeprecation", |
| origin_trial_allows_insecure: true, |
| origin_trial_os: ["android"], |
| origin_trial_type: "deprecation", |
| status: "experimental", |
| }, |
| { |
| name: "WebVTTRegions", |
| status: "experimental", |
| }, |
| { |
| name: "WebXR", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "WebXREnabledFeatures", |
| depends_on: ["WebXR"], |
| status: "stable", |
| base_feature: "WebXREnabledFeatures", |
| }, |
| { |
| name: "WebXRFrontFacing", |
| depends_on: ["WebXR"], |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "WebXRHandInput", |
| depends_on: ["WebXR"], |
| public: true, |
| status: "experimental" |
| }, |
| { |
| name: "WebXRHitTestEntityTypes", |
| depends_on: ["WebXR"], |
| status: "experimental" |
| }, |
| { |
| name: "WebXRImageTracking", |
| depends_on: ["WebXR"], |
| origin_trial_feature_name: "WebXRImageTracking", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "WebXRLayers", |
| depends_on: ["WebXR"], |
| public: true, |
| status: "experimental" |
| }, |
| { |
| name: "WebXRPlaneDetection", |
| depends_on: ["WebXR"], |
| origin_trial_feature_name: "WebXRPlaneDetection", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "WGIGamepadTriggerRumble", |
| status: "test", |
| }, |
| // If enabled, window.default[Ss]tatus will be supported. This is disabled |
| // by default, and is here to allow this behavior to be re-enabled via Finch |
| // in case of problems. This flag should be removed by Q1 2023, assuming |
| // no problems are encountered. |
| { |
| name: "WindowDefaultStatus", |
| base_feature: "WindowDefaultStatus", |
| }, |
| // Allows use of `window-management` as an alias for `window-placement` |
| // permission. See crbug.com/1328581 |
| { |
| name: "WindowManagementPermissionAlias", |
| status: "stable", |
| base_feature: "WindowManagementPermissionAlias", |
| }, |
| // Allows sites to request fullscreen when the set of screens change. |
| { |
| name: "WindowPlacementFullscreenOnScreensChange", |
| status: "experimental", |
| base_feature: "WindowPlacementFullscreenOnScreensChange", |
| }, |
| { |
| // If enabled, the `getDisplayMedia()` family of APIs will ask for NV12 |
| // frames, which should trigger a zero-copy path in the tab capture code. |
| name: "ZeroCopyTabCapture", |
| base_feature: "ZeroCopyTabCapture", |
| }, |
| ], |
| } |