| { |
| // 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", |
| }, |
| }, |
| |
| data: [ |
| { |
| 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: "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: "test", |
| }, |
| { |
| 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", |
| }, |
| // The runtime flag for AudioContext.setSinkID(). |
| // See: https://github.com/WebAudio/web-audio-api/pull/2498 |
| { |
| name: "AudioContextSetSinkId", |
| status: "test", |
| }, |
| { |
| 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", |
| }, |
| { |
| // TODO(crbug.com/1185950): Remove this flag when the feature is fully |
| // launched and released to stable with no issues. |
| name: "AutoExpandDetailsElement", |
| status: "stable", |
| base_feature: "AutoExpandDetailsElement", |
| }, |
| { |
| // Makes autofill look across shadow boundaries when collecting form |
| // controls to fill. |
| name: "AutofillShadowDOM", |
| status: "experimental", |
| base_feature: "AutofillShadowDOM", |
| }, |
| { |
| name: "AutomationControlled", |
| public: true, |
| settable_from_internals: true, |
| }, |
| { |
| name: "AutoPictureInPicture", |
| depends_on: ["PictureInPictureAPI"], |
| status: "experimental", |
| }, |
| { |
| // 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", |
| public: true, |
| }, |
| { |
| 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", |
| }, |
| }, |
| { |
| name: "BatchFetchRequests", |
| status: "test", |
| base_feature: "BatchFetchRequests", |
| }, |
| { |
| // 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: "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", |
| }, |
| { |
| name: "Canvas2dImageChromium", |
| public: true, |
| }, |
| { |
| name: "Canvas2dLayers", |
| }, |
| { |
| name: "Canvas2dScrollPathIntoView", |
| status: "experimental", |
| }, |
| { |
| name: "CanvasColorManagementV2", |
| status: "experimental", |
| }, |
| { |
| name: "CanvasHDR", |
| status: "experimental", |
| }, |
| { |
| name: "CanvasImageSmoothing", |
| status: "experimental", |
| }, |
| { |
| name: "CapabilityDelegationFullscreenRequest", |
| status: "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", |
| }, |
| { |
| name: "CompositedSelectionUpdate", |
| public: true, |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "ComputedAccessibilityInfo", |
| status: "experimental", |
| }, |
| { |
| // blink::features::kComputePressure is a kill switch for the API. If the |
| // feature is disabled, origin trial tokens are ignored. |
| name: "ComputePressure", |
| origin_trial_feature_name: "ComputePressure", |
| status: "experimental", |
| base_feature: "ComputePressure", |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "ConditionalFocus", |
| origin_trial_feature_name: "ConditionalFocus", |
| status: {"Android": "", "default": "experimental"}, |
| }, |
| { |
| 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: "ContentVisibilityAutoStateChangedEvent", |
| status: "experimental", |
| }, |
| { |
| name: "ContextMenu", |
| status: "experimental", |
| }, |
| { |
| name: "CooperativeScheduling", |
| public: true, |
| }, |
| { |
| name: "CorsRFC1918", |
| }, |
| { |
| name: "CrossOriginOpenerPolicyReporting", |
| origin_trial_feature_name: "CrossOriginOpenerPolicyReporting", |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| }, |
| { |
| // Allows positioning a positioned element relative to another one. |
| // https://tabatkins.github.io/specs/css-anchor-position/ |
| name: "CSSAnchorPositioning", |
| 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // Flag for supporting size and inline-size container-types along with the |
| // @container rules for size queries. Also implies support for container |
| // relative units and inline-size containment. |
| // https://drafts.csswg.org/css-contain-3/#container-queries |
| name: "CSSContainerQueries", |
| status: "stable" |
| }, |
| { |
| // https://drafts.csswg.org/css-contain-3/#container-lengths |
| name: "CSSContainerRelativeUnits", |
| implied_by: ["CSSContainerQueries"] |
| }, |
| { |
| // With this flag disabled, we run UpdateStyle() over the full DOM tree |
| // before running interleaved style/layout. With this flag enabled, we |
| // skip style recalc in UpdateStyle() for containers which are guaranteed |
| // to be reachable in the following layout. |
| name: "CSSContainerSkipStyleRecalc", |
| implied_by: ["CSSContainerQueries"] |
| }, |
| { |
| // Support for contain:inline-size |
| name: "CSSContainSize1D", |
| implied_by: ["CSSContainerQueries"] |
| }, |
| { |
| // 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: "test", |
| }, |
| { |
| name: "CSSFontFaceSrcTechParsing", |
| status: "experimental" |
| }, |
| { |
| name: "CSSFontFamilyMath", |
| status: "experimental", |
| implied_by: ["MathMLCore"], |
| }, |
| { |
| name: "CSSFontSizeAdjust", |
| status: "test", |
| }, |
| { |
| name: "CSSGridTemplatePropertyInterpolation", |
| depends_on: ["LayoutNGGridFragmentation"], |
| 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", |
| }, |
| { |
| name: "CSSIcUnit", |
| status: "stable", |
| }, |
| { |
| name: "CSSIndependentTransformProperties", |
| status: "stable", |
| }, |
| { |
| name: "CSSLastBaseline", |
| status: "experimental", |
| }, |
| { |
| name: "CSSLayoutAPI", |
| status: "experimental", |
| }, |
| { |
| name: "CSSLhUnit", |
| status: "experimental", |
| }, |
| { |
| name: "CSSLogical", |
| status: "experimental", |
| }, |
| { |
| name: "CSSLogicalOverflow", |
| status: "test", |
| }, |
| { |
| name: "CSSMarkerNestedPseudoElement", |
| status: "experimental", |
| }, |
| { |
| name: "CSSMathDepth", |
| status: "experimental", |
| implied_by: ["MathMLCore"], |
| }, |
| { |
| name: "CSSMathShift", |
| status: "experimental", |
| implied_by: ["MathMLCore"], |
| }, |
| { |
| name: "CSSMathStyle", |
| status: "experimental", |
| implied_by: ["MathMLCore"], |
| }, |
| { |
| name: "CSSMathVariant", |
| status: "experimental", |
| implied_by: ["MathMLCore"], |
| }, |
| { |
| // Support for Media Queries Level 4 syntax. |
| // |
| // https://drafts.csswg.org/mediaqueries-4/#mq-syntax |
| name: "CSSMediaQueries4", |
| status: "stable", |
| }, |
| { |
| name: "CSSMixBlendModePlusLighter", |
| status: "stable" |
| }, |
| { |
| name: "CSSObjectViewBox", |
| status: "stable", |
| }, |
| { |
| name: "CSSOffsetPathRay", |
| status: "experimental", |
| }, |
| { |
| name: "CSSOffsetPathRayContain", |
| status: "experimental", |
| }, |
| { |
| name: "CSSOffsetPositionAnchor", |
| status: "experimental", |
| }, |
| { |
| name: "CSSOverflowForReplacedElements", |
| status: "test", |
| base_feature: "CSSOverflowForReplacedElements", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "CSSPaintAPIArguments", |
| status: "experimental", |
| }, |
| { |
| name: "CSSPictureInPicture", |
| status: "experimental", |
| depends_on: ["PictureInPictureAPI"], |
| }, |
| { |
| name: "CSSPositionStickyStaticScrollPosition", |
| status: "experimental", |
| }, |
| { |
| // Match input elements which have been autofilled by user agent. |
| // https://html.spec.whatwg.org/multipage/semantics-other.html#selector-autofill |
| name: "CSSPseudoAutofill", |
| status: "experimental", |
| }, |
| { |
| name: "CSSPseudoDir", |
| status: "experimental", |
| }, |
| { |
| name: "CSSPseudoHas", |
| status: "stable", |
| }, |
| { |
| // 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", |
| }, |
| { |
| name: "CSSSnapSize", |
| status: "experimental", |
| }, |
| { |
| // 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 |
| name: "CSSStyleQueries", |
| status: "experimental" |
| }, |
| // Support for CSS Toggles, https://tabatkins.github.io/css-toggle/ |
| { |
| name: "CSSToggles", |
| status: "test", |
| }, |
| { |
| // Explainer: https://github.com/DevSDK/css-trigonometric-functions |
| name: "CSSTrigonometricFunctions", |
| status: "test", |
| }, |
| // 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: "experimental", |
| }, |
| // Support for view-timeline. |
| // |
| // https://drafts.csswg.org/scroll-animations-1/#view-timeline-shorthand |
| { |
| name: "CSSViewTimeline", |
| status: "test", |
| }, |
| { |
| name: "CustomElementDefaultStyle", |
| 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", |
| depends_on: ["LayoutNG"], |
| status: "test", |
| base_feature: "DeferredShaping", |
| }, |
| { |
| name: "DeflateRawCompressionFormat", |
| status: "stable", |
| }, |
| { |
| name: "DelegatedInkTrails", |
| status: "stable", |
| }, |
| { |
| 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: "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", |
| }, |
| { |
| // When on, the display-capture permissions-policy is enforced. |
| // When off, enforcement of this permissions-policy is skipped. |
| // This is driven from the browser process by the Enterprise policy |
| // called "DisplayCapturePermissionsPolicyEnabled". |
| // TODO(crbug.com/1233969): Remove this around m100. |
| name: "DisplayCapturePermissionsPolicy", |
| public: true, |
| }, |
| { |
| name: "DisplayCutoutAPI", |
| public: true, |
| settable_from_internals: 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: "DocumentPictureInPictureAPI", |
| depends_on: ["PictureInPictureAPI"], |
| public: true, |
| settable_from_internals: true, |
| }, |
| { |
| 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"], |
| }, |
| { |
| // Document transitions, including shared element transitions. |
| // See https://github.com/WICG/shared-element-transitions |
| name: "DocumentTransition", |
| origin_trial_feature_name: "DocumentTransitionV2", |
| base_feature: "DocumentTransition", |
| }, |
| { |
| 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. |
| // TODO(1277431): This flag should be eventually disabled. |
| name: "EventPath", |
| public: true, |
| status: "stable", |
| base_feature: "EventPath", |
| }, |
| { |
| 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: "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: "FeaturePolicyReporting", |
| status: "experimental" |
| }, |
| { |
| name: "FedCm", |
| origin_trial_feature_name: "FedCM", |
| origin_trial_allows_third_party: true, |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "FedCmIdpSigninStatus", |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "FedCmIdpSignout", |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "FedCmIframeSupport", |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "FedCmMultipleIdentityProviders", |
| 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: "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: {"Android": "experimental", "default": "stable"}, |
| }, |
| { |
| name: "FirstPartySets", |
| }, |
| { |
| name: "FixedElementsDontOverscroll", |
| status: "stable", |
| base_feature: "FixedElementsDontOverscroll", |
| }, |
| { |
| name: "Fledge", |
| origin_trial_feature_name: "PrivacySandboxAdsAPIs", |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| 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: "FontPalette", |
| status: "stable", |
| }, |
| { |
| name: "FontSrcLocalMatching", |
| // No status, as the web platform runtime enabled feature is controlled by |
| // a Chromium level feature. |
| }, |
| { |
| // 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", |
| depends_on: ["LayoutNG"], |
| status: "experimental", |
| }, |
| { |
| name: "FormRelAttribute", |
| status: "stable", |
| base_feature: "FormRelAttribute", |
| }, |
| { |
| name: "FractionalScrollOffsets", |
| implied_by: ["PercentBasedScrolling"], |
| public: true, |
| }, |
| { |
| name: "FreezeFramesOnVisibility", |
| status: "experimental", |
| }, |
| { |
| 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", |
| "default": "", |
| } |
| }, |
| { |
| name: "GroupEffect", |
| status: "test", |
| }, |
| { |
| name: "HandwritingRecognition", |
| status: { |
| "ChromeOS_Ash": "stable", |
| "ChromeOS_Lacros": "stable", |
| "default": "experimental", |
| }, |
| }, |
| { |
| name: "HidDeviceForget", |
| depends_on: ["WebHID"], |
| status: {"Android": "", "default": "stable"}, |
| }, |
| // HighlightAPI's custom highlights use HighlightInheritance's behavior even |
| // if the HighlightInheritance feature is not enabled. |
| { |
| name: "HighlightAPI", |
| status: "stable", |
| }, |
| { |
| name: "HighlightInheritance", |
| }, |
| { |
| name: "HighlightOverlayPainting", |
| status: "stable", |
| }, |
| { |
| name: "HighlightPointerEvents", |
| depends_on: ["HighlightAPI"], |
| }, |
| { |
| name: "HrefTranslate", |
| depends_on: ["TranslateService"], |
| origin_trial_feature_name: "HrefTranslate", |
| status: "stable", |
| }, |
| { |
| // TODO(crbug.com/1315717): This flag is being used to deprecate support for <param> urls within <object> elements. This feature is controlled by blink::features::kHTMLParamElementUrlSupport. |
| name: "HTMLParamElementUrlSupport", |
| status: "stable", |
| base_feature: "HTMLParamElementUrlSupport", |
| }, |
| { |
| // TODO(crbug.com/1307772): Enables the Pop-up API. |
| name: "HTMLPopupAttribute", |
| status: "experimental", |
| origin_trial_feature_name: "HTMLPopupAttribute", |
| implied_by: ["HTMLSelectMenuElement"], |
| base_feature: "HTMLPopupAttribute", |
| }, |
| { |
| name: "HTMLSelectMenuElement", |
| status: "experimental", |
| }, |
| { |
| name: "IDBBatchGetAll", |
| status:"experimental", |
| }, |
| { |
| name: "IdentityInCanMakePaymentEventFeature", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "IdleDetection", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "ImplicitRootScroller", |
| public: true, |
| settable_from_internals: true, |
| status: {"Android": "stable"}, |
| }, |
| { |
| 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", |
| }, |
| { |
| 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, |
| }, |
| { |
| // LayoutNG has been enabled in M76, but we still keep this flag for |
| // testing. See web_tests/FlagExpectations/disable-layout-ng for more |
| // details about running web tests with LayoutNG disabled. This flag also |
| // provides a convenient way for testing legacy layout code path in blink |
| // unit tests. |
| name: "LayoutNG", |
| implied_by: ["BidiCaretAffinity"], |
| status: "stable", |
| base_feature: "LayoutNG", |
| }, |
| { |
| name: "LayoutNGBlockFragmentation", |
| status: "stable", |
| }, |
| { |
| name: "LayoutNGBlockInInline", |
| depends_on: ["LayoutNG"], |
| status: "stable", |
| }, |
| { |
| // Block fragmentation support in the flex layout algorithm. |
| // https://drafts.csswg.org/css-flexbox-1/#pagination |
| name: "LayoutNGFlexFragmentation", |
| depends_on: ["LayoutNG", "LayoutNGBlockFragmentation"], |
| status: "stable", |
| }, |
| { |
| // crbug.com/989916 |
| name: "LayoutNGForeignObject", |
| depends_on: ["LayoutNG"], |
| status: "stable", |
| }, |
| { |
| // crbug.com/1346221 |
| name: "LayoutNGFrameSet", |
| depends_on: ["LayoutNG"], |
| status: "stable", |
| }, |
| { |
| // Block fragmentation support in the grid layout algorithm. |
| // https://drafts.csswg.org/css-grid-1/#pagination |
| name: "LayoutNGGridFragmentation", |
| depends_on: ["LayoutNG","LayoutNGBlockFragmentation"], |
| status: "stable", |
| }, |
| { |
| name: "LayoutNGPrinting", |
| depends_on: ["LayoutNG","LayoutNGBlockFragmentation","LayoutNGView"], |
| }, |
| { |
| name: "LayoutNGSubgrid", |
| depends_on: ["LayoutNG"], |
| status: "test" |
| }, |
| { |
| // Block fragmentation support in the table layout algorithm. |
| // https://drafts.csswg.org/css-tables-3/#fragmentation |
| name: "LayoutNGTableFragmentation", |
| depends_on: ["LayoutNG","LayoutNGBlockFragmentation"], |
| status: "stable", |
| }, |
| { |
| name: "LayoutNGView", |
| status: "test", |
| }, |
| { |
| // crbug.com/1335309 |
| name: "LayoutNGVTTCue", |
| status: "stable", |
| }, |
| { |
| name: "LazyFrameLoading", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "LazyFrameVisibleLoadTimeMetrics", |
| public: true, |
| }, |
| { |
| 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: "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:"experimental", |
| depends_on: ["LayoutNG"], |
| }, |
| { |
| 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: "MediaSessionWebRTC", |
| public: true, |
| }, |
| { |
| name: "MediaSourceExperimental", |
| status: "experimental", |
| }, |
| { |
| name: "MediaSourceExtensionsForWebCodecs", |
| status: "experimental", |
| origin_trial_feature_name: "MediaSourceExtensionsForWebCodecs", |
| }, |
| { |
| name: "MediaSourceInWorkers", |
| status: "stable", |
| origin_trial_feature_name: "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", |
| }, |
| { |
| 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", |
| }, |
| { |
| // Feature added "guarding" the already launched exposure of |
| // MediaStreamTracks in the Window contexts, to allow exposure in other |
| // contexts to be feature controlled, crbug.com/c/1290274. |
| name: "MediaStreamTrackInWindow", |
| status: "stable", |
| }, |
| { |
| name: "MediaStreamTrackInWorker", |
| }, |
| { |
| 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: "NavigationApi", |
| status: "stable", |
| }, |
| { |
| name: "NavigationId", |
| status: "experimental", |
| }, |
| { |
| 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: "NeverSlowMode", |
| public: true, |
| }, |
| { |
| 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", |
| }, |
| { |
| 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: "experimental", |
| base_feature: "OffsetParentNewSpecBehavior", |
| }, |
| { |
| 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", |
| settable_from_internals: true, |
| 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: "ParallelPrimaryFont", |
| depends_on: ["ParallelTextShaping"], |
| // http://crbug.com/1315900 |
| // Global DeviceScaleFactor prevents us to use this feature. |
| status: {"ChromeOS_Ash": "", "ChromeOS_Lacros": "", "Linux": "", |
| "default": ""}, |
| }, |
| { |
| name: "ParallelTextShaping", |
| depends_on: ["LayoutNG"], |
| // http://crbug.com/1264280 |
| }, |
| { |
| name: "PartitionedCookies", |
| origin_trial_feature_name: "PartitionedCookies", |
| status: "experimental", |
| origin_trial_feature_name: "PartitionedCookies", |
| origin_trial_allows_third_party: true, |
| }, |
| // 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: "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", |
| }, |
| { |
| name: "PictureInPicture", |
| public: true, |
| settable_from_internals: true, |
| }, |
| { |
| name: "PictureInPictureAPI", |
| public: true, |
| status: "stable" |
| }, |
| // 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: "PrefersColorSchemeClientHintHeader", |
| status: "stable", |
| base_feature: "PrefersColorSchemeClientHintHeader", |
| }, |
| { |
| 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: "stable", |
| 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: {"Android": "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: "PushMessaging", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "PushMessagingSubscriptionChange", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "QuickIntensiveWakeUpThrottlingAfterLoading", |
| base_feature: "QuickIntensiveWakeUpThrottlingAfterLoading", |
| }, |
| { |
| name: "QuotaChange", |
| status: "experimental", |
| }, |
| // 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: "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: "ResourceTimingResponseStatus", |
| status: "experimental", |
| }, |
| { |
| name: "RestrictGamepadAccess", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "RtcAudioJitterBufferMaxPackets", |
| origin_trial_feature_name: "RtcAudioJitterBufferMaxPackets", |
| status: "experimental", |
| }, |
| // 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: "experimental", |
| }, |
| { |
| 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", |
| settable_from_internals: true, |
| 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", |
| }, |
| { |
| // Whether to enable scroll update optimizations. See crbug.com/1346789. |
| name: "ScrollUpdateOptimizations", |
| base_feature: "ScrollUpdateOptimizations", |
| status: "stable", |
| }, |
| { |
| name: "SecureContextFixForSharedWorkers", |
| status: "experimental", |
| }, |
| { |
| name: "SecureContextFixForWorkers", |
| status: "stable", |
| base_feature: "SecureContextFixForWorkers", |
| }, |
| // 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 |
| }, |
| { |
| // 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", |
| status: "experimental", |
| }, |
| { |
| name: "SensorExtraClasses", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "Serial", |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "SerialPortForget", |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| 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"], |
| origin_trial_feature_name: "SkipAd", |
| 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", |
| settable_from_internals: true, |
| base_feature: "SkipTouchEventFilter", |
| status: "stable", |
| }, |
| { |
| name: "SoftNavigationHeuristics", |
| status: "test", |
| }, |
| { |
| name: "SoftNavigationHeuristicsLogging", |
| status: "experimental", |
| }, |
| // 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", |
| implied_by: ["SpeculationRulesPrefetchProxy", "SpeculationRulesPrefetchWithSubresources", "Prerender2"], |
| origin_trial_feature_name: "SpeculationRules__DONOTUSE", |
| }, |
| // Origin trial to enable Speculation Rules for access to the prefetch proxy. |
| // https://crbug.com/1190167 |
| { |
| name: "SpeculationRulesPrefetchProxy", |
| origin_trial_feature_name: "SpeculationRulesPrefetch", |
| status: {"Android": "stable"}, |
| base_feature: "SpeculationRulesPrefetchProxy", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| "name": "SpeculationRulesPrefetchWithSubresources", |
| }, |
| { |
| 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: "test", |
| }, |
| { |
| name: "StorageAccessAPIForSiteExtension", |
| public: true, |
| status: "test", |
| base_feature: "StorageAccessAPIForSiteExtension", |
| }, |
| { |
| name: "StorageBuckets", |
| status: "experimental", |
| }, |
| { |
| name: "StorageFoundationAPI", |
| origin_trial_feature_name: "StorageFoundationAPI", |
| status: "experimental", |
| }, |
| { |
| name: "StrictMimeTypesForWorkers", |
| status: "experimental" |
| }, |
| { |
| name: "StylusHandwriting", |
| }, |
| { |
| name: "SubresourceWebBundles", |
| public: true, |
| status: "experimental" |
| }, |
| { |
| name: "SupportsFontFormatTech", |
| status: "experimental" |
| }, |
| { |
| // 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", |
| }, |
| { |
| name: "SVGTextNG", |
| depends_on: ["LayoutNG"], |
| status: "stable" |
| }, |
| { |
| 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", |
| }, |
| // 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"}, |
| }, |
| { |
| // Forces same-process display:none cross-origin iframes to be throttled |
| // in the same manner that OOPIFs are. |
| name: "ThrottleDisplayNoneAndVisibilityHiddenCrossOriginIframes", |
| status: "experimental", |
| base_feature: "ThrottleDisplayNoneAndVisibilityHiddenCrossOriginIframes", |
| }, |
| { |
| 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, |
| }, |
| // 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: "TrustedTypesUseCodeLike", |
| status: "experimental", |
| }, |
| { |
| name: "TrustTokens", |
| 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: "TrustTokensAlwaysAllowIssuance", |
| public: true, |
| status: "test", |
| }, |
| // This is a reverse OT used for a phased deprecation of Cryptotoken, the |
| // component extension that implements the U2F security key API. |
| // https://crbug.com/1224886 |
| { |
| name: "U2FSecurityKeyAPI", |
| origin_trial_feature_name: "U2FSecurityKeyAPI", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| origin_trial_type: "deprecation", |
| }, |
| { |
| name: "UnclosedFormControlIsInvalid", |
| status: "experimental", |
| }, |
| { |
| 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", |
| }, |
| { |
| name: "V8IdleTasks", |
| public: true, |
| }, |
| { |
| name: "VariableCOLRV1", |
| 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: "ViewportSegments", |
| status: "experimental", |
| }, |
| { |
| 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"], |
| }, |
| { |
| name: "WebAnimationsAPI", |
| status: "stable", |
| implied_by: ["AnimationWorklet"], |
| }, |
| { |
| name: "WebAnimationsSVG", |
| status: "experimental", |
| }, |
| { |
| name: "WebAppDarkMode", |
| origin_trial_feature_name: "WebAppDarkMode", |
| status: "experimental", |
| base_feature: "WebAppEnableDarkMode", |
| }, |
| { |
| name: "WebAppLaunchHandler", |
| origin_trial_feature_name: "Launch Handler", |
| status: "experimental", |
| 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"], |
| }, |
| { |
| // This flag enables the Manifest parser to handle id field. |
| // Also enabled when blink::features::kWebAppEnableManifestId is |
| // overridden on the command line (or via chrome://flags). |
| name: "WebAppManifestId", |
| status: "stable", |
| base_feature: "WebAppEnableManifestId", |
| }, |
| { |
| 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: "WebAssemblyCSP", |
| status: "stable", |
| }, |
| { |
| name: "WebAssemblyExceptions", |
| origin_trial_feature_name: "WebAssemblyExceptions", |
| status: "test", |
| }, |
| // 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. Under development. |
| // 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: "test", |
| }, |
| // https://github.com/w3c/webauthn/pull/1663 |
| { |
| name: "WebAuthenticationDevicePublicKey", |
| status: "experimental", |
| }, |
| { |
| name: "WebAuthenticationLargeBlobExtension", |
| 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: "WebGLColorManagement", |
| status: "stable", |
| }, |
| { |
| name: "WebGLDeveloperExtensions", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| // Draft WebGL extensions are deliberately not enabled by experimental web |
| // platform features. |
| name: "WebGLDraftExtensions", |
| public: true, |
| }, |
| { |
| 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"}, |
| }, |
| { |
| name: "WebHIDExclusionFiltersOption", |
| status: "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: "WebNFCMakeReadOnly", |
| depends_on: ["WebNFC"], |
| status: {"Android": "stable", "default": "test"}, |
| }, |
| { |
| name: "WebOTP", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "WebOTPAssertionFeaturePolicy", |
| depends_on: ["WebOTP"], |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "WebPaymentAPICSP", |
| origin_trial_feature_name: "WebPaymentAPICSP", |
| origin_trial_allows_third_party: true, |
| public: true, |
| }, |
| // 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: "WebUsbDeviceForget", |
| status: "stable", |
| }, |
| { |
| name: "WebUSBOnDedicatedWorkers", |
| status: "stable", |
| depends_on: ["WebUSB"], |
| }, |
| { |
| name: "WebVTTRegions", |
| status: "experimental", |
| }, |
| { |
| name: "WebXR", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "WebXRAnchors", |
| depends_on: ["WebXRARModule", "WebXRHitTest"], |
| status: "stable" |
| }, |
| { |
| name: "WebXRARModule", |
| depends_on: ["WebXR"], |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "WebXRCameraAccess", |
| depends_on: ["WebXRARModule"], |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "WebXRDepth", |
| origin_trial_feature_name: "WebXRDepth", |
| depends_on: ["WebXRARModule"], |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "WebXRHandInput", |
| depends_on: ["WebXRARModule"], |
| public: true, |
| status: "experimental" |
| }, |
| { |
| name: "WebXRHitTest", |
| depends_on: ["WebXRARModule"], |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "WebXRHitTestEntityTypes", |
| depends_on: ["WebXRHitTest"], |
| status: "experimental" |
| }, |
| { |
| name: "WebXRImageTracking", |
| origin_trial_feature_name: "WebXRImageTracking", |
| depends_on: ["WebXRARModule"], |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "WebXRLightEstimation", |
| depends_on: ["WebXRARModule"], |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "WebXRPlaneDetection", |
| origin_trial_feature_name: "WebXRPlaneDetection", |
| depends_on: ["WebXRARModule"], |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "WebXRViewportScale", |
| depends_on: ["WebXRARModule"], |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "WGIGamepadTriggerRumble", |
| status: "test", |
| }, |
| // New behavior for window.open's interpretation of the windowFeatures parameter. |
| { |
| name: "WindowOpenNewPopupBehavior", |
| status: "stable", |
| base_feature: "WindowOpenNewPopupBehavior", |
| }, |
| // Extends window placement functionality for multi-screen devices. Also |
| // exposes requisite information about displays connected to the device. |
| { |
| name: "WindowPlacement", |
| status: "stable", |
| base_feature: "WindowPlacement", |
| }, |
| // Exposes user-friendly screen labels, determined by the platform, to sites |
| // with window-placement permission. |
| { |
| name: "WindowPlacementEnhancedScreenLabels", |
| status: "stable", |
| }, |
| // Allows sites to request fullscreen when the set of screens change. |
| { |
| name: "WindowPlacementFullscreenOnScreensChange", |
| depends_on: ["WindowPlacement"], |
| 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", |
| }, |
| ], |
| } |