| { |
| // 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. These features may be |
| // turned on using the "Experimental Web Platform features" flag in |
| // chrome://flags/#enable-experimental-web-platform-features. |
| // * 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", "iOS"] |
| }, |
| |
| // "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 dedicated |
| // methods. The default is false. This should be rare because |
| // WebRuntimeFeatures::EnableFeatureFromString() works in most cases. |
| 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'. |
| // As long as this field isn't "none", a base::Feature is automatically |
| // generated in features_generated.{h,cc}. By default the "name" field |
| // is used for the feature name, but can be overridden here. |
| // |
| // 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 otherwise. |
| // 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 specify `base_feature: "none"` and map the features in |
| // content/child/runtime_features.cc. `base_feature: "none"` is strongly |
| // discouraged if the feature doesn't have an associated base feature |
| // because the feature would lack a killswitch controllable via finch. |
| base_feature: { |
| valid_type: "str", |
| default: "", |
| }, |
| |
| // Specify the default value of the base::Feature instance. This field |
| // works only if base_feature is not "none". |
| // 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 indicates the runtime feature state should be |
| // readable in the browserprocess via RuntimeFeatureStateReadContext. |
| // TODO(crbug.com/1377000): this feature does not support origin trial |
| // tokens provided in HTTP headers. Any tokens provided via HTTP header will |
| // be dropped. |
| browser_process_read_access: { |
| default: false, |
| value_type: "bool", |
| }, |
| |
| // browser_process_read_write_access indicates the runtime feature state |
| // should be writable in the browserprocess via RuntimeFeatureStateContext. |
| // TODO(crbug.com/1377000): this feature does not support origin trial |
| // tokens provided in HTTP headers. Any tokens provided via HTTP header will |
| // be dropped. |
| browser_process_read_write_access: { |
| default: false, |
| value_type: "bool", |
| }, |
| }, |
| |
| data: [ |
| { |
| name: "Accelerated2dCanvas", |
| settable_from_internals: true, |
| status: "stable", |
| }, |
| { |
| name: "AcceleratedSmallCanvases", |
| status: "stable", |
| }, |
| { |
| name: "AccessibilityAriaVirtualContent", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "AccessibilityExposeDisplayNone", |
| status: "test", |
| }, |
| { |
| name: "AccessibilityExposeHTMLElement", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "AccessibilityObjectModel", |
| status: "experimental", |
| }, |
| { |
| name: "AccessibilityOSLevelBoldText", |
| status: "experimental", |
| public: true, |
| }, |
| { |
| name: "AccessibilityPageZoom", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "AccessibilitySerializationSizeMetrics", |
| status: "experimental", |
| }, |
| { |
| name: "AccessibilityUseAXPositionForDocumentMarkers", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "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"], |
| public: true, |
| }, |
| { |
| name: "AdTagging", |
| public: true, |
| status: "test", |
| base_feature: "none", |
| }, |
| { |
| // crbug.com/1500511 |
| name: "AlignContentForBlocks", |
| status: "stable", |
| }, |
| { |
| name: "AllowContentInitiatedDataUrlNavigations", |
| base_feature: "none", |
| }, |
| { |
| name: "AllowSyntheticTimingForCanvasCapture", |
| base_feature: "none", |
| status: { |
| "Mac": "stable", |
| "default": "" |
| }, |
| }, |
| { |
| name: "AllowURNsInIframes", |
| base_feature: "none", |
| }, |
| { |
| name: "AndroidDownloadableFontsMatching", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "AnimationWorklet", |
| }, |
| { |
| name: "AnonymousIframe", |
| status: "stable", |
| }, |
| { |
| name: "AOMAriaRelationshipProperties", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "AppTitle", |
| status: "experimental", |
| origin_trial_feature_name: "AppTitle", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| base_feature: "WebAppEnableAppTitle", |
| }, |
| { |
| name: "AriaNotify", |
| status: "test", |
| }, |
| { |
| name: "AsyncClipboardImplicitPermission", |
| status: "stable", |
| }, |
| { |
| name: "AttributionReporting", |
| origin_trial_feature_name: "PrivacySandboxAdsAPIs", |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "AttributionReportingCrossAppWeb", |
| origin_trial_feature_name: "AttributionReportingCrossAppWeb", |
| origin_trial_allows_third_party: true, |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // This only exists so we can use RuntimeEnabled in the IDL file |
| // when either implied_by flag is enabled. |
| name: "AttributionReportingInterface", |
| // This is not going into origin trial, "origin_trial_feature_name" is |
| // required for using the "implied_by" behaviour. |
| origin_trial_feature_name: "AttributionReportingInterface", |
| origin_trial_allows_third_party: true, |
| implied_by: ["AttributionReporting", "AttributionReportingCrossAppWeb"], |
| base_feature: "none", |
| }, |
| { |
| 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", |
| base_feature: "none", |
| origin_trial_feature_name: "AutoDarkMode", |
| }, |
| { |
| name: "AutomationControlled", |
| base_feature: "none", |
| public: true, |
| settable_from_internals: true, |
| }, |
| { |
| name: "AutoPictureInPictureVideoHeuristics", |
| status: "experimental", |
| }, |
| { |
| // Flag set by the media::kAutoplayIgnoreWebAudio feature flag. |
| name: "AutoplayIgnoresWebAudio", |
| base_feature: "none", |
| public: true, |
| settable_from_internals: true, |
| }, |
| { |
| // If enabled, lazy loaded images can be auto sized if the sizes |
| // attribute is missing or set to auto. |
| name: "AutoSizeLazyLoadedImages", |
| status: "experimental", |
| }, |
| { |
| name: "AvoidCaretVisibleSelectionAdjuster", |
| status: "stable", |
| }, |
| { |
| name: "BackdropInheritOriginating", |
| status: "stable", |
| }, |
| // When enabled, enforces new interoperable semantics for 3D transforms. |
| // See crbug.com/1008483. |
| { |
| name: "BackfaceVisibilityInterop", |
| }, |
| { |
| name: "BackForwardCache", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "BackForwardCacheExperimentHTTPHeader", |
| origin_trial_feature_name: "BackForwardCacheExperimentHTTPHeader", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| 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", |
| base_feature: "none", |
| }, |
| { |
| 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", |
| }, |
| }, |
| { |
| // There are two different code changes guarded by this feature. Both |
| // are about triggering a beforeunload cancel dialog and need adoption |
| // from developers. |
| // 1. If event.preventDefault() is called, prompt cancel dialog. |
| // 2. If event.returnValue is the empty string, do not prompt cancel dialog. |
| name: "BeforeunloadEventCancelByPreventDefault", |
| status: "stable", |
| public: true, |
| }, |
| { |
| name: "BidiCaretAffinity", |
| }, |
| { |
| name: "BlinkExtensionChromeOS", |
| browser_process_read_write_access: true, |
| }, |
| { |
| name: "BlinkExtensionChromeOSKiosk", |
| depends_on: ["BlinkExtensionChromeOS"], |
| browser_process_read_write_access: true, |
| }, |
| { |
| name: "BlinkExtensionDiagnostics", |
| depends_on: ["BlinkExtensionChromeOS"], |
| browser_process_read_write_access: true, |
| base_feature: "none", |
| }, |
| { |
| name: "BlinkExtensionWebView", |
| public: true, |
| }, |
| { |
| name: "BlinkExtensionWebViewMediaIntegrity", |
| public: true, |
| }, |
| { |
| name: "BlinkLifecycleScriptForbidden", |
| }, |
| { |
| name: "BlinkRuntimeCallStats", |
| }, |
| { |
| name: "BlockingFocusWithoutUserActivation", |
| status: "experimental", |
| }, |
| { |
| name: "BlockRubyWrappingInlineRuby", |
| status: "stable", |
| }, |
| // crbug.com/1147998: Mouse and Pointer boundary event dispatch (i.e. dispatch |
| // of enter, leave, over, out events) tracks DOM node removal to fix event |
| // pairing on ancestor nodes. |
| { |
| name: "BoundaryEventDispatchTracksNodeRemoval", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "BrowserVerifiedUserActivationKeyboard", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "BrowserVerifiedUserActivationMouse", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "CacheStorageCodeCacheHint", |
| origin_trial_feature_name: "CacheStorageCodeCacheHint", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "Canvas2dCanvasFilter", |
| status: "experimental", |
| }, |
| { |
| name: "Canvas2dImageChromium", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "Canvas2dLayers", |
| }, |
| { |
| name: "Canvas2dMesh", |
| status: "test", |
| }, |
| { |
| name: "Canvas2dScrollPathIntoView", |
| status: "experimental", |
| }, |
| { |
| name: "CanvasFloatingPoint", |
| status: "experimental", |
| }, |
| { |
| name: "CanvasHDR", |
| status: "experimental", |
| }, |
| { |
| name: "CanvasImageSmoothing", |
| status: "experimental", |
| }, |
| { |
| name: "CanvasWebGPUAccess", |
| status: "experimental", |
| }, |
| { |
| name: "CapabilityDelegationDisplayCaptureRequest", |
| status: "experimental", |
| }, |
| { |
| name: "CaptureController", |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| // TODO(crbug.com/1444712): Before enabling that flag by default, |
| // make sure MouseCursorOverlayController does not transmit mouse |
| // events to a CaptureController that don't have any |
| // capturedmousechange listener attached to it. |
| // See https://github.com/screen-share/mouse-events/issues/14 |
| name: "CapturedMouseEvents", |
| "depends_on": ["CaptureController"], |
| status: {"Android": "", "default": "test"}, |
| }, |
| { |
| name: "CapturedSurfaceControl", |
| origin_trial_feature_name: "CapturedSurfaceControl", |
| status: {"Android": "", "default": "experimental"}, |
| }, |
| { |
| name: "CaptureHandle", |
| depends_on: ["GetDisplayMedia"], |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| // https://www.w3.org/TR/cssom-view-1/#dom-document-caretpositionfrompoint |
| name: "CaretPositionFromPoint", |
| status: "test", |
| }, |
| { |
| // Kill switch for changes to RenderFrameMetadataObserverImpl in connection with Engagement |
| // Signals. See https://crrev.com/c/4544201 and https://crbug.com/1458640. |
| name: "CCTNewRFMPushBehavior", |
| base_feature_status: "enabled", |
| }, |
| { |
| name: "CheckVisibilityExtraProperties", |
| status: "stable", |
| }, |
| { |
| name: "ClickToCapturedPointer", |
| status: "experimental", |
| }, |
| { |
| name: "ClipboardSvg", |
| status: "stable", |
| }, |
| { |
| name: "ClipPathRejectEmptyPaths", |
| status: "stable", |
| }, |
| { |
| // https://html.spec.whatwg.org/multipage/interaction.html#close-requests-and-close-watchers |
| name: "CloseWatcher", |
| status: "experimental", |
| }, |
| { |
| name: "CoepReflection", |
| status: "test", |
| }, |
| { |
| name: "CompositeBGColorAnimation", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "CompositeBoxShadowAnimation", |
| }, |
| { |
| name: "CompositeClipPathAnimation", |
| public: true, |
| }, |
| { |
| name: "CompositedSelectionUpdate", |
| public: true, |
| status: {"Android": "stable"}, |
| base_feature: "none", |
| }, |
| { |
| name: "CompositionForegroundMarkers", |
| status: { |
| "Android": "stable", |
| "default": "", |
| } |
| }, |
| { |
| name: "CompressionDictionaryTransport", |
| base_feature: "none", |
| origin_trial_feature_name: "CompressionDictionaryTransportV2", |
| origin_trial_allows_third_party: true, |
| public: true, |
| }, |
| { |
| name: "CompressionDictionaryTransportBackend", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| 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_v2", |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "ConsolidatedMovementXY", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "ContactsManager", |
| status: {"Android": "stable", "default": "test"}, |
| }, |
| { |
| name: "ContactsManagerExtraProperties", |
| status: {"Android": "stable", "default": "test"}, |
| }, |
| { |
| name: "ContentIndex", |
| status: {"Android": "stable", "default": "experimental"}, |
| }, |
| { |
| name: "ContextMenu", |
| status: "experimental", |
| }, |
| { |
| name: "CookieDeprecationFacilitatedTesting", |
| base_feature: "none", |
| }, |
| { |
| name: "CooperativeScheduling", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "CoopRestrictProperties", |
| origin_trial_feature_name: "CoopRestrictProperties", |
| base_feature: "none", |
| }, |
| { |
| name: "CorsRFC1918", |
| }, |
| { |
| // Controls whether form elements may delay editor creation until layout. |
| // This is a kill switch. See https://crbug.com/325613706 for details. |
| name: "CreateInputShadowTreeDuringLayout", |
| status: "stable" |
| }, |
| { |
| name: "CrossFramePerformanceTimeline", |
| status: "experimental", |
| }, |
| { |
| // Allows positioning a positioned element relative to another one. |
| // https://drafts.csswg.org/css-anchor-1/ |
| name: "CSSAnchorPositioning", |
| implied_by: ["HTMLSelectListElement"], |
| status: "experimental", |
| }, |
| { |
| // Use full cascading for applying @position-try fallback for anchor |
| // positioning during layout. |
| name: "CSSAnchorPositioningCascadeFallback", |
| implied_by: ["CSSAnchorPositioning"], |
| }, |
| { |
| // Support for the animation-delay-start and animation-delay-end |
| // properties. |
| // |
| // Additionally, animation-delay becomes a shorthand which expands |
| // to those properties. |
| name: "CSSAnimationDelayStartEnd", |
| depends_on: ["ScrollTimeline"], |
| }, |
| { |
| // 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://chromestatus.com/feature/5125388091260928 |
| name: "CSSBackgroundClipUnprefix", |
| status: "stable", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // https://chromestatus.com/feature/5196713071738880 |
| name: "CSSCalcSizeFunction", |
| status: "experimental", |
| }, |
| { |
| name: "CSSCapFontUnits", |
| status: "stable", |
| }, |
| { |
| // Support case-sensitive attribute selector modifier |
| // https://drafts.csswg.org/selectors-4/#attribute-case |
| name: "CSSCaseSensitiveSelector", |
| status: "test", |
| }, |
| { |
| name: "CSSColorContrast", |
| status: "experimental", |
| }, |
| { |
| name: "CSSColorTypedOM", |
| status: "experimental", |
| }, |
| { |
| name: "CSSComputedStyleFullPseudoElementParser", |
| status: "stable", |
| }, |
| { |
| name: "CSSContentVisibilityImpliesContainIntrinsicSizeAuto", |
| status: "stable", |
| }, |
| { |
| // Unprefixed cross-fade() (in addition to the existing -webkit-cross-fade()). |
| // https://drafts.csswg.org/css-images-4/#cross-fade-function |
| name: "CSSCrossFade", |
| status: "experimental", |
| }, |
| { |
| // This flag controls whether the deprecated :--foo syntax is enabled. It |
| // is being replaced by :state(foo), which is controlled by the |
| // CSSCustomStateNewSyntax flag. |
| // TODO(crbug.com/1514397): Remove this when the feature is fully launched. |
| name: "CSSCustomStateDeprecatedSyntax", |
| status: "stable", |
| }, |
| { |
| // This flag controls whether the :state(foo) pseudo-class for custom |
| // elements is enabled. It is a rename of :--foo, which is being |
| // deprecated and is controlled by the CSSCustomStateDeprecatedSyntax |
| // flag. |
| // TODO(crbug.com/1514397): Remove this when the deprecation is done. |
| name: "CSSCustomStateNewSyntax", |
| status: "experimental", |
| }, |
| { |
| name: "CSSDisplayAnimation", |
| status: "stable", |
| }, |
| { |
| name: "CSSDisplayModePictureInPicture", |
| status: "stable", |
| }, |
| { |
| name: "CSSDynamicRangeLimit", |
| status: "experimental", |
| }, |
| { |
| // Include custom properties in CSSComputedStyleDeclaration::item/length. |
| // https://crbug.com/949807 |
| name: "CSSEnumeratedCustomProperties", |
| status: "test", |
| }, |
| { |
| name: "CSSExponentialFunctions", |
| status: "stable", |
| }, |
| { |
| // crbug.com/1447058 |
| name: "CssFieldSizing", |
| status: "stable", |
| }, |
| { |
| name: "CSSFirstLetterTextRewrite", |
| status: "stable", |
| }, |
| { |
| name: "CSSFontSizeAdjust", |
| status: "experimental", |
| }, |
| { |
| name: "CSSFunctions", |
| status: "test", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // https://chromestatus.com/feature/6289894144212992 |
| name: "CSSKeyframesRuleLength", |
| status: "stable", |
| }, |
| { |
| name: "CSSLayoutAPI", |
| status: "experimental", |
| }, |
| { |
| // Support for 'light-dark()' function to select computed color values |
| // based on the used color-scheme. |
| name: "CSSLightDarkColors", |
| status: "stable", |
| }, |
| |
| { |
| name: "CSSLinearTimingFunction", |
| status: "stable" |
| }, |
| { |
| name: "CSSLogicalOverflow", |
| status: "test", |
| }, |
| { |
| name: "CSSMarkerNestedPseudoElement", |
| status: "experimental", |
| }, |
| { |
| // Un-prefixed and interoperable mask implementation, including |
| // sub-features such as mask-image, mask-mode, etc. |
| // Tracking bug: https://crbug.com/1418401 |
| // Spec: https://drafts.fxtf.org/css-masking/#the-mask |
| name: "CSSMaskingInterop", |
| status: "stable", |
| }, |
| { |
| // Tracked as an experiment to help Search quantify |
| // performance improvements. |
| name: "CSSMPCImprovements", |
| status: "stable", |
| }, |
| { |
| // Support for typed om numeric factory methods for various units that |
| // were otherwise shipped: rex, rch, ic, ric, lh, rlh, x (cap and rcap |
| // covered by separate runtime flag). |
| name: "CSSNumericFactoryCompleteness", |
| status: "stable", |
| }, |
| { |
| name: "CSSOffsetPathBasicShapesCircleAndEllipse", |
| status: "stable", |
| }, |
| { |
| name: "CSSOffsetPathBasicShapesRectanglesAndPolygon", |
| status: "stable", |
| }, |
| { |
| name: "CSSOffsetPathCoordBox", |
| status: "stable", |
| }, |
| { |
| name: "CSSOffsetPathRay", |
| status: "stable", |
| }, |
| { |
| name: "CSSOffsetPathRayContain", |
| status: "stable", |
| }, |
| { |
| name: "CSSOffsetPathUrl", |
| status: "stable", |
| }, |
| { |
| name: "CSSOffsetPositionAnchor", |
| status: "stable", |
| }, |
| { |
| name: "CSSOverflowMediaFeatures", |
| status: "stable", |
| }, |
| { |
| name: "CSSPaintAPIArguments", |
| status: "experimental", |
| }, |
| { |
| // Ignore the stylesheet encoding when parsing URLs, always using UTF-8. |
| // See crbug.com/1485525. |
| name: "CSSParserIgnoreCharsetForURLs", |
| }, |
| { |
| // crbug.com/1443291: Phrase Line Breaking |
| name: "CSSPhraseLineBreak", |
| status: "stable", |
| }, |
| { |
| // Support for the position-fallback-bounds property. |
| // |
| // This property was part of the CSS Anchor Positioning spec, |
| // but was removed at some point. We do however plan to offer |
| // something similar in the future [1], and so we're holding |
| // on to the implementation for how. |
| // |
| // [1] https://github.com/w3c/csswg-drafts/issues/9868 |
| name: "CSSPositionFallbackBounds", |
| depends_on: ["CSSAnchorPositioning"], |
| status: "test", |
| }, |
| { |
| name: "CSSPositionStickyStaticScrollPosition", |
| status: "test", |
| }, |
| { |
| // Support the position-try-order property. Currently not implied by the |
| // anchor positioning feature. |
| // https://drafts.csswg.org/css-anchor-position-1/#position-try-order-property |
| name: "CSSPositionTryOrder", |
| status: "test", |
| }, |
| // https://drafts.csswg.org/css-values-5/#progress |
| // progress(), media-progress(), container-progress() |
| { |
| name: "CSSProgressNotation", |
| status: "experimental", |
| }, |
| { |
| // Enables the :open and :closed pseudo-selectors. |
| // https://chromestatus.com/feature/5085419215781888 |
| name: "CSSPseudoOpenClosed", |
| status: "experimental", |
| }, |
| { |
| // When an audio, video, or similar resource is "playing" |
| // or "paused". |
| // https://www.w3.org/TR/selectors-4/#video-state |
| name: "CSSPseudoPlayingPaused", |
| status: "test", |
| }, |
| { |
| // TODO(crbug.com/40932006): Non-standard 'reading-order-items' keyword |
| // for CSS reading of grid and flex layout. |
| // https://drafts.csswg.org/css-display-4/#reading-order-items |
| name: "CSSReadingOrderItems", |
| status: "test", |
| }, |
| { |
| // https://drafts.csswg.org/css-color-5/#relative-colors |
| name: "CSSRelativeColor", |
| status: "stable", |
| }, |
| { |
| // Non-standard 'auto' keyword for the CSS resize property. Used for |
| // selectively enable resize corner for textarea via UA stylesheet, but |
| // unintentionally exposed to author sheets. UA rule is now using |
| // -internal-textarea-auto instead. |
| name: "CSSResizeAuto", |
| status: "stable", |
| }, |
| { |
| // https://drafts.csswg.org/css-cascade-6/#scoped-styles |
| name: "CSSScope", |
| status: "stable", |
| }, |
| { |
| // https://drafts.csswg.org/css-scroll-snap-2/#snap-events |
| name: "CSSScrollSnapEvents", |
| status: "test", |
| implied_by: ["CSSSnapChangedEvent", "CSSSnapChangingEvent"], |
| }, |
| { |
| // https://drafts.csswg.org/css-scroll-snap-2#scroll-start |
| name: "CSSScrollStart", |
| status: "test", |
| }, |
| { |
| // Flag for supporting scroll-state() and container-type: scroll-state |
| // Implied by supporting at least one of the scroll-state query features. |
| name: "CSSScrollStateContainerQueries", |
| implied_by: ["CSSStickyContainerQueries", "CSSStickyContainerQueries"], |
| }, |
| { |
| name: "CSSSelectorFragmentAnchor", |
| status: "experimental", |
| base_feature: "CssSelectorFragmentAnchor", |
| }, |
| { |
| name: "CSSSignRelatedFunctions", |
| status: "experimental", |
| }, |
| { |
| // A separate feature for testing compatibility, related to the work on |
| // https://chromestatus.com/feature/5196713071738880 |
| name: "CSSSizingKeywordAnimation", |
| }, |
| { |
| // https://drafts.csswg.org/css-scroll-snap-2/#snap-events |
| name: "CSSSnapChangedEvent", |
| status: "test", |
| }, |
| { |
| // https://drafts.csswg.org/css-scroll-snap-2/#snap-events |
| name: "CSSSnapChangingEvent", |
| status: "test", |
| }, |
| { |
| name: "CSSSnapContainerQueries", |
| status: "experimental", |
| }, |
| { |
| // Explainer: https://drafts.csswg.org/css-values/#round-func |
| name: "CSSSteppedValueFunctions", |
| status: "experimental", |
| }, |
| { |
| name: "CSSStickyContainerQueries", |
| status: "experimental", |
| }, |
| { |
| name: "CSSSupportsForImportRules", |
| status: "stable", |
| }, |
| { |
| // The AccentColor And AccentColorText CSS system color keywords |
| name: "CSSSystemAccentColor", |
| status: "experimental", |
| }, |
| { |
| // crbug.com/1463890: CSS `text-autospace` property |
| name: "CSSTextAutoSpace", |
| status: "experimental", |
| }, |
| { |
| // TODO(https://crbug.com/1411581): |
| // https://w3c.github.io/csswg-drafts/css-inline-3/#propdef-leading-trim |
| name: "CSSTextBoxTrim", |
| status: "test", |
| }, |
| { |
| // crbug.com/1463890, crbug.com/1463891: CSS `text-spacing` shorthand |
| name: "CSSTextSpacing", |
| depends_on: ["CSSTextAutoSpace", "CSSTextSpacingTrim"], |
| }, |
| { |
| // crbug.com/1463891: CSS `text-spacing-trim` property |
| name: "CSSTextSpacingTrim", |
| status: "stable", |
| }, |
| // Use the `ScoreLineBreaker` for `text-wrap: balance`. crbug.com/1451205 |
| { |
| name: "CSSTextWrapBalanceByScore", |
| status: "stable", |
| }, |
| // `text-wrap: pretty`. crbug.com/1432798 |
| { |
| name: "CSSTextWrapPretty", |
| status: "stable", |
| }, |
| { |
| name: "CSSTransitionDiscrete", |
| status: "stable", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // Container query selectors containing uknown or unsupported queries |
| // never selects a container with this feature enabled. |
| // For instance, "@container (width > 0px) or (foo: bar)" will never |
| // select or match any containers. |
| name: "CSSUnknownContainerQueriesNoSelection", |
| status: "stable", |
| }, |
| { |
| name: "CSSUpdateMediaFeature", |
| status: "stable", |
| }, |
| // Support for `user-select:contain`. |
| { |
| name: "CSSUserSelectContain", |
| status: "test", |
| }, |
| // Support for registered custom properties with <image> syntax. |
| { |
| name: "CSSVariables2ImageValues", |
| status: "stable", |
| }, |
| // Support for registered custom properties with <transform-list> and |
| // <transform-function> syntax. |
| { |
| name: "CSSVariables2TransformValues", |
| status: "stable", |
| }, |
| { |
| name: "CSSVideoDynamicRangeMediaQueries", |
| status: "experimental", |
| }, |
| { |
| // The view-timeline shorthand includes the view-timeline-inset |
| // property. |
| // |
| // https://github.com/w3c/csswg-drafts/pull/9189 |
| name: "CSSViewTimelineInsetShorthand", |
| status: "stable", |
| }, |
| { |
| // https://chromestatus.com/feature/5064894363992064 |
| name: "CSSViewTransitionClass", |
| status: "test" |
| }, |
| { |
| // https://html.spec.whatwg.org/#dom-customelementregistry-getname |
| name: "CustomElementsGetName", |
| status: "stable", |
| }, |
| { |
| name: "Database", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| origin_trial_feature_name: "WebSQL", |
| origin_trial_allows_third_party: true, |
| origin_trial_type: "deprecation", |
| }, |
| { |
| // Makes the default display value of date type <input> elements |
| // inline-block for cross-browser compatibility. Enabled in M122, should |
| // be safe to remove in M126. |
| name: "DateInputInlineBlock", |
| status: "stable", |
| }, |
| { |
| // This is a killswitch for the `serializable` attribute on declarative |
| // shadow roots. It should be removed in M125 (March 18, 2024) assuming |
| // no issues are encountered. |
| name: "DeclarativeShadowDOMSerializable", |
| status: "stable", |
| }, |
| { |
| // This is a killswitch (enabled by *enabling* the feature) for the |
| // removal of the IDL reflection of the old 'shadowroot' attribute. |
| // This should be removed in M124 (Feb 20, 2024) assuming no issues. |
| name: "DeprecatedTemplateShadowRoot", |
| }, |
| // This allows pages to opt out of the unload deprecation. Enabling this |
| // allows unload event handers to be used in the frame regardless of any |
| // Permissions-Policy setting. |
| // https://crbug.com/1432116 |
| { |
| name: "DeprecateUnloadOptOut", |
| origin_trial_feature_name: "DeprecateUnloadOptOut", |
| origin_trial_type: "deprecation", |
| origin_trial_allows_third_party: true, |
| origin_trial_allows_insecure: true, |
| }, |
| { |
| name: "DesktopCaptureDisableLocalEchoControl", |
| status: "experimental", |
| }, |
| { |
| name: "DesktopPWAsAdditionalWindowingControls", |
| status: "test", |
| }, |
| { |
| name: "DesktopPWAsSubApps", |
| status: "test", |
| }, |
| { |
| name: "DetailsStyling", |
| status: "experimental", |
| }, |
| { |
| name: "DeviceAttributes", |
| status: { |
| "ChromeOS_Ash": "stable", |
| "ChromeOS_Lacros": "stable", |
| "default": "experimental", |
| }, |
| }, |
| { |
| name: "DeviceOrientationRequestPermission", |
| status: "experimental", |
| }, |
| { |
| name: "DevicePosture", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // This feature makes the <dialog> element close properly when its "open" |
| // attribute is removed. https://github.com/whatwg/html/issues/5802 |
| name: "DialogCloseWhenOpenRemoved", |
| status: "experimental", |
| }, |
| { |
| name: "DialogNewFocusBehavior", |
| status: "experimental", |
| depends_on: ["NewGetFocusableAreaBehavior"], |
| }, |
| { |
| 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" |
| }, |
| base_feature: "none", |
| }, |
| { |
| 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" |
| }, |
| }, |
| { |
| // Shipping in M123. Flag should be removed after M123 has been |
| // shipping to stable for a few weeks. |
| name: "DirAutoNoInheritance", |
| status: "stable", |
| }, |
| { |
| name: "DirectSockets", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| // Shipping in M121. Flag should be removed after M121 has been |
| // shipping to stable for a few weeks. |
| name: "DirnameMoreInputTypes", |
| status: "stable", |
| }, |
| { |
| name: "DisableDifferentOriginSubframeDialogSuppression", |
| base_feature: "none", |
| origin_trial_feature_name: "DisableDifferentOriginSubframeDialogSuppression", |
| origin_trial_type: "deprecation", |
| origin_trial_allows_insecure: true, |
| }, |
| { |
| name: "DisableHardwareNoiseSuppression", |
| origin_trial_feature_name: "DisableHardwareNoiseSuppression", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // Bypasses the enforcement of the Page Embedded Permission Control |
| // security checks. This flag is disabled by default and should only be |
| // enabled in automated tests in order to allow them to avoid needing to |
| // wait until the PEPC is validated and also to use JS-initiated clicks. |
| name: "DisablePepcSecurityForTesting", |
| }, |
| { |
| name: "DisableSelectAllForEmptyText", |
| status: "stable", |
| }, |
| // 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", |
| origin_trial_type: "deprecation", |
| origin_trial_allows_insecure: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| // This feature will represent the deprecation trial that allows first |
| // parties to temporarily use unpartitioned storage in embeds loaded |
| // on their site. |
| { |
| name: "DisableThirdPartyStoragePartitioning", |
| origin_trial_feature_name: "DisableThirdPartyStoragePartitioning", |
| origin_trial_type: "deprecation", |
| origin_trial_allows_insecure: true, |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| base_feature: "none", |
| browser_process_read_write_access: true, |
| }, |
| { |
| // `kHidden` and `kHiddenButPainting` visibility states are treated as |
| // hidden in the sense of `document.visibilityState`. However, they are |
| // handled differently internally. For example, video playback should |
| // continue in `kHiddenButPainting`, such as when the page is being |
| // background captured. When enabled, this feature causes blink to |
| // notify internal observers about visibility changes between the two |
| // hidden states, in addition to transitions to/from `kVisible`. |
| // |
| // Since the two hidden states are exposed to the web identically, there |
| // is no `visibilitychanged` event fired when switching between them. |
| // |
| // When this feature is disabled, blink reverts to its original behavior |
| // of eliding transitions between the two hidden states, including to |
| // internal observers. This behavior causes problems with capture and |
| // picture-in-picture, but is preserved as a safe fallback. |
| name: "DispatchHiddenVisibilityTransitions", |
| status: "stable", |
| base_feature: "DispatchHiddenVisibilityTransitions", |
| }, |
| { |
| // Allowing elements with display:contents to have focus. |
| // See https://crbug.com/1366037 |
| name: "DisplayContentsFocusable", |
| status: "experimental", |
| }, |
| { |
| name: "DisplayCutoutAPI", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // Makes document's fallback base URL use about:blank instead of the base |
| // URL of whatever execution context created it in order to match the |
| // HTML spec and the behavior already shipped in all other browsers. This |
| // behavior is reflected by document.baseURI. |
| name: "DocumentBaseURIFix", |
| status: "stable", |
| }, |
| { |
| name: "DocumentCookie", |
| }, |
| { |
| name: "DocumentDomain", |
| }, |
| { |
| name: "DocumentOpenOriginAliasRemoval", |
| status: "experimental", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "DocumentOpenSandboxInheritanceRemoval", |
| status: "stable", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "DocumentPictureInPictureAPI", |
| status: { |
| "Android": "", |
| "default": "stable", |
| }, |
| }, |
| // Enables the ability to use Document Policy header to control feature |
| // DocumentDomain. |
| { |
| name: "DocumentPolicyDocumentDomain", |
| status: "experimental", |
| }, |
| // Enables the ability to use Document Policy header to control feature |
| // IncludeJSCallStacksInCrashReports. https://chromestatus.com/feature/4731248572628992 |
| { |
| name: "DocumentPolicyIncludeJSCallStacksInCrashReports", |
| status: "experimental", |
| }, |
| { |
| name: "DocumentPolicyNegotiation", |
| origin_trial_feature_name: "DocumentPolicyNegotiation", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| // Enables the ability to use Document Policy header to control feature |
| // SyncXHR. |
| { |
| name: "DocumentPolicySyncXHR", |
| status: "experimental", |
| }, |
| { |
| // https://chromestatus.com/feature/5113053598711808 |
| name: "DocumentRenderBlocking", |
| status: "stable", |
| implied_by: ["ViewTransitionOnNavigation"], |
| }, |
| { |
| name: "DocumentWrite", |
| }, |
| // When enabled, this allows users of DOMParser to do: |
| // (new DOMParser()).parseFromString(...,{includeShadowRoots:true}). |
| // This is being deprecated and removed: crbug.com/329330085. |
| // The fieldtrial_testing_config currently disables this feature for tests. |
| { |
| name: "DOMParserIncludeShadowRoots", |
| status: "stable", |
| }, |
| // Controls whether DOMParser.parseFromString() attempts to use the |
| // html fast path parser. This flag is to be used as a killswitch in case |
| // of any issues. |
| { |
| name: "DOMParserUsesHTMLFastPathParser", |
| status: "stable" |
| }, |
| { |
| name: "DOMPartsAPI", |
| status: "experimental", |
| }, |
| { |
| // Shipping in M121, so should be safe to remove in M126. |
| name: "DontFireDblclickOnDisabledFormControls", |
| status: "stable", |
| }, |
| { |
| name: "DynamicScrollCullRectExpansion", |
| status: "experimental", |
| }, |
| { |
| name: "ElementCapture", |
| origin_trial_feature_name: "ElementCapture", |
| status: {"Android": "", "default": "experimental"}, |
| }, |
| { |
| // This is the "new" version of getHTML() used for declarative shadow |
| // DOM, and this version will replace the deprecated getInnerHTML(), which |
| // is enabled by the ElementGetInnerHTML feature. |
| name: "ElementGetHTML", |
| status: "experimental", |
| }, |
| { |
| // This is the "old" version of getInnerHTML() used for declarative shadow |
| // DOM, and this version is deprecated. The replacement is enabled by the |
| // ElementGetHTML feature. Once the new feature is stabilized and shipped, |
| // this feature (and its corresponding functionality) will be removed. |
| name: "ElementGetInnerHTML", |
| status: "stable", |
| }, |
| { |
| name: "EmptyClipboardRead", |
| status: "stable", |
| }, |
| { |
| name: "EnforceAnonymityExposure", |
| status: "stable", |
| }, |
| { |
| // Experiment with preventing some instances of mutation XSS |
| // by escaping "<" and ">" in attribute values. |
| // See: crbug.com/1175016 |
| name: "EscapeLtGtInAttributes", |
| status: "experimental", |
| }, |
| { |
| name: "EventTimingInteractionCount", |
| status: "experimental", |
| }, |
| { |
| name: "ExperimentalContentSecurityPolicyFeatures", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "ExperimentalJSProfilerMarkers", |
| status: "experimental", |
| }, |
| { |
| name: "ExperimentalPolicies", |
| status: "experimental", |
| }, |
| { |
| name: "ExposeRenderTimeNonTaoDelayedImage", |
| }, |
| { |
| name: "ExtendedTextMetrics", |
| status: "experimental", |
| }, |
| { |
| name: "ExtraWebGLVideoTextureMetadata", |
| }, |
| { |
| name: "EyeDropperAPI", |
| status: { |
| // EyeDropper UI is available on ChromeOS, Linux (x11), Mac, and Win. |
| // This list should match the supported operating systems for the |
| // kEyeDropper base::Feature. |
| "ChromeOS_Ash": "stable", |
| "ChromeOS_Lacros": "stable", |
| "Linux": "stable", |
| "Mac": "stable", |
| "Win": "stable", |
| }, |
| // When running under experimental platform variants, such as |
| // Linux/Wayland, EyeDropper base::Feature defined in the browser |
| // process is used to disable it at runtime, if needed. |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "FaceDetector", |
| status: "experimental", |
| }, |
| { |
| name: "FakeNoAllocDirectCallForTesting", |
| status: "test", |
| }, |
| { |
| name: "FastPositionIterator", |
| // Not enabled due to a RTL issue. crbug.com/1421016. |
| }, |
| { |
| name: "FedCm", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "FedCmAuthz", |
| depends_on: ["FedCm"], |
| public: true, |
| status: "test", |
| base_feature: "none", |
| }, |
| { |
| name: "FedCmAutoSelectedFlag", |
| depends_on: ["FedCm"], |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "FedCmButtonMode", |
| depends_on: ["FedCm"], |
| public: true, |
| status: "test", |
| base_feature: "none", |
| origin_trial_feature_name: "FedCmButtonMode", |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| name: "FedCmDisconnect", |
| depends_on: ["FedCm"], |
| base_feature: "none", |
| status: "stable", |
| public: true, |
| }, |
| { |
| name: "FedCmDomainHint", |
| depends_on: ["FedCm"], |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "FedCmError", |
| depends_on: ["FedCm"], |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "FedCmIdPRegistration", |
| depends_on: ["FedCm"], |
| public: true, |
| status: "test", |
| base_feature: "none", |
| }, |
| { |
| name: "FedCmIdpSigninStatus", |
| depends_on: ["FedCm"], |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| browser_process_read_access: true, |
| }, |
| { |
| name: "FedCmMultipleIdentityProviders", |
| depends_on: ["FedCm"], |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "FedCmSelectiveDisclosure", |
| depends_on: ["FedCm"], |
| public: true, |
| base_feature: "none", |
| }, |
| { |
| name: "FencedFrames", |
| base_feature: "none", |
| // 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_status: "enabled", |
| copied_from_base_feature_if: "enabled_or_overridden", |
| }, |
| { |
| name: "FencedFramesDefaultMode", |
| base_feature_status: "disabled", |
| copied_from_base_feature_if: "enabled_or_overridden", |
| public: true, |
| }, |
| { |
| // Allows fenced frames to access unpartioned data via Shared Storage in |
| // exchange for disabling untrusted network access. This is the Blink |
| // counterpart of the base::Feature with the same name. Because local |
| // unpartitioned data access requires browser and renderer process |
| // coordination, the value of this flag is strictly controlled by the |
| // base::Feature variant, and setting this flag does nothing. |
| name: "FencedFramesLocalUnpartitionedDataAccess", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // The Blink runtime-enabled feature name for the API's IDL. |
| name: "FetchLaterAPI", |
| status: "experimental", |
| origin_trial_feature_name: "FetchLaterAPI", |
| origin_trial_allows_third_party: true, |
| base_feature: "FetchLaterAPI", |
| // base_feature is meant as kill-switch. This runtime-enabled feature |
| // should follow the Origin Trial unless explicitly overriden by Finch or |
| // commandline flags. |
| base_feature_status: "enabled", |
| // Enables the Blink feature only when the base::Feature is overridden by |
| // field trial or command line. |
| 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"}, |
| base_feature: "FileHandlingAPI", |
| }, |
| { |
| name: "FileHandlingIcons", |
| depends_on: ["FileHandling"], |
| status: {"Android": "test", "default": "experimental"}, |
| base_feature: "none", |
| }, |
| { |
| name: "FileSystem", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| // Shared objects by OPFS and non-OPFS File System Access API. |
| name: "FileSystemAccess", |
| implied_by: ["FileSystemAccessLocal", "FileSystemAccessOriginPrivate"], |
| }, |
| { |
| // In-development features for the File System Access API. |
| name: "FileSystemAccessAPIExperimental", |
| status: "experimental", |
| }, |
| { |
| // The FileSystemHandle.getCloudIdentifiers() method (see |
| // crbug.com/1443354). |
| name: "FileSystemAccessGetCloudIdentifiers", |
| status: { |
| "ChromeOS_Ash": "experimental", |
| "ChromeOS_Lacros": "experimental", |
| "default": "", |
| } |
| }, |
| { |
| // Non-OPFS File System Access API. |
| name: "FileSystemAccessLocal", |
| status: {"Android": "test", "default": "stable"}, |
| }, |
| { |
| name: "FileSystemAccessLockingScheme", |
| status: "stable", |
| }, |
| { |
| // OPFS File System Access API. |
| name: "FileSystemAccessOriginPrivate", |
| status: "stable", |
| }, |
| { |
| // The FileSystemObserver interface for the File System Access API. |
| // See https://crbug.com/1019297. |
| name: "FileSystemObserver", |
| depends_on: ["FileSystemAccess"], |
| status: "experimental", |
| }, |
| { |
| name: "Fledge", |
| base_feature: "none", |
| origin_trial_feature_name: "PrivacySandboxAdsAPIs", |
| origin_trial_allows_third_party: true, |
| public: true, |
| }, |
| { |
| name: "FledgeBiddingAndAuctionServerAPI", |
| origin_trial_feature_name: "FledgeBiddingAndAuctionServer", |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| name: "FledgeClearOriginJoinedAdInterestGroups", |
| status: "stable", |
| }, |
| { |
| name: "FledgeCreateAuctionNonceSynchronousResolution", |
| status: "stable", |
| }, |
| { |
| name: "FledgeCustomMaxAuctionAdComponents", |
| }, |
| { |
| // Enables using a 'deprecatedRenderURLReplacements' field within the |
| // Protected Audience ad auction config. |
| name: "FledgeDeprecatedRenderURLReplacements" |
| }, |
| { |
| name: "FledgeDirectFromSellerSignalsHeaderAdSlot", |
| status: "stable", |
| }, |
| { |
| name: "FledgeFeatureDetection", |
| // FledgeFeatureDetection should be on if any of the features it aims |
| // to help detect is on. |
| implied_by: ["FledgeCustomMaxAuctionAdComponents", |
| "FledgeDeprecatedRenderURLReplacements"], |
| base_feature: "none", |
| }, |
| { |
| name: "FledgeMultiBid", |
| }, |
| { |
| name: "FledgeNegativeTargeting", |
| status: "stable", |
| }, |
| { |
| // Enables using a 'reportingTimeout' field within the Protected Audience |
| // ad auction config. |
| name: "FledgeReportingTimeout", |
| }, |
| { |
| name: "FledgeTrustedBiddingSignalsSlotSize", |
| status: "stable", |
| }, |
| { |
| name: "FluentOverlayScrollbars", |
| }, |
| { |
| name: "FluentScrollbars", |
| }, |
| { |
| // Kill switch for crbug.com/1420810 fix |
| // TODO(xiaochengh): Remove after M122. |
| name: "FlushParserBeforeCreatingCustomElements", |
| status: "stable", |
| }, |
| { |
| name: "Focusgroup", |
| status: "experimental", |
| base_feature: "none", |
| origin_trial_feature_name: "Focusgroup", |
| }, |
| { |
| name: "FocusStyleInvalidationOnPageActivation", |
| status: "stable", |
| }, |
| { |
| name: "FontAccess", |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "FontationsFontBackend", |
| }, |
| { |
| name: "FontFamilyPostscriptMatchingCTMigration", |
| }, |
| { |
| name: "FontFamilyStyleMatchingCTMigration", |
| }, |
| { |
| name: "FontMatchingCTMigration", |
| status: "stable", |
| }, |
| { |
| name: "FontPaletteAnimation", |
| status: "stable", |
| }, |
| { |
| name: "FontSrcLocalMatching", |
| base_feature: "none", |
| // 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", |
| base_feature: "none", |
| }, |
| { |
| 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", |
| }, |
| { |
| // TODO(crbug.com/1419161): Remove this feature after M113 has been stable |
| // for a few weeks or more. This is a kill switch that, when enabled, goes |
| // back to the old behavior, which was to restore the state for <input> |
| // and <select> even when they had `autocomplete=off`. |
| name: "FormControlRestoreStateIfAutocompleteOff", |
| }, |
| { |
| // TODO(crbug.com/1432009) Allow form controls with vertical writing mode |
| // to have direction affect the flow of the control. |
| name: "FormControlsVerticalWritingModeDirectionSupport", |
| status: "stable", |
| }, |
| { |
| // Allow these form controls to have vertical writing mode: select, meter, |
| // progress, button and non-text-based input types. |
| name: "FormControlsVerticalWritingModeSupport", |
| status: "stable", |
| }, |
| { |
| // Allow text-based form controls to have vertical writing mode: textarea |
| // and input types email, number, password, search, tel, text, url. |
| name: "FormControlsVerticalWritingModeTextSupport", |
| status: "stable", |
| }, |
| { |
| // Bug fix for crbug.com/1429585 |
| name: "FormStateRestoreCallbackCallWithState", |
| status: "stable", |
| }, |
| { |
| name: "FractionalScrollOffsets", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "FreezeFramesOnVisibility", |
| status: "experimental", |
| }, |
| { |
| // Enables `fullscreen` windowFeatures parameter in window.open(). |
| name: "FullscreenPopupWindows", |
| status: "experimental", |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| origin_trial_feature_name: "FullscreenPopupWindows", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| }, |
| { |
| name: "GamepadButtonAxisEvents", |
| status: "experimental", |
| }, |
| { |
| name: "GamepadMultitouch", |
| status: "experimental", |
| public: true, |
| }, |
| { |
| name: "GetAllScreensMedia", |
| depends_on: ["GetDisplayMedia"], |
| origin_trial_feature_name: "GetAllScreensMedia", |
| origin_trial_os: ["chromeos"], |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "GetDisplayMedia", |
| public: true, |
| status: { |
| "Android": "experimental", |
| "default": "stable", |
| }, |
| base_feature: "none", |
| }, |
| { |
| name: "GetDisplayMediaRequiresUserActivation", |
| depends_on: ["GetDisplayMedia"], |
| status: "experimental", |
| }, |
| { |
| name: "GetNextSiblingPositionWhenLastChild", |
| status: "stable", |
| }, |
| { |
| name: "GroupEffect", |
| status: "test", |
| }, |
| { |
| name: "HandwritingRecognition", |
| status: { |
| "ChromeOS_Ash": "stable", |
| "ChromeOS_Lacros": "stable", |
| "default": "experimental", |
| }, |
| }, |
| { |
| // Updates the hanging behavior of preserved whitespace at the end of a |
| // line to not depend on text-align. This flag is to be used as a |
| // killswitch in case of any issues. |
| // https://github.com/w3c/csswg-drafts/issues/3440 |
| // crbug.com/1363901 |
| name: "HangingWhitespaceDoesNotDependOnAlignment", |
| status: "stable", |
| }, |
| { |
| name: "HasUAVisualTransition", |
| status: "stable", |
| }, |
| { |
| name: "HighlightInheritance", |
| status: "experimental", |
| }, |
| { |
| name: "HighlightPointerEvents", |
| }, |
| { |
| name: "HitTestOpaqueness", |
| status: "experimental", |
| }, |
| { |
| name: "HrefTranslate", |
| depends_on: ["TranslateService"], |
| origin_trial_feature_name: "HrefTranslate", |
| status: "stable", |
| base_feature: "none", |
| }, |
| // Adds support for the experimental `interesttarget` |
| // attributes, as specified in the open-ui "Interest Invokers" explainer. |
| // https://open-ui.org/components/interest-invokers.explainer/ |
| { |
| name: "HTMLInterestTargetAttribute", |
| status: "experimental", |
| }, |
| // Additional default invoke actions that aren't part of v1 of invokers. |
| // When this flag is disabled only v1 actions (popover and dialog defaults) will work. |
| { |
| name: "HTMLInvokeActionsV2", |
| status: "experimental", |
| }, |
| // Adds support for the experimental `invoketarget` and `invokeaction` |
| // attributes, as specified in the open-ui "Invokers" explainer. |
| // https://open-ui.org/components/invokers.explainer/ |
| { |
| name: "HTMLInvokeTargetAttribute", |
| status: "experimental", |
| }, |
| { |
| // A flag, just for local testing to make the |
| // HTML parser yield more often and take longer to resume. |
| // This helps when debugging flaky tests caused by parser |
| // yielding heuristics. |
| name: "HTMLParserYieldAndDelayOftenForTesting", |
| }, |
| { |
| // A flag to control the popovertargetaction=hover behavior, |
| // and associated CSS properties. |
| name: "HTMLPopoverActionHover", |
| status: "experimental", |
| }, |
| { |
| // TODO(crbug.com/1416284): Enables popover=hint functionality. |
| name: "HTMLPopoverHint", |
| status: "experimental", |
| }, |
| { |
| name: "HTMLSearchElement", |
| status: "stable", |
| }, |
| { |
| name: "HTMLSelectElementShowPicker", |
| status: "stable", |
| }, |
| { |
| name: "HTMLSelectListElement", |
| status: "experimental", |
| }, |
| { |
| // http://crbug.com/1478969 |
| // https://github.com/whatwg/html/pull/9538 |
| // https://chromestatus.com/feature/6560361081995264 |
| // Enabled by default in M123, should be safe to remove in M127 |
| name: "HTMLUnsafeMethods", |
| status: "stable", |
| }, |
| { |
| name: "ImplicitRootScroller", |
| public: true, |
| settable_from_internals: true, |
| status: {"Android": "stable"}, |
| base_feature: "none", |
| }, |
| // This change, although technically breaking, is expected to be fully web-compatible |
| // due to how import attributes are currently used in the ecosystem. However, this is |
| // a killswitch just in case. This can be removed once it ships to stable and no |
| // regressions are reported. |
| { |
| name: "ImportAttributesDisallowUnknownKeys", |
| status: "stable" |
| }, |
| { |
| // ImprovedXMLErrors tweaks the way that we emit XML parsing errors in |
| // some cases in order to comply with upstream changes to libxml. |
| // Shipping in M123, so should be safe to remove in M126. |
| name: "ImprovedXMLErrors", |
| status: "stable", |
| }, |
| { |
| name: "IncomingCallNotifications", |
| }, |
| { |
| name: "InertDisplayTransition", |
| status: "stable", |
| }, |
| { |
| name: "InertElementNonEditable", |
| status: "stable", |
| }, |
| { |
| name: "InertElementNonSearchable", |
| 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: "InheritUserModifyWithoutContenteditable", |
| status: "stable", |
| }, |
| { |
| // If enabled, and the inner html parser is unable to successfully |
| // parse, it will log histograms of why it failed. The logging is |
| // non-trivial. |
| name: "InnerHTMLParserFastpathLogFailure", |
| status: "experimental", |
| }, |
| { |
| name: "InputMultipleFieldsUI", |
| // No plan to support complex UI for date/time INPUT types on Android and |
| // iOS. |
| status: {"Android": "test", "iOS": "test", "default": "stable"}, |
| }, |
| // Insert a blockquote before a outer block after creating the blockquote |
| // when indenting a node whose outer block is a blockquote. See |
| // https://crbug.com/327665597 |
| { |
| name: "InsertBlockquoteBeforeOuterBlock", |
| status: "stable", |
| }, |
| { |
| // crbug.com/1420675 |
| name: "InsertLineBreakIfPhrasingContent", |
| status: {"Android": "test", "default": "stable"}, |
| }, |
| { |
| name: "InstalledApp", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "InteroperablePrivateAttribution", |
| status: "experimental", |
| }, |
| { |
| name: "InterruptComposedScrollbarDisappearance", |
| status: "stable", |
| }, |
| { |
| // If enabled, IntersectionObserverScrollMargin will be parsed. |
| name: "IntersectionObserverScrollMargin", |
| status: "stable", |
| }, |
| { |
| name: "IntersectionOptimization", |
| status: "experimental", |
| }, |
| { |
| name: "InvertedColors", |
| status: "experimental", |
| }, |
| { |
| name: "InvisibleSVGAnimationThrottling", |
| status: "stable", |
| }, |
| { |
| name: "JavaScriptCompileHintsMagicRuntime", |
| status: "experimental", |
| origin_trial_feature_name: "JavaScriptCompileHintsMagic", |
| }, |
| { |
| name: "KeyboardAccessibleTooltip", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "KeyboardFocusableScrollers", |
| status: "experimental", |
| }, |
| { |
| // This feature makes HTMLLabelElement::DefaultEventHandler always call |
| // HTMLElement::DefaultEventHandler instead of only doing so |
| // conditionally. Shipping in M123 so should be safe to remove in M127. |
| name: "LabelEventHandlerCallSuper", |
| status: "stable", |
| }, |
| { |
| name: "LangAttributeAwareFormControlUI", |
| settable_from_internals: true, |
| }, |
| { |
| name: "LayoutFlexNewRowAlgorithmV3", |
| status: "test", |
| }, |
| { |
| name: "LayoutIgnoreMarginsForSticky", |
| }, |
| { |
| name: "LayoutNGShapeCache", |
| status: "test", |
| base_feature: "LayoutNGShapeCache", |
| }, |
| { |
| name: "LayoutSegmentationCache", |
| status: "stable", |
| }, |
| { |
| name: "LazyInitializeMediaControls", |
| base_feature: "none", |
| public: true, |
| // This is enabled by features::kLazyInitializeMediaControls. |
| }, |
| { |
| // If enabled, the lazy load image observer will use a scroll margin in |
| // its init dictionary instead of a root margin. |
| name: "LazyLoadScrollMargin", |
| public: true, |
| status: "stable", |
| }, |
| { |
| // If enabled, the lazy load iframe observer will use a scroll margin in |
| // its init dictionary instead of a root margin. |
| name: "LazyLoadScrollMarginIframe", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "LCPAnimatedImagesWebExposed", |
| status: "test", |
| }, |
| { |
| name: "LCPMouseoverHeuristics", |
| }, |
| { |
| name: "LCPMultipleUpdatesPerElement", |
| }, |
| { |
| name: "LegacyWindowsDWriteFontFallback", |
| // Enabled by features::kLegacyWindowsDWriteFontFallback; |
| base_feature: "none", |
| }, |
| { |
| name: "LockedMode", |
| status: "test", |
| // Enabled by features::kLockedMode. |
| public: true, |
| }, |
| { |
| // Enables long aniamtion frames as a performance API (the |
| // "long-animation-frame" timeline entry) |
| name: "LongAnimationFrameTiming", |
| status: "stable" |
| }, |
| { |
| // Use LongAnimationFrameMonitor to emit longtask entries |
| name: "LongTaskFromLongAnimationFrame", |
| status: "stable", |
| }, |
| { |
| name: "MacFontsDeprecateFontTraitsWorkaround", |
| status: "stable", |
| }, |
| { |
| name: "MachineLearningCommon", |
| implied_by: ["MachineLearningModelLoader", "MachineLearningNeuralNetwork"], |
| status: "experimental", |
| }, |
| { |
| name: "MachineLearningModelLoader", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "MachineLearningNeuralNetwork", |
| public: true, |
| status: { |
| "ChromeOS_Ash": "experimental", |
| "ChromeOS_Lacros": "experimental", |
| "Win": "experimental", |
| "Mac": "experimental", |
| "Linux": "experimental", |
| "default": "test" |
| }, |
| base_feature: "none", |
| }, |
| { |
| name: "ManagedConfiguration", |
| status: "stable", |
| }, |
| { |
| // crbug.com/40417720 |
| name: "MaskingGraphemeClusters", |
| status: "stable", |
| depends_on: ["OffsetMappingUnitVariable"], |
| }, |
| { |
| name:"MeasureMemory", |
| status:"stable", |
| }, |
| { |
| name: "MediaCapabilitiesDynamicRange", |
| status: "stable", |
| }, |
| { |
| name: "MediaCapabilitiesEncodingInfo", |
| status: "experimental", |
| }, |
| { |
| name: "MediaCapabilitiesSpatialAudio", |
| status: "test", |
| }, |
| { |
| name: "MediaCapture", |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "MediaCaptureBackgroundBlur", |
| origin_trial_feature_name: "MediaCaptureBackgroundBlur", |
| status: "experimental", |
| implied_by: ["MediaCaptureCameraControls"], |
| base_feature: "none", |
| }, |
| { |
| name: "MediaCaptureCameraControls", |
| status: "experimental", |
| }, |
| { |
| name: "MediaCaptureConfigurationChange", |
| origin_trial_feature_name: "MediaCaptureBackgroundBlur", |
| status: "experimental", |
| implied_by: ["MediaCaptureBackgroundBlur"], |
| base_feature: "none", |
| }, |
| { |
| name: "MediaCaptureVoiceIsolation", |
| status: "experimental", |
| }, |
| // Set to reflect the MediaCastOverlayButton feature. |
| { |
| name: "MediaCastOverlayButton", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "MediaControlsExpandGesture", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "MediaControlsOverlayPlayButton", |
| public: true, |
| settable_from_internals: true, |
| status: {"Android": "stable"}, |
| base_feature: "none", |
| }, |
| { |
| name: "MediaElementVolumeGreaterThanOne", |
| }, |
| // Set to reflect the kMediaEngagementBypassAutoplayPolicies feature. |
| { |
| name: "MediaEngagementBypassAutoplayPolicies", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "MediaLatencyHint", |
| status: "test", |
| }, |
| { |
| name: "MediaQueryNavigationControls", |
| }, |
| { |
| // This uses media::VideoEncoder implementation in MediaRecorder API |
| // instead of using MediaRecorder own video encoder implementation. |
| name: "MediaRecorderUseMediaVideoEncoder", |
| }, |
| { |
| name: "MediaSession", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "MediaSessionChapterInformation", |
| status: "test", |
| }, |
| { |
| name: "MediaSessionEnterPictureInPicture", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "MediaSourceExperimental", |
| status: "experimental", |
| }, |
| { |
| name: "MediaSourceExtensionsForWebCodecs", |
| status: "experimental", |
| base_feature: "none", |
| origin_trial_feature_name: "MediaSourceExtensionsForWebCodecs", |
| }, |
| { |
| name: "MediaSourceNewAbortAndDuration", |
| status: "experimental", |
| }, |
| { |
| name: "MediaStreamTrackTransfer", |
| status: "test", |
| base_feature: "none", |
| }, |
| { |
| name: "MessagePortCloseEvent", |
| 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: "ModelExecutionAPI", |
| status: "test", |
| base_feature: "EnableModelExecutionAPI", |
| }, |
| { |
| name: "MojoJS", |
| status: "test", |
| }, |
| // MojoJSTest is used exclusively in testing environments, whereas MojoJS |
| // may also be used elsewhere. |
| { |
| name: "MojoJSTest", |
| status: "test", |
| base_feature: "none", |
| }, |
| // crbug.com/269917: Make mouse event targets agnostic to mousedown event |
| // cancellation when the pointer is dragged out of an iframe. |
| { |
| name: "MouseDragFromIframeOnCancelledMouseDown", |
| status: "stable", |
| }, |
| // crbug.com/40078978: Allow mouse-drag text selection even when mousemove |
| // event is cancelled. |
| { |
| name: "MouseDragOnCancelledMouseMove", |
| status: "stable", |
| }, |
| // crbug.com/1446498: This feature is being used for the deprecation of |
| // Mutation Events. |
| { |
| name: "MutationEvents", |
| status: "stable", |
| origin_trial_feature_name: "MutationEvents", |
| origin_trial_type: "deprecation", |
| origin_trial_allows_insecure: true, |
| origin_trial_allows_third_party: true, |
| public: true, |
| }, |
| // crbug.com/1446498: This feature is just used as part of an "early trial" |
| // of disabling Mutation Events in Canary/Dev/Beta. If this feature is |
| // enabled *and* MutationEvents is disabled, then a special console error |
| // message is used to give more information. |
| { |
| name: "MutationEventsSpecialTrialMessage", |
| }, |
| { |
| name: "NavigateEventCommitBehavior", |
| status: "experimental", |
| }, |
| { |
| name: "NavigateEventSourceElement", |
| status: "experimental", |
| }, |
| { |
| name: "NavigationActivation", |
| status: "stable", |
| }, |
| { |
| name: "NavigationId", |
| status: "experimental", |
| origin_trial_feature_name: "SoftNavigationHeuristics", |
| }, |
| { |
| name: "NavigatorContentUtils", |
| // Android does not yet support NavigatorContentUtils. |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "NestedTopLayerSupport", |
| status: "experimental", |
| }, |
| { |
| name: "NetInfoConstantType", |
| }, |
| { |
| 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", |
| }, |
| base_feature: "none", |
| }, |
| { |
| // This is a killswitch for the behavior of Element::GetFocusableArea |
| // on delegatesFocus shadow hosts. This flag can be removed in M127 if |
| // things are stable. |
| name: "NewGetFocusableAreaBehavior", |
| status: "stable", |
| }, |
| { |
| name: "NextSiblingPositionUseNextCandidate", |
| status: "stable", |
| }, |
| { |
| name: "NoIdleEncodingForWebTests", |
| status: "test", |
| }, |
| // Doesn't increase the end offset on getting the range for a new line |
| // character. See https://crbug.com/326888905 |
| { |
| name: "NoIncreasingEndOffsetOnSplittingTextNodes", |
| status: "stable", |
| }, |
| // Makes enter/leave Mouse and Pointer Events non-composed as per |
| // corresponding specifications. |
| { |
| name: "NonComposedEnterLeaveEvents", |
| public: true, |
| status: "stable", |
| }, |
| // Doesn't insert empty blockquotes on outdenting a blockquote. See |
| // https://crbug.com/323960902 |
| { |
| name: "NonEmptyBlockquotesOnOutdenting", |
| status: "stable", |
| }, |
| { |
| // TODO(crbug.com/924486): This feature enables the deprecated values |
| // inner-spin-button, push-button, searchfield-cancel-button, |
| // slider-horizontal, square-button. Disable this feature to stop |
| // parsing or allowing these values. |
| // This feature is disabled in fieldtrial testing config because we are |
| // testing the deprecation via Finch. |
| // https://drafts.csswg.org/css-ui-4/#appearance-switching |
| name: "NonStandardAppearanceValuesHighUsage", |
| }, |
| { |
| // TODO(crbug.com/1426629): This feature enables the deprecated value |
| // slider-vertical. Disable this feature to stop parsing or allowing these |
| // values. |
| // https://drafts.csswg.org/css-ui-4/#appearance-switching |
| name: "NonStandardAppearanceValueSliderVertical", |
| status: "stable", |
| }, |
| { |
| // TODO(crbug.com/924486): This feature enables the deprecated values |
| // media-slider, media-sliderthumb, media-volume-slider |
| // media-volume-sliderthumb, sliderthumb-horizontal, sliderthumb-vertical. |
| // Disable this feature to stop parsing or allowing these values. |
| // https://drafts.csswg.org/css-ui-4/#appearance-switching |
| name: "NonStandardAppearanceValuesLowUsage", |
| }, |
| { |
| name: "NoOffsetMappingForInconsistentText", |
| status: "stable", |
| }, |
| { |
| 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"}, |
| base_feature: "none", |
| }, |
| { |
| name: "Notifications", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "NotificationTriggers", |
| origin_trial_feature_name: "NotificationTriggers", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| // Origin trial to experiment with No-Vary-Search in Prefetch Cache. |
| // The functionality in this Origin Trial is now enabled by default in the |
| // browser by network::features::kPrefetchNoVarySearchShippedByDefault |
| // feature parameter of network::features::kPrefetchNoVarySearch. |
| // This runtime enabled feature is ignored as long as the feature |
| // parameter network::features::kPrefetchNoVarySearchShippedByDefault is |
| // not disabled via Finch. |
| // 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", |
| base_feature: "none", |
| origin_trial_feature_name: "NoVarySearchPrefetch", |
| }, |
| { |
| name: "ObservableAPI", |
| status: "experimental", |
| public: true, |
| }, |
| { |
| name: "OffMainThreadCSSPaint", |
| status: "stable", |
| }, |
| { |
| name: "OffscreenCanvasCommit", |
| status: "experimental", |
| }, |
| { |
| // crbug.com/40532763 |
| name: "OffsetMappingUnitVariable", |
| status: "stable", |
| }, |
| { |
| name: "OmitBlurEventOnElementRemoval", |
| status: "test" |
| }, |
| { |
| name: "OnDeviceChange", |
| // Android does not yet support SystemMonitor. |
| status: {"Android": "", "default": "stable"}, |
| }, |
| // This flag is a killswitch. It was only exists as a way for us to turn |
| // the feature off in the emergency that it breaks websites. |
| // TODO(http://crbug.com/1473340): Delete internal web_tests which are |
| // redundant with existing WPTs when we delete this flag. |
| { |
| name: "OptionElementAlwaysUseLabel", |
| status: "stable", |
| }, |
| { |
| name: "OrientationEvent", |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "OriginIsolationHeader", |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| 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", |
| base_feature: "none", |
| 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. |
| { |
| name: "OriginTrialsSampleAPIBrowserReadWrite", |
| base_feature: "none", |
| origin_trial_feature_name: "FrobulateBrowserReadWrite", |
| browser_process_read_write_access: 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. |
| // TODO(yashard): Add tests for this feature. |
| { |
| name: "OriginTrialsSampleAPIDependent", |
| depends_on: ["OriginTrialsSampleAPI"], |
| base_feature: "none", |
| }, |
| // 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", |
| base_feature: "none", |
| 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", |
| base_feature: "none", |
| 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", |
| base_feature: "none", |
| 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", |
| base_feature: "none", |
| 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", |
| base_feature: "none", |
| 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", |
| base_feature: "none", |
| 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", |
| base_feature: "none", |
| 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", |
| base_feature: "none", |
| origin_trial_feature_name: "FrobulatePersistent", |
| 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: "OriginTrialsSampleAPIPersistentInvalidOS", |
| base_feature: "none", |
| origin_trial_feature_name: "FrobulatePersistentInvalidOS", |
| origin_trial_allows_third_party: true, |
| 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: "OriginTrialsSampleAPIPersistentThirdPartyDeprecationFeature", |
| base_feature: "none", |
| origin_trial_feature_name: "FrobulatePersistentThirdPartyDeprecation", |
| origin_trial_allows_third_party: true, |
| origin_trial_type: "deprecation", |
| }, |
| // 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", |
| base_feature: "none", |
| 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", |
| base_feature: "none", |
| origin_trial_feature_name: "PageFreezeOptIn", |
| }, |
| { |
| name: "PageFreezeOptOut", |
| base_feature: "none", |
| origin_trial_feature_name: "PageFreezeOptOut", |
| }, |
| // Support for page margin boxes. |
| // https://www.w3.org/TR/css-page-3/#margin-boxes |
| { |
| name: "PageMarginBoxes", |
| }, |
| { |
| name: "PagePopup", |
| // Android does not have support for PagePopup |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "PageRevealEvent", |
| status: "stable", |
| implied_by: ["ViewTransitionOnNavigation"], |
| }, |
| { |
| name: "PageSwapEvent", |
| status: "stable", |
| implied_by: ["ViewTransitionOnNavigation"], |
| }, |
| { |
| name: "PaintUnderInvalidationChecking", |
| settable_from_internals: true, |
| }, |
| { |
| // PARAKEET ad serving runtime flag/JS API. |
| name: "Parakeet", |
| origin_trial_feature_name: "Parakeet", |
| }, |
| // This is to add an option to enable the Reveal button on password inputs while waiting ::reveal gets standardized. |
| { |
| name: "PasswordReveal", |
| }, |
| { |
| name: "PasswordStrongLabel", |
| status: "experimental", |
| }, |
| { |
| name: "PastingBlocksSVGUseNonLocalHrefs", |
| status: "stable", |
| }, |
| { |
| name: "PaymentApp", |
| depends_on: ["PaymentRequest"], |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| // Desktop only, if enabled PaymentHandler will use the new minimal header UX. |
| // See https://crbug.com/1385136. |
| { |
| name: "PaymentHandlerMinimalHeaderUX", |
| origin_trial_feature_name: "PaymentHandlerMinimalHeaderUX", |
| origin_trial_allows_third_party: true, |
| origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos"], |
| status: "stable", |
| }, |
| { |
| name: "PaymentInstruments", |
| depends_on: ["PaymentApp"], |
| }, |
| { |
| name: "PaymentMethodChangeEvent", |
| depends_on: ["PaymentRequest"], |
| status: "stable", |
| }, |
| // PaymentRequest is enabled by default on Android |
| { |
| name: "PaymentRequest", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "PaymentRequestAllowOneActivationlessShow", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "PaymentRequestMerchantValidationEvent", |
| status: "experimental", |
| }, |
| { |
| name: "PendingBeaconAPI", |
| origin_trial_feature_name: "PendingBeaconAPI", |
| origin_trial_allows_third_party: true, |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "PercentBasedScrolling", |
| base_feature: "none", |
| public: true, |
| settable_from_internals: true, |
| }, |
| { |
| name: "PerformanceManagerInstrumentation", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // Enables performance.mark('mark_feature_usage'): crbug.com/1517170 |
| name: "PerformanceMarkFeatureUsage", |
| status: "experimental" |
| }, |
| { |
| name: "PerformanceNavigateSystemEntropy", |
| status: "experimental", |
| }, |
| { |
| name: "PeriodicBackgroundSync", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "PerMethodCanMakePaymentQuota", |
| origin_trial_feature_name: "PerMethodCanMakePaymentQuota", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // Tracking bug for the implementation: https://crbug.com/1462930 |
| name: "PermissionElement", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "Permissions", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "PermissionsRequestRevoke", |
| status: "experimental", |
| }, |
| // This is a reverse OT used for a phased deprecation. |
| // https://crbug.com/918374 |
| { |
| name: "PNaCl", |
| base_feature: "none", |
| origin_trial_feature_name: "PNaCl", |
| }, |
| { |
| name: "PointerCaptureLostOnRemovalDuringCapture", |
| status: "stable", |
| }, |
| { |
| name: "PointerEventDeviceId", |
| status: "test", |
| }, |
| { |
| name: "PositionOutsideTabSpanCheckSiblingNode", |
| status: "stable", |
| }, |
| { |
| name: "PreciseMemoryInfo", |
| base_feature: "none", |
| public: true, |
| }, |
| // Adds a web setting to disable CSS ScrollbarColor, ScrollbarWidth, and |
| // legacy ::-webkit-scrollbar* pseudo element styling. |
| { |
| name: "PreferDefaultScrollbarStyles", |
| }, |
| // 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", |
| }, |
| // This feature is deprecated and we are evangelizing affected sites. |
| // See https://crbug.com/346236 for current status. |
| { |
| name: "PrefixedVideoFullscreen", |
| status: "stable", |
| }, |
| { |
| // Attempt to set up paint properties for ancestors when pre-painting a |
| // missed descendant, so that paint effects like transforms aren't lost. |
| name: "PrePaintAncestorsOfMissedOOF", |
| status: "stable", |
| }, |
| { |
| // Used to allow chrome://flags to turn off prerendering. (Without using |
| // the user-facing preloading settings page to turn off other |
| // preloading.) See https://crbug.com/1494471. |
| // |
| // It also has some feature params defined throughout the codebase. |
| name: "Prerender2", |
| status: "stable", |
| }, |
| { |
| name: "Presentation", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| // When enabled, gives the option to pretty-print JSON documents to |
| // cleanly format the JSON and make it readable. |
| name:"PrettyPrintJSONDocument", |
| status: "stable", |
| }, |
| { |
| // Privacy intervention to disable reading the system accent-color via |
| // images. |
| name: "PreventReadingSystemAccentColor", |
| status: "stable", |
| }, |
| // The RTE feature encompasses multiple APIs, including: Attribution |
| // Reporting, FLEDGE, Topics and Fenced Frames. |
| { |
| name: "PrivacySandboxAdsAPIs", |
| base_feature: "none", |
| origin_trial_feature_name: "PrivacySandboxAdsAPIs", |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| name: "PrivateAggregationAuctionReportBuyerDebugModeConfig", |
| status: "stable", |
| }, |
| { |
| name: "PrivateNetworkAccessNonSecureContextsAllowed", |
| origin_trial_feature_name: "PrivateNetworkAccessNonSecureContextsAllowed", |
| origin_trial_type: "deprecation", |
| origin_trial_allows_insecure: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "PrivateNetworkAccessNullIpAddress", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "PrivateNetworkAccessPermissionPrompt", |
| origin_trial_feature_name: "PrivateNetworkAccessPermissionPrompt", |
| origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos"], |
| status: "stable", |
| public: true, |
| base_feature: "none", |
| }, |
| { |
| name: "PrivateStateTokens", |
| // status: "test", |
| base_feature: "none", |
| origin_trial_feature_name: "TrustTokens", |
| origin_trial_allows_third_party: true, |
| public: true, |
| }, |
| { |
| // 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", |
| base_feature: "none", |
| }, |
| { |
| name: "PushMessaging", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "PushMessagingSubscriptionChange", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "QuickIntensiveWakeUpThrottlingAfterLoading", |
| status: "stable", |
| }, |
| { |
| name: "QuotaChange", |
| status: "experimental", |
| }, |
| { |
| name: "RasterInducingScroll", |
| }, |
| { |
| name: "ReadableStreamAsyncIterable", |
| status: "stable", |
| }, |
| // If enabled, the Accept-Language header will be reduced. |
| { |
| name: "ReduceAcceptLanguage", |
| base_feature: "none", |
| origin_trial_feature_name: "ReduceAcceptLanguage" |
| }, |
| { |
| name: "ReduceCookieIPCs", |
| status: "stable", |
| }, |
| { |
| // 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": "stable"}, |
| }, |
| // 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", |
| }, |
| { |
| // If enabled, the platform and oscpu of the User-Agent string will be |
| // reduced. |
| name: "ReduceUserAgentPlatformOsCpu", |
| depends_on: ["ReduceUserAgentMinorVersion"], |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "RegionCapture", |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "RemotePlayback", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "RemotePlaybackBackend", |
| settable_from_internals: true, |
| status: { |
| "Android": "stable", |
| "Win": "stable", |
| "Mac": "stable", |
| "Linux": "stable", |
| "default": "experimental"}, |
| }, |
| { |
| name: "RemoveDanglingMarkupInTarget", |
| status: "stable", |
| }, |
| { |
| name: "RemoveDataUrlInSvgUse", |
| status: "stable", |
| }, |
| { |
| name: "RemoveMobileViewportDoubleTap", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| // See https://github.com/whatwg/html/issues/10034 |
| name: "RenderBlockingInlineModuleScript", |
| status: "stable", |
| }, |
| { |
| name: "RenderBlockingStatus", |
| status: "stable", |
| }, |
| { |
| // The renderpriority attribute feature. |
| // https://github.com/WICG/display-locking/blob/main/explainers/update-rendering.md |
| name: "RenderPriorityAttribute", |
| }, |
| { |
| // TODO(crbug.com/1500633): Remove this flag when the new CursorAnchorInfo |
| // mojo pipe is launched. |
| name: "ReportVisibleLineBounds", |
| status: { |
| "Android": "stable", |
| "default": "", |
| } |
| }, |
| { |
| name: "ResourceTimingContentType", |
| status: "experimental", |
| }, |
| { |
| name: "ResourceTimingUseCORSForBodySizes", |
| status: "test", |
| }, |
| { |
| name: "RestrictGamepadAccess", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // New behavior when line breaker rewinds floats. crbug.com/1499290 |
| name: "RewindFloats", |
| status: "stable", |
| }, |
| { |
| name: "RtcAudioJitterBufferMaxPackets", |
| origin_trial_feature_name: "RtcAudioJitterBufferMaxPackets", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "RTCEncodedAudioFrameAbsCaptureTime", |
| status: "experimental", |
| }, |
| { |
| name: "RTCEncodedFrameSetMetadata", |
| status: "experimental", |
| origin_trial_feature_name: "RTCEncodedFrameSetMetadata", |
| }, |
| { |
| name: "RTCEncodedVideoFrameAdditionalMetadata", |
| status: "experimental", |
| }, |
| // Enables the use of jitterBufferTarget attribute in WebRTC. |
| // Spec: https://w3c.github.io/webrtc-extensions/#dom-rtcrtpreceiver-jitterbuffertarget |
| { |
| name: "RTCJitterBufferTarget", |
| status: "stable", |
| }, |
| // Legacy callback-based getStats() has limited availability unless this |
| // Deprecation Trial is enabled. |
| // TODO(https://crbug.com/822696): Remove when origin trial ends. |
| { |
| name: "RTCLegacyCallbackBasedGetStats", |
| origin_trial_feature_name: "RTCLegacyCallbackBasedGetStats", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| // Enables the use of |RTCRtpEncodingParameters.codec| |
| { |
| name: "RTCRtpEncodingParametersCodec", |
| status: "stable", |
| }, |
| // Enables the use of |RTCRtpTransceiver::getHeaderExtensionsToNegotiate|, |
| // |RTCRtpTransceiver::setHeaderExtensionsToNegotiate|, and |
| // |RTCRtpTransceiver::getNegotiatedHeaderExtensions|. |
| { |
| name: "RTCRtpHeaderExtensionControl", |
| status: "stable", |
| }, |
| { |
| name: "RTCStatsRelativePacketArrivalDelay", |
| origin_trial_feature_name: "RTCStatsRelativePacketArrivalDelay", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| // Enables the use of SVC scalability mode in WebRTC. |
| // Spec: https://w3c.github.io/webrtc-svc/ |
| { |
| name: "RTCSvcScalabilityMode", |
| status: "stable", |
| }, |
| { |
| // crbug.com/40942025 |
| name: "RtNoFirstLetterFirstLine", |
| status: "stable", |
| }, |
| { |
| // crbug.com/324111880 |
| name: "RubyLineBreakable", |
| }, |
| { |
| // Runs a microtask checkpoint before creating custom elements in |
| // XMLDocumentParser. Should be safe to remove after M125 |
| name: "RunMicrotaskBeforeXmlCustomElement", |
| status: "stable", |
| }, |
| { |
| name: "SanitizerAPI", |
| status: "experimental", |
| }, |
| { |
| name: "SchedulerYield", |
| origin_trial_feature_name: "SchedulerYield", |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| }, |
| { |
| // https://wicg.github.io/webcomponents/proposals/Scoped-Custom-Element-Registries |
| name: "ScopedCustomElementRegistry", |
| status: "experimental", |
| }, |
| // WebSpeech API with both speech recognition and synthesis functionality |
| // is not fully enabled on all platforms. |
| { |
| name: "ScriptedSpeechRecognition", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "ScriptedSpeechSynthesis", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "ScrollbarColor", |
| status: "stable", |
| }, |
| { |
| name: "ScrollbarWidth", |
| status: "stable", |
| }, |
| { |
| name: "ScrollEndEvents", |
| status: "stable", |
| }, |
| { |
| name: "ScrollTimeline", |
| status: "stable", |
| implied_by: ["AnimationWorklet", "ScrollTimelineCurrentTime"] |
| }, |
| { |
| name: "ScrollTimelineAlwaysOnCompositor", |
| status: "stable", |
| depends_on: ["ScrollTimelineOnCompositor"], |
| }, |
| { |
| // Separate flag for crbug.com/1426506 (getCurrentTime API change) which |
| // is expected to land after the initial launch of ScrollTimeline. |
| name: "ScrollTimelineCurrentTime", |
| status: "experimental" |
| }, |
| { |
| name: "ScrollTimelineOnCompositor", |
| status: "stable" |
| }, |
| // Implements documentElement.scrollTop/Left and bodyElement.scrollTop/Left |
| // as per the spec, matching other Web engines. |
| // |
| // This flag can't be removed until the Android min SDK version is 28 |
| // (i.e., 'P') or later. See AWSettings.setScrollTopLeftInteropEnabled |
| // and its caller. |
| { |
| name: "ScrollTopLeftInterop", |
| status: "stable", |
| }, |
| |