| { |
| // 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, experimental |
| // on Windows and not enabled on any other platform. |
| // |
| // Note that the Android status key implies Chrome for Android and WebView. |
| // |
| // "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", "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 status is overridden to the enabled or disabled |
| // state by field trial or command line, set Blink feature to the state |
| // of the base::Feature. Note: "Override to Default" doesn't affect the |
| // Blink feature. |
| // - Otherwise if the base::Feature is enabled, enable the Blink feature. |
| // - Otherwise no change. |
| // |
| // * "overridden" |
| // Enables the Blink feature when the base::Feature status is overridden |
| // to the enabled or disabled state 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. Note: "Override to Default" deosn't affect the Blink |
| // 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. Please inform developers they must embed the token in HTML. |
| 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. Please inform developers they must embed the token in HTML. |
| browser_process_read_write_access: { |
| default: false, |
| value_type: "bool", |
| }, |
| |
| // is_protected_feature indicates whether the feature enablement state should |
| // be tracked using a base::ProtectedMemory<bool> value or just a regular bool |
| // value. |
| is_protected_feature: { |
| default: false, |
| value_type: "bool", |
| } |
| }, |
| |
| data: [ |
| { |
| // This flag changes about:blank to dark in dark mode on user action. |
| name: "AboutBlankPageRespectsDarkModeOnUserAction", |
| status: "stable", |
| }, |
| { |
| name: "Accelerated2dCanvas", |
| settable_from_internals: true, |
| status: "stable", |
| }, |
| { |
| name: "AcceleratedSmallCanvases", |
| status: "stable", |
| }, |
| { |
| name: "AccessibilityAriaVirtualContent", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "AccessibilityCustomElementRoleNone", |
| public: true, |
| status: "test", |
| base_feature: "none", |
| }, |
| { |
| name: "AccessibilityExposeDisplayNone", |
| status: "test", |
| }, |
| { |
| // If the author did not define aria-actions, surface button and link |
| // children inside option and menuitem elements as implicit actions. |
| name: "AccessibilityImplicitActions", |
| status: "experimental", |
| }, |
| { |
| // Use a minimum role of group on elements that are keyboard-focusable. |
| // See https://w3c.github.io/html-aam/#minimum-role. |
| name: "AccessibilityMinRoleTabbable", |
| }, |
| { |
| name: "AccessibilityOSLevelBoldText", |
| status: "experimental", |
| public: true, |
| }, |
| { |
| // Enforce no accessible name on objects that have a role where names are |
| // prohibited (listed in https://w3c.github.io/aria/#namefromprohibited): |
| // log a friendly error in the developer console, and trigger a DCHECK(). |
| // The incorrect markup situation will be repaired, and the name will |
| // be exposed as a description instead. |
| // TODO(crbug.com/350528330, |
| // https://github.com/web-platform-tests/interop-accessibility/issues/133, |
| // https://github.com/w3c/accname/issues/240, |
| // https://github.com/w3c/accname/issues/241): If community feedback is |
| // positive, and WPT + accname testable statements are updated to allow |
| // this, then add status: test. |
| name: "AccessibilityProhibitedNames", |
| }, |
| { |
| name: "AccessibilitySerializationSizeMetrics", |
| status: "experimental", |
| }, |
| { |
| name: "AccessibilityUseAXPositionForDocumentMarkers", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // https://chromestatus.com/feature/5113389252739072 |
| // https://issues.chromium.org/issues/41119923 |
| name: "AccessKeyLabel", |
| status: "experimental", |
| }, |
| { |
| name: "AddressSpace", |
| status: "experimental", |
| implied_by: ["CorsRFC1918"], |
| }, |
| { |
| // Interest Group JS API/runtimeflag. |
| name: "AdInterestGroupAPI", |
| status: "stable", |
| origin_trial_feature_name: "AdInterestGroupAPI", |
| implied_by: ["Fledge", "Parakeet"], |
| public: true, |
| }, |
| // Fix for crbug.com/403358869 |
| { |
| name: "AdjustDOMOffsetToLayoutOffsetForSecureText", |
| status: "stable", |
| }, |
| // Adjust the end of the next paragraph if the end position for the |
| // paragraph is updated while moving the paragraph. See |
| // https://crbug.com/329121649 |
| { |
| name: "AdjustEndOfNextParagraphIfMovedParagraphIsUpdated", |
| status: "stable", |
| }, |
| { |
| name: "AdTagging", |
| public: true, |
| status: "test", |
| base_feature: "none", |
| }, |
| { |
| name: "AIClassifierAPI", |
| status: { |
| "Win": "experimental", |
| "Mac": "experimental", |
| "Linux": "experimental", |
| "ChromeOS": "experimental", |
| "default": "", |
| }, |
| }, |
| // Whether to automatically build an APC content_extraction tree on load. |
| { |
| name: "AIPageContentBuildOnLoadForTesting", |
| }, |
| // Whether to enforce geometry invariants in AIPageContentAgent. |
| // Only supported for DCHECK-enabled builds. |
| { |
| name: "AIPageContentCheckGeometry", |
| status: "test" |
| }, |
| // Ensures that text content extracted from DOM nodes are valid UTF-8 Before |
| // providing them to consumers of AIPageContent. |
| { |
| name: "AIPageContentConvertNodeTextToUtf8", |
| status: "stable" |
| }, |
| { |
| name: "AIPageContentIncludeSVGSubtree", |
| status: "stable" |
| }, |
| // Use MapToVisualRectInAncestorSpace for outer bounding boxes, for |
| // math consistent with visual bounding boxes. |
| { |
| name: "AIPageContentOuterBoxMapToAncestorSpace", |
| }, |
| { |
| name: "AIPageContentPaidContentAnnotation", |
| status: "stable" |
| }, |
| // Clamp AIPageContent visible bounding boxes to the local-root viewport |
| // after visual-viewport mapping to normalize viewport-relative geometry. |
| { |
| name: "AIPageContentVisualViewportClamp", |
| status: "stable", |
| implied_by: ["AIPageContentBuildOnLoadForTesting"], |
| }, |
| { |
| name: "AIPromptAPI", |
| public: true, |
| status: { |
| "Win": "experimental", |
| "Mac": "experimental", |
| "Linux": "experimental", |
| "ChromeOS": "experimental", |
| "default": "", |
| }, |
| origin_trial_feature_name: "AIPromptAPIMultimodalInput", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| origin_trial_allows_third_party: true, |
| implied_by: ["AIPromptAPIMultimodalInput"], |
| }, |
| { |
| // Extension access to "AIPromptAPI". |
| name: "AIPromptAPIForExtension", |
| public: true, |
| status: { |
| "Win": "stable", |
| "Mac": "stable", |
| "Linux": "stable", |
| "ChromeOS": "stable", |
| "default": "", |
| }, |
| }, |
| { |
| name: "AIPromptAPIForWorkers", |
| public: true, |
| }, |
| { |
| name: "AIPromptAPIMultimodalInput", |
| status: { |
| "Win": "experimental", |
| "Mac": "experimental", |
| "Linux": "experimental", |
| "ChromeOS": "experimental", |
| "default": "", |
| }, |
| origin_trial_feature_name: "AIPromptAPIMultimodalInput", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| origin_trial_allows_third_party: true, |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| // Gates access to the responseConstraint enhancement for "AIPromptAPI". |
| // This feature alone does not expose any "AIPromptAPI" feature access. |
| name: "AIPromptAPIStructuredOutput", |
| status: "stable", |
| }, |
| { |
| // Gates access to the tool use (function calling) enhancement for |
| // "AIPromptAPI". This feature alone does not expose any "AIPromptAPI" |
| // feature access. |
| name: "AIPromptAPIToolUse", |
| status: { |
| "Win": "experimental", |
| "Mac": "experimental", |
| "Linux": "experimental", |
| "ChromeOS": "experimental", |
| "default": "", |
| }, |
| }, |
| { |
| name: "AIProofreadingAPI", |
| status: { |
| "Win": "experimental", |
| "Mac": "experimental", |
| "Linux": "experimental", |
| "ChromeOS": "experimental", |
| "default": "", |
| }, |
| origin_trial_feature_name: "AIProofreaderAPI", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| origin_trial_allows_third_party: true, |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "AIRewriterAPI", |
| status: { |
| "Win": "experimental", |
| "Mac": "experimental", |
| "Linux": "experimental", |
| "ChromeOS": "experimental", |
| "default": "", |
| }, |
| origin_trial_feature_name: "AIRewriterAPI", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| origin_trial_allows_third_party: true, |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "AIRewriterAPIForWorkers", |
| public: true, |
| }, |
| { |
| name: "AISummarizationAPI", |
| status: { |
| "Win": "stable", |
| "Mac": "stable", |
| "Linux": "stable", |
| "ChromeOS": "stable", |
| "default": "", |
| }, |
| }, |
| { |
| name: "AISummarizationAPIForWorkers", |
| public: true, |
| }, |
| { |
| name: "AISummarizationPerformancePreference", |
| status: "experimental", |
| }, |
| { |
| name: "AIWriterAPI", |
| status: { |
| "Win": "experimental", |
| "Mac": "experimental", |
| "Linux": "experimental", |
| "ChromeOS": "experimental", |
| "default": "", |
| }, |
| origin_trial_feature_name: "AIWriterAPI", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| origin_trial_allows_third_party: true, |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "AIWriterAPIForWorkers", |
| public: true, |
| }, |
| { |
| name: "AlignZoomToCenter", |
| status: "stable", |
| }, |
| { |
| name: "AllImagesPaintedSentToElementTiming", |
| status: "experimental", |
| }, |
| { |
| name: "AllowContentInitiatedDataUrlNavigations", |
| base_feature: "none", |
| }, |
| { |
| name: "AllowPreloadingWithCSPMetaTag", |
| status: "experimental", |
| }, |
| { |
| name: "AllowSameSiteNoneCookiesInSandbox", |
| base_feature: "none", |
| |
| // No status because this blink runtime feature doesn't work by itself. |
| // It's controlled by the corresponding Chromium feature, |
| // net::features::kAllowSameSiteNoneCookiesInSandbox, which needs to be |
| // enabled to make the whole feature work. |
| }, |
| { |
| // https://crbug.com/40681200 |
| name: "AllowSkippingEditingBoundaryToMergeEnd", |
| status: "stable", |
| }, |
| { |
| name: "AllowSvgUseToReferenceExternalDocumentRoot", |
| status: "stable", |
| }, |
| { |
| name: "AllowSyntheticTimingForCanvasCapture", |
| base_feature: "none", |
| status: { |
| "Mac": "stable", |
| "default": "" |
| } |
| }, |
| { |
| name: "AllowURNsInIframes", |
| base_feature: "none", |
| }, |
| { |
| // Enables the new behavior for this spec change: |
| // https://github.com/whatwg/html/pull/11457 |
| // https://issues.chromium.org/issues/433545121 |
| // https://chromestatus.com/feature/5179013869993984 |
| name: "AncestorRevealingNewSpec", |
| status: "stable", |
| }, |
| { |
| // This is a bug fix for rendering a missing focus ring on <a> elements. |
| // Shipping in M147, safe to remove in M150. |
| name: "AnchorFocusRingFix", |
| status: "stable", |
| }, |
| { |
| // Kill switch for https://crbug.com/415834974 which changes anchor |
| // positioning adjustments to occur even in cases where there is no |
| // scrollable overflow. |
| name: "AnchorPositionAdjustmentWithoutOverflow", |
| status: "stable", |
| }, |
| { |
| name: "AndroidDownloadableFontsMatching", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // https://chromestatus.com/feature/5083257285378048 |
| name: "AnimationProgressAPI", |
| status: "stable", |
| }, |
| { |
| // https://drafts.csswg.org/web-animations-2/#triggers |
| name: "AnimationTrigger", |
| status: "stable", |
| implied_by: ["EventTrigger", "TimelineTrigger"], |
| }, |
| { |
| name: "AnimationWorklet", |
| }, |
| { |
| name: "AnonymousIframe", |
| status: "stable", |
| }, |
| { |
| name: "AOMAriaRelationshipProperties", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "AOMAriaRelationshipPropertiesAriaOwns", |
| public: true, |
| status: "experimental", |
| depends_on: ["AOMAriaRelationshipProperties"], |
| }, |
| { |
| // appearance:base for in-page form controls. |
| // https://drafts.csswg.org/css-forms-1/ |
| // https://issues.chromium.org/issues/450139531 |
| // https://chromestatus.com/feature/5104958101913600 |
| name: "AppearanceBase", |
| status: "experimental", |
| }, |
| { |
| name: "ApproximateGeolocationPermission", |
| // This feature is controlled by the kApproximateGeolocationPermission |
| // base::Feature in the browser process. |
| base_feature: "none", |
| }, |
| { |
| name: "ApproximateGeolocationWebVisibleAPI", |
| depends_on: ["ApproximateGeolocationPermission"], |
| }, |
| { |
| name: "AppTitle", |
| status: "experimental", |
| origin_trial_feature_name: "AppTitle", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| base_feature: "WebAppEnableAppTitle", |
| }, |
| { |
| name: "AriaActions", |
| status: "experimental", |
| }, |
| { |
| name: "AriaNotify", |
| status: {"Android": "stable", "Win": "stable", "Mac": "stable", "Linux": "stable"}, |
| implied_by: ["AriaNotifyV2"], |
| }, |
| { |
| name: "AriaNotifyV2", |
| status: {"Android": "test", "Win": "test", "Mac": "test", "Linux": "test"}, |
| }, |
| { |
| name: "AriaRowColIndexText", |
| status: "stable", |
| }, |
| { |
| // When enabled, perform async IPCs from CookieJar::SetCookie to the |
| // network service. |
| name: "AsyncSetCookie", |
| status: "stable", |
| }, |
| { |
| name: "AttributionReporting", |
| status: "stable", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // The transition to "running" after construction happens asynchronously. |
| // Same for the transition to "suspended" after suspend() is called. |
| // https://webaudio.github.io/web-audio-api/#AudioContext-constructors |
| name: "AudioContextAsyncStateTransitions", |
| status: "experimental", |
| }, |
| { |
| // AudioContext.playbackStats interface. |
| name: "AudioContextPlaybackStats", |
| status: "stable", |
| }, |
| { |
| // AudioContext.playoutStats interface. |
| // https://chromestatus.com/feature/5172818344148992 |
| name: "AudioContextPlayoutStats", |
| origin_trial_feature_name: "AudioContextPlayoutStats", |
| status: "experimental", |
| }, |
| { |
| name: "AudioContextSetSinkId", |
| status: "stable", |
| }, |
| { |
| name: "AudioOutputDevices", |
| // Android support for switching audio output devices is not stable |
| status: {"Android": "", "default": "stable"}, |
| public: true, |
| base_feature: "none" |
| }, |
| { |
| name: "AudioVideoTracks", |
| status: "experimental", |
| }, |
| { |
| name: "AuthenticatorPasswordsOnlyImmediateRequests", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // https://drafts.csswg.org/css-scroll-snap |
| name: "AuthorSpecifiedLayoutScrollSnapBehavior", |
| status: "stable", |
| }, |
| { |
| name: "AutoDarkMode", |
| base_feature: "none", |
| origin_trial_feature_name: "AutoDarkMode", |
| }, |
| { |
| name: "Autofill", |
| public: true, |
| status: "test", |
| base_feature: "none", |
| }, |
| { |
| name: "AutofillEvent", |
| origin_trial_feature_name: "AutofillEvent", |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| public: true, |
| }, |
| { |
| name: "AutomationControlled", |
| base_feature: "none", |
| public: true, |
| settable_from_internals: true, |
| }, |
| { |
| name: "AutoPictureInPictureVideoHeuristics", |
| status: "experimental", |
| }, |
| { |
| name: "AvoidForcedLayoutOnInvisibleDocumentClose", |
| status: "stable", |
| }, |
| { |
| // Fix for https://crbug.com/471876082 |
| name: "AvoidMergingStyledSpanWithSiblings", |
| status: "stable", |
| }, |
| { |
| // If the start and end positions are the same in MoveParagraph, |
| // there is no need to collapse the whitespace between them. |
| // https://crbug.com/406053617 |
| name: "AvoidNormalizingVisiblePositionsWhenStartEqualsEnd", |
| 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: "stable", |
| origin_trial_feature_name: "BackForwardCacheNotRestoredReasons", |
| base_feature: "BackForwardCacheSendNotRestoredReasons", |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "BackForwardCacheRestorationPerformanceEntry", |
| status: "experimental", |
| }, |
| { |
| name: "BackForwardCacheUpdateNotRestoredReasonsName", |
| status: "stable", |
| }, |
| { |
| name: "BackgroundClipTextDecoration", |
| status: "stable", |
| }, |
| { |
| name: "BackgroundFetch", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| // A developer opt-out for background page freezing. |
| { |
| name: "BackgroundPageFreezeOptOut", |
| base_feature: "none", |
| origin_trial_feature_name: "BackgroundPageFreezeOptOut", |
| origin_trial_type: "deprecation", |
| }, |
| { |
| name: "BarcodeDetector", |
| status: { |
| // Built-in barcode detection APIs are only available from some |
| // platforms. See //services/shape_detection. |
| "Android": "stable", |
| "ChromeOS": "stable", |
| "Mac": "stable", |
| "default": "test", |
| }, |
| }, |
| { |
| name: "BidiCaretAffinity", |
| }, |
| { |
| name: "BlinkExtensionChromeOS", |
| browser_process_read_write_access: true, |
| }, |
| { |
| name: "BlinkExtensionChromeOSKiosk", |
| depends_on: ["BlinkExtensionChromeOS"], |
| browser_process_read_write_access: true, |
| }, |
| { |
| name: "BlinkExtensionWebView", |
| public: true, |
| }, |
| { |
| name: "BlinkExtensionWebViewMediaIntegrity", |
| public: true, |
| }, |
| // Whether MapToVisualRectInAncestorSpace() with a null ancestor can |
| // use the geometry mapper fast path. |
| { |
| name: "BlinkGeometryMapperViewportFastPath", |
| status: "stable", |
| }, |
| { |
| name: "BlinkLifecycleScriptForbidden", |
| }, |
| { |
| name: "BlinkRuntimeCallStats", |
| }, |
| { |
| // https://chromestatus.com/feature/4830298126417920 |
| name: "BlobBytes", |
| status: "stable", |
| }, |
| { |
| name: "BlockingFocusWithoutUserActivation", |
| status: "experimental", |
| }, |
| { |
| // Prevents the popup document for the select element from being opened |
| // if the corresponding OS window is not focused. Enabled in M147, can be |
| // removed in M150. |
| name: "BlockSelectPopupUnfocusedWindow", |
| status: "stable", |
| }, |
| // Makes <body> marginwidth/marginheight take precedence over |
| // left/right/top/bottom presentational margin attributes, and prevents |
| // iframe marginwidth/marginheight injection when body margin attrs exist. |
| // Added in M147, remove in M149. See crbug.com/41310601. |
| { |
| name: "BodyMarginAttributePrecedence", |
| status: "stable", |
| }, |
| // https://crbug.com/415304289: 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: "stable", |
| }, |
| { |
| name: "BrowserInitiatedAutomaticPictureInPicture", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "BrowserVerifiedUserActivationKeyboard", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "BrowserVerifiedUserActivationMouse", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "BufferedBytesConsumerLimitSize", |
| status: "stable", |
| }, |
| { |
| // 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: "BypassPepcSecurityForTesting", |
| }, |
| { |
| // Enables RFC 7234-compliant Cache-Control header parsing, removing RFC |
| // 2616 separators that are not valid in RFC 7234. |
| // https://crbug.com/42050325 |
| name: "CacheControlRFC7234Parsing", |
| status: "experimental", |
| }, |
| { |
| // Enables metrics collection comparing RFC 7234 vs RFC 2616 Cache-Control |
| // parsing. Performs double parsing on every Cache-Control header to |
| // measure behavioral differences. Can be disabled as a kill switch if |
| // performance issues arise. |
| // https://crbug.com/42050325 |
| name: "CacheControlRFC7234ParsingMetrics", |
| status: "experimental", |
| }, |
| { |
| name: "CacheStorageCodeCacheHint", |
| origin_trial_feature_name: "CacheStorageCodeCacheHint", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "CallExitNodeWithoutLayoutObject", |
| status: "stable", |
| }, |
| { |
| name: "Canvas2dCanvasFilter", |
| status: "experimental", |
| }, |
| { |
| name: "Canvas2dGPUTransfer", |
| status: "experimental", |
| }, |
| { |
| name: "Canvas2dLayers", |
| }, |
| { |
| name: "Canvas2dLayersWithOptions", |
| status: "experimental", |
| depends_on: ["Canvas2dLayers"], |
| }, |
| { |
| name: "Canvas2dMesh", |
| origin_trial_feature_name: "Canvas2dMesh", |
| origin_trial_allows_third_party: true, |
| status: "test", |
| }, |
| { |
| // https://github.com/WICG/html-in-canvas/blob/main/README.md |
| // Note the API name has changed to `drawElementImage`. |
| name: "CanvasDrawElement", |
| status: "test", |
| }, |
| { |
| name: "CanvasFloatingPoint", |
| status: "stable", |
| }, |
| { |
| // Canvas2D API for specifying HDR headroom for drawing operations. |
| // https:/crbug.com/428575083, https://github.com/whatwg/html/issues/11165 |
| name: "CanvasGlobalHDRHeadroom", |
| status: "experimental", |
| }, |
| { |
| // https://crbug.com/394052224 |
| name: "CanvasGradientCSSColor4", |
| status: "experimental", |
| }, |
| { |
| name: "CanvasHDR", |
| status: "experimental", |
| }, |
| { |
| // https://crbug.com/479240778 |
| name: "CanvasTextMetricsPreciseBounds", |
| status: "experimental", |
| }, |
| { |
| // Canvas2D API for specifying HDR tone mapping behavior. |
| // https:/crbug.com/448552449, https://github.com/whatwg/html/issues/11424 |
| name: "CanvasToneMapping", |
| status: "experimental", |
| }, |
| { |
| // Kill switch for https://crbug.com/330506337. |
| name: "CanvasUsesArcPaintOp", |
| status: "stable", |
| }, |
| { |
| 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", |
| status: {"Android": "", "default": "stable"} |
| }, |
| { |
| name: "CapturedSurfaceResolution", |
| status: { "Win": "stable", "Mac": "stable", "ChromeOS": "stable", "default": ""}, |
| }, |
| { |
| name: "CaptureHandle", |
| depends_on: ["GetDisplayMedia"], |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| // Changes the caret's affinity to upstream, preventing spaces |
| // from appearing in the previous line when typing at the start |
| // of a wrapped line. See https://crbug.com/40677155 |
| name: "CaretWithTextAffinityUpstream", |
| status: "stable", |
| }, |
| { |
| // 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: "CheckableInputTypeLayoutInline", |
| status: "stable", |
| }, |
| { |
| // If focus is not at canonical position then spellcheck should be deactivated. |
| // crbug.com/396485529 |
| name: "CheckForCanonicalPositionInIdleSpellCheck", |
| status: "stable", |
| }, |
| { |
| name: "CheckVisibilityExtraProperties", |
| status: "stable", |
| }, |
| { |
| // Clamps word boundary detection to the contenteditable scope when |
| // adjacent contenteditable spans have no whitespace between them. |
| // See https://crbug.com/40848794. |
| name: "ClampWordBoundaryToContentEditableScope", |
| status: "stable", |
| }, |
| { |
| // Set currentTarget to null after dispatch for EventTarget. |
| // This was added in M142 and can be removed after M144. |
| // https://issues.chromium.org/issues/346766786 |
| name: "ClearCurrentTargetAfterDispatch", |
| status: "stable", |
| }, |
| { |
| // Fixes a bug where ancestor elements retain a stale :focus-within |
| // state if the focused element's subtree is removed during blur |
| // or focusout events. |
| // This was added in M147 and can be removed after M149. |
| // https://issues.chromium.org/issues/454668198 |
| // https://issues.chromium.org/issues/457465869 |
| name: "ClearFocusWithinOnSubtreeRemoval", |
| status: "stable", |
| }, |
| { |
| // Determine clearing of target and relatedTarget by checking |
| // if the top node is in shadow tree. |
| // This was added in M142 and can be removed after M144. |
| // https://issues.chromium.org/issues/373655918 |
| // https://issues.chromium.org/issues/40253359 |
| name: "ClearTargetOnlyIfInShadowTree", |
| status: "stable", |
| }, |
| { |
| // If the link has tabindex, the status bubble should not persist after |
| // mouse out. |
| // This was added in M146 and can be removed after M148. |
| name: "ClickFocusDoesntPersistStatusBubble", |
| status: "stable", |
| }, |
| { |
| // Enables clipboardchange event API for listening for changes to the |
| // system clipboard |
| // https://chromestatus.com/feature/5085102657503232 |
| name: "ClipboardChangeEvent", |
| origin_trial_feature_name: "ClipboardChangeEvent", |
| status: "stable", |
| }, |
| // This ensures that clipboard event fires on a target node which is |
| // focused in case no visible selection is present. |
| // crbug.com/40735783 |
| { |
| name: "ClipboardEventTargetCanBeFocusedElement", |
| status: "stable", |
| }, |
| { |
| // Allows usecounter in `ClipboardItem` |
| name: "ClipboardItemGetTypeCounter", |
| status: "stable", |
| }, |
| { |
| // Support ClipboardItemData of Promise<DOMString> type according to spec |
| // https://w3c.github.io/clipboard-apis/#typedefdef-clipboarditemdata |
| name: "ClipboardItemWithDOMStringSupport", |
| status: "stable", |
| }, |
| { |
| // TODO(crbug.com/440374239): Disabled due to https://crbug.com/440374239. |
| name: "ClipElementVisibleBoundsInLocalRoot", |
| }, |
| { |
| name: "ClipPathNestedRasterOptimization", |
| status: "stable", |
| }, |
| { |
| // Avoid queuing a task to fire a selectionchange event when there is already a task scheduled |
| // to do that for the target according to the new spec: |
| // https://w3c.github.io/selection-api/#scheduling-selectionhange-event |
| name: "CoalesceSelectionchangeEvent", |
| status: "stable", |
| }, |
| { |
| name: "CoepReflection", |
| status: "test", |
| }, |
| { |
| name: "CollapseZeroWidthSpaceWhenReuseItem", |
| status: "stable", |
| }, |
| { |
| name: "CollectWidthAndHeightAsPresentationAttributesForUse", |
| status: "stable", |
| }, |
| { |
| name: "CollectWidthAndHeightAsStylesForNestedSvg", |
| status: "stable", |
| }, |
| { |
| // Allows <input type=color> to accept any valid CSS color value |
| // (named colors, rgb(), hsl(), system colors, etc.) in addition to |
| // the legacy 7-character hex format (#rrggbb). |
| // https://crbug.com/40226268 |
| // This was added in M146 and can be removed after M148. |
| name: "ColorInputAcceptsCSSColors", |
| status: "stable", |
| }, |
| // Enable the display-p3-linear color space in CSS. |
| // https://chromestatus.com/feature/5162372125818880 |
| { |
| name: "ColorSpaceDisplayP3Linear", |
| status: "stable", |
| }, |
| // Enable the srgb-linear and display-p3-linear color spaces in |
| // PredefinedColorSpace. |
| // https://chromestatus.com/feature/5122501071994880 |
| { |
| name: "ColorSpacePredefinedLinearSpaces", |
| status: "experimental", |
| }, |
| // Enable the rec2100-linear color space in CSS and PredefinedColorSpace. |
| // https://chromestatus.com/feature/5204024772788224 |
| { |
| name: "ColorSpaceRec2100Linear", |
| status: "experimental", |
| }, |
| { |
| // Makes the command event not composed. Launched in M141. |
| // https://github.com/whatwg/html/pull/11255 |
| // https://issues.chromium.org/issues/414826954 |
| name: "CommandEventNotComposed", |
| status: "stable", |
| }, |
| { |
| // Return the current target from composedPath() while |
| // dispatching. |
| // This was added in M142 and can be removed after M144. |
| // https://issues.chromium.org/issues/444932649 |
| // https://issues.chromium.org/issues/346766786 |
| name: "ComposedPathReturnTargetBeingDispatched", |
| status: "stable", |
| }, |
| { |
| name: "CompositeBGColorAnimation", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "CompositeBoxShadowAnimation", |
| }, |
| { |
| name: "CompositeClipPathAnimation", |
| status: "experimental", |
| public: true, |
| }, |
| { |
| name: "CompositedAnimationsCancelledAsynchronously", |
| status: "stable" |
| }, |
| { |
| name: "CompositedSelectionUpdate", |
| public: true, |
| status: {"Android": "stable"}, |
| base_feature: "none", |
| }, |
| { |
| name: "CompositingDecisionAtAnimationPhaseBoundaries" |
| }, |
| { |
| name: "CompositionForegroundMarkers", |
| status: { |
| "Android": "stable", |
| "default": "", |
| } |
| }, |
| { |
| // When enabled, EventTriggers[1] will function via cc::EventTrigger |
| // objects that live on the compositor thread. |
| // [1] https://drafts.csswg.org/css-animations-2/#event-triggers |
| name: "CompositorEventTrigger" |
| }, |
| { |
| // When enabled, TimelineTriggers[1] will function via cc::TimelineTrigger |
| // objects that live on the compositor thread. |
| // [1] https://drafts.csswg.org/css-animations-2/#timeline-triggers |
| name: "CompositorTimelineTrigger", |
| }, |
| { |
| name: "CompressionDictionaryTransport", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "ComputedAccessibilityInfo", |
| status: "experimental", |
| }, |
| { |
| name: "ComputeInlineContentsSafeRetarget", |
| status: "stable", |
| }, |
| { |
| name: "ComputePressure", |
| status: { |
| "Android": "", |
| "default": "stable", |
| } |
| }, |
| { |
| name: "ComputePressureOwnContributionEstimate", |
| status: { |
| "Android": "", |
| "default": "experimental", |
| } |
| }, |
| { |
| // Fix for https://crbug.com/40659076. When enabled, queryCommandState for |
| // 'subscript' or 'superscript' with a caret selection will consider |
| // ancestor <sub> or <sup> elements, matching the behavior for range |
| // selections. |
| name: "ConsiderSubOrSuperScriptAncestorAlignForCaretSelection", |
| status: "stable" |
| }, |
| { |
| name: "ContactsManager", |
| status: {"Android": "stable", "default": "test"}, |
| }, |
| { |
| name: "ContactsManagerExtraProperties", |
| status: {"Android": "stable", "default": "test"}, |
| }, |
| { |
| name: "ContainerNameOnly", |
| status: "experimental", |
| }, |
| { |
| name: "ContainerTiming", |
| origin_trial_feature_name: "ContainerTiming", |
| status: "experimental", |
| }, |
| { |
| name: "ContentIndex", |
| status: {"Android": "stable", "default": "experimental"}, |
| }, |
| { |
| name: "ContextMenu", |
| status: "experimental", |
| }, |
| { |
| // Enable support for Controlled Frame, providing the Controlled |
| // Frame tag to IWA apps and other contexts. See |
| // https://github.com/WICG/controlled-frame/blob/main/README.md for more |
| // info. |
| name: "ControlledFrame", |
| public: true, |
| status: "stable", |
| }, |
| { |
| // Enable support for requesting SecurityInfo in WebRequest API |
| // for controlled frames. See |
| // https://wicg.github.io/controlled-frame/#dictdef-securityinfo for more |
| // info. |
| name: "ControlledFrameWebRequestSecurityInfo", |
| status: "stable", |
| depends_on: ["ControlledFrame"], |
| }, |
| { |
| // Enables setting the `maxAge` option when creating a cookie in the |
| // Cookie Store API. |
| name: "CookieStoreAPIMaxAge", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "CoopRestrictProperties", |
| origin_trial_feature_name: "CoopRestrictProperties", |
| base_feature: "none", |
| }, |
| { |
| // Corrects the handling of <form> elements nested within <template> tags |
| // in HTML parsing. See https://crbug.com/352896478 for details. |
| name: "CorrectTemplateFormParsing", |
| status: "experimental" |
| }, |
| { |
| name: "CorsRFC1918", |
| }, |
| { |
| // CPU Performance API, work in progress. |
| // https://chromestatus.com/feature/5189864286978048 |
| // https://github.com/explainers-by-googlers/cpu-performance |
| name: "CpuPerformance", |
| status: "experimental", |
| origin_trial_feature_name: "CpuPerformance", |
| origin_trial_allows_third_party: true, |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "CrashReportingStorageAPI", |
| status: "stable", |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| origin_trial_feature_name: "CrashReportingStorageAPI", |
| }, |
| { |
| name: "CreateInlineContentsExcludeOutOfFlow", |
| status: "stable", |
| }, |
| { |
| // When enabled, allowlisting script urls and scripts used in eval via |
| // hashes will be supported in script-src. This is a no-op if the |
| // network::features::kCSPScriptSrcHashesInV1 flag is off, since it |
| // controls parsing in the network service. |
| // See crbug.com/392657736 for details. |
| name: "CSPHashesV1", |
| base_feature: "none", |
| origin_trial_feature_name: "CSPExtendedScriptSrcHashes", |
| origin_trial_os: ["win", "linux", "mac", "android", "chromeos"], |
| status: "experimental", |
| public: true, |
| }, |
| { |
| name: "CSPReportHash", |
| status: "stable", |
| }, |
| { |
| // The AccentColor And AccentColorText CSS system color keywords |
| name: "CSSAccentColorKeyword", |
| status: "experimental", |
| }, |
| { |
| // Maps deprecated ActiveCaption to Canvas instead of CanvasText. |
| // https://drafts.csswg.org/css-color-4/#deprecated-system-colors |
| // https://crbug.com/41493724 |
| name: "CSSActiveCaptionMapsToCanvas", |
| status: "stable", |
| }, |
| { |
| // Allows using counter() and counters() in alt text (after / in content property). |
| name: "CSSAltCounter", |
| status: "stable", |
| }, |
| { |
| // Let transforms affect anchor() and anchor-size() functions. |
| name: "CSSAnchorWithTransforms", |
| status: "stable", |
| }, |
| { |
| // https://drafts.csswg.org/web-animations-2/#iteration-composite-operation |
| name: "CSSAnimationIterationComposite", |
| status: "experimental", |
| }, |
| { |
| // https://drafts.csswg.org/css-values-5/#early-resolution |
| name: "CSSArgumentGrammar", |
| status: "test", |
| }, |
| { |
| // 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/5459864205393920 |
| { |
| // https://chromestatus.com/feature/5125388091260928 |
| name: "CSSBorderShape", |
| 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/5082469066604544 |
| name: "CSSCaretAnimation", |
| status: "stable", |
| }, |
| { |
| // https://chromestatus.com/feature/6106160780017664 |
| name: "CSSCaretShape", |
| status: "stable", |
| }, |
| { |
| // Support case-sensitive attribute selector modifier |
| // https://drafts.csswg.org/selectors-4/#attribute-case |
| name: "CSSCaseSensitiveSelector", |
| status: "test", |
| }, |
| { |
| // In the cases where it is impossible or impractical to determine the |
| // measure of the “0” glyph, it must be assumed to be 0.5em wide by 1em |
| // tall. Thus, the ch unit falls back to 0.5em in the general case, and to |
| // 1em when it would be typeset upright (i.e. writing-mode is vertical-rl or |
| // vertical-lr and text-orientation is upright). |
| // https://drafts.csswg.org/css-values-4/#ch |
| // See crbug.com/416145497 for more details. |
| name: "CSSChUnitSpecCompliantFallback", |
| status: "stable", |
| }, |
| { |
| name: "CSSColorTypedOM", |
| status: "experimental", |
| }, |
| // https://drafts.csswg.org/css-values-5/#progress |
| // container-progress() |
| { |
| name: "CSSContainerProgressNotation", |
| status: "experimental", |
| }, |
| { |
| // https://drafts.csswg.org/css-conditional-5/#typedef-style-range |
| name: "CSSContainerStyleQueriesRange", |
| status: "stable", |
| }, |
| { |
| // https://drafts.csswg.org/css-color-5/#contrast-color |
| name: "CSSContrastColor", |
| status: "stable", |
| }, |
| { |
| // https://drafts.csswg.org/css-borders-4/#corner-shaping |
| name: "CSSCornersShorthand", |
| status: "experimental", |
| }, |
| { |
| // https://drafts.csswg.org/css-lists-3/#counter-reset |
| // https://crbug.com/40760770 |
| name: "CSSCounterResetReversed", |
| status: "experimental", |
| }, |
| { |
| // 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", |
| }, |
| { |
| name: "CSSCustomMedia", |
| status: "test", |
| }, |
| { |
| name: "CSSDynamicRangeLimit", |
| status: "stable", |
| }, |
| { |
| // Include custom properties in CSSComputedStyleDeclaration::item/length. |
| // https://crbug.com/949807 |
| name: "CSSEnumeratedCustomProperties", |
| status: "stable", |
| }, |
| { |
| // crbug.com/417306102 |
| name: "CssFitWidthText", |
| status: "experimental", |
| }, |
| { |
| // crbug.com/417306102 |
| name: "CssFitWidthTextReshaping", |
| }, |
| { |
| name: "CSSFontSizeAdjust", |
| status: "stable", |
| }, |
| { |
| // https://drafts.csswg.org/css-mixins-1/#function-rule |
| name: "CSSFunctions", |
| status: "stable", |
| }, |
| { |
| // https://chromestatus.com/feature/5157805733183488 |
| name: "CSSGapDecoration", |
| status: "experimental", |
| depends_on: ["CSSGridGapSuppression"], |
| }, |
| { |
| // https://chromestatus.com/feature/5157805733183488 |
| name: "CSSGridGapSuppression", |
| status: "stable", |
| }, |
| { |
| name: "CSSGridLanesLayout", |
| status: "experimental", |
| public: true, |
| }, |
| { |
| // 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://drafts.csswg.org/css-values-5/#ident |
| name: "CSSIdentFunction", |
| status: "test", |
| }, |
| { |
| // https://chromestatus.com/feature/5078177326170112 |
| name: "CSSImageAnimation", |
| status: "test", |
| }, |
| { |
| // The inherit() function works like var(), except that it grabs |
| // the computed value of the specified property from the parent style |
| // instead of the current style. |
| // |
| // https://drafts.csswg.org/css-values-5/#inherit-notation |
| name: "CSSInheritFunction", |
| status: "experimental", |
| }, |
| { |
| // https://chromestatus.com/feature/6289894144212992 |
| name: "CSSKeyframesRuleLength", |
| status: "stable", |
| }, |
| { |
| // Support for extended language ranges in :lang() |
| // https://chromestatus.com/feature/5071058079055872 |
| name: "CSSLangExtendedRanges", |
| status: "experimental", |
| }, |
| { |
| name: "CSSLayoutAPI", |
| status: "experimental", |
| }, |
| { |
| name: "CSSLetterAndWordSpacingPercentage", |
| status: "stable", |
| }, |
| { |
| name: "CSSLineClamp", |
| status: "experimental", |
| }, |
| { |
| name: "CSSLineClampLineBreakingEllipsis", |
| depends_on: ["CSSLineClamp"], |
| }, |
| { |
| // This flag makes `(-webkit-)line-clamp: <integer>` clamp by both lines |
| // and height if there's also `(max-)height` set on the element. |
| // |
| // In https://github.com/w3c/csswg-drafts/issues/12041 the CSSWG resolved |
| // that the `line-clamp: <integer>` syntax couldn't have that behavior due |
| // to web compat, but we haven't decided on a new syntax for it yet. |
| // Therefore we keep the behavior under this flag for now. |
| name: "CSSLineClampLinesAndHeight", |
| depends_on: ["CSSLineClamp"], |
| }, |
| { |
| // Implements `counter-increment` and `counter-set` for the non-<li> |
| // elements and the reversed ordered lists. |
| // |
| // https://crbug.com/40682542 |
| name: "CSSListCounterAccounting", |
| status: "experimental", |
| }, |
| { |
| // Allows pseudo-element selectors within logical combination pseudo- |
| // classes, e.g. :is(div::before). |
| // |
| // https://crbug.com/444386484 |
| name: "CSSLogicalCombinationPseudo", |
| }, |
| { |
| name: "CSSMarkerNestedPseudoElement", |
| status: "stable", |
| }, |
| // https://drafts.csswg.org/css-values-5/#progress |
| // media-progress() |
| { |
| name: "CSSMediaProgressNotation", |
| status: "experimental", |
| }, |
| { |
| name: "CSSMixins", |
| status: "experimental", |
| }, |
| { |
| name: "CSSNestedPseudoElements", |
| status: "stable", |
| }, |
| { |
| // https://drafts.csswg.org/cssom/#dom-window-getcomputedstyle |
| name: "CSSOMGetComputedStylePseudoElementRequiresColon", |
| status: "experimental", |
| }, |
| { |
| name: "CSSPaintAPIArguments", |
| status: "experimental", |
| }, |
| { |
| // Ignore the stylesheet encoding when parsing URLs, always using UTF-8. |
| // See crbug.com/1485525. |
| name: "CSSParserIgnoreCharsetForURLs", |
| }, |
| { |
| name: "CSSPositionStickyStaticScrollPosition", |
| status: "test", |
| }, |
| // https://drafts.csswg.org/css-values-5/#progress |
| // progress() |
| { |
| name: "CSSProgressNotation", |
| status: "stable", |
| }, |
| { |
| // For ::column pseudo-element for fragment styling. |
| // https://github.com/flackr/carousel/blob/main/fragmentation/README.md |
| name: "CSSPseudoColumn", |
| status: "stable", |
| }, |
| { |
| name: "CSSPseudoElementInterface", |
| status: "stable", |
| }, |
| { |
| // Enables the :has-slotted pseudo-selector. |
| // https://chromestatus.com/feature/5134941143433216 |
| name: "CSSPseudoHasSlotted", |
| 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", |
| }, |
| { |
| // For ::scroll-up-button and ::scroll-down-button pseudo-elements for Carousel. |
| // https://github.com/flackr/carousel/tree/main/scroll-button |
| name: "CSSPseudoScrollButtons", |
| status: "stable", |
| depends_on: ["PseudoElementsFocusable"], |
| }, |
| { |
| // For ::scroll-marker and ::scroll-marker-group pseudo-elements for Carousel. |
| // https://github.com/flackr/carousel/tree/main/scroll-marker |
| name: "CSSPseudoScrollMarkers", |
| status: "stable", |
| depends_on: ["PseudoElementsFocusable"], |
| }, |
| { |
| name: "CSSRandomFunction", |
| status: "experimental", |
| }, |
| { |
| name: "CSSRandomFunctionTypedOM", |
| status: "test", |
| depends_on: ["CSSRandomFunction"], |
| }, |
| { |
| // 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", |
| }, |
| { |
| name: "CSSRevertRule", |
| status: "experimental", |
| }, |
| { |
| name: "CSSRubyOverhang", |
| status: "experimental", |
| }, |
| { |
| name: "CSSSafePrintableInset", |
| status: "experimental", |
| }, |
| { |
| // The '&' pseudo-class effectively behaves like :where(:scope) |
| // when used in @scope rules. |
| name: "CSSScopeifiedParentPseudoClass", |
| status: "stable", |
| }, |
| { |
| // The "@import scope(...)" syntax. |
| // https://github.com/w3c/csswg-drafts/issues/7348 |
| name: "CSSScopeImport", |
| status: "experimental", |
| }, |
| { |
| // https://drafts.csswg.org/css-conditional-5/#scrolled |
| name: "CSSScrolledContainerQueries", |
| status: "stable", |
| }, |
| { |
| // https://drafts.csswg.org/css-scroll-snap-2#scroll-initial-target |
| name: "CSSScrollInitialTarget", |
| status: "stable", |
| }, |
| { |
| // https://github.com/w3c/csswg-drafts/issues/12122 |
| name: "CSSScrollMarkerGroupModes", |
| status: "experimental", |
| }, |
| { |
| // https://drafts.csswg.org/css-overflow-5/#active-before-after-scroll-markers |
| // :target-before and :target-after pseudo classes for scroll markers. |
| name: "CSSScrollMarkerTargetBeforeAfter", |
| status: "stable", |
| }, |
| { |
| // https://drafts.csswg.org/css-scroll-snap-2/#scrollsnapchange |
| name: "CSSScrollSnapChangeEvent", |
| status: "stable", |
| }, |
| { |
| // https://drafts.csswg.org/css-scroll-snap-2/#scrollsnapchanging |
| name: "CSSScrollSnapChangingEvent", |
| status: "stable", |
| }, |
| { |
| // https://drafts.csswg.org/css-scroll-snap-2/#snapevent-interface |
| name: "CSSScrollSnapEventConstructorExposed", |
| status: "experimental", |
| }, |
| { |
| // https://drafts.csswg.org/css-scroll-snap-2/#snap-events |
| name: "CSSScrollSnapEvents", |
| status: "stable", |
| implied_by: ["CSSScrollSnapChangeEvent", "CSSScrollSnapChangingEvent"], |
| }, |
| { |
| // scroll-target-group property |
| // https://drafts.csswg.org/css-overflow-5/#scroll-target-group |
| name: "CSSScrollTargetGroup", |
| status: "stable", |
| }, |
| { |
| // scroll-target-group property sets aria-current=true on :target-current html scroll marker. |
| name: "CSSScrollTargetGroupAriaCurrent", |
| status: "experimental", |
| }, |
| { |
| name: "CSSSelectorFragmentAnchor", |
| status: "experimental", |
| base_feature: "CssSelectorFragmentAnchor", |
| }, |
| { |
| // https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-baseurl |
| name: "CSSStyleSheetInitBaseURL", |
| status: "experimental", |
| }, |
| { |
| name: "CSSSupportsAtRuleFunction", |
| status: "stable", |
| }, |
| { |
| name: "CSSSupportsForImportRules", |
| status: "stable", |
| }, |
| { |
| // https://chromestatus.com/feature/5153932394102784 |
| name: "CSSSupportsNamedFeatureFunction", |
| // TODO(https://crbug.com/353715317): Before shipping this feature, we |
| // should decide whether to remove the "align-content-on-display-block" |
| // named feature (which is so far the only CSSWG-resolved feature name) |
| // since it's probably too late for it to be useful. |
| status: "experimental", |
| }, |
| { |
| // Allows the CSS "accent-color" property to support the system accent color as the default option. |
| name: "CSSSystemAccentColor", |
| status: { |
| "ChromeOS": "stable", |
| "Mac": "stable", |
| "Win": "stable", |
| "default": "experimental", |
| }, |
| }, |
| { |
| // https://issues.chromium.org/40787216: CSS `text-align: match-parent` value |
| name: "CSSTextAlignMatchParent", |
| status: "experimental", |
| }, |
| { |
| // https://issues.chromium.org/40675832: CSS `text-decoration-skip-ink: all` value |
| name: "CSSTextDecorationSkipInkAll", |
| status: "experimental", |
| }, |
| { |
| // crbug.com/434361099 |
| name: "CssTextIndent", |
| status: "stable", |
| }, |
| { |
| name: "CssTextIndentAsPrimitive", |
| status: "stable", |
| }, |
| { |
| // crbug.com/1463890, crbug.com/1463891: CSS `text-spacing` shorthand |
| name: "CSSTextSpacing", |
| status: "test", |
| }, |
| { |
| // https://crbug.com/40928177: Support of `text-transform: full-size-kana` |
| name: "CSSTextTransformFullSizeKana", |
| status: "experimental", |
| }, |
| { |
| // https://issues.chromium.org/41297237: CSS `text-transform: full-width` value |
| name: "CSSTextTransformFullWidth", |
| status: "experimental", |
| }, |
| { |
| // crbug.com/41297237: Support multi-keyword values in CSS `text-transform`. |
| name: "CSSTextTransformMultiKeyword", |
| depends_on: ["CSSTextTransformFullWidth", "CSSTextTransformFullSizeKana"], |
| status: "experimental", |
| }, |
| { |
| // Support for the 'all' keyword of the 'timeline-scope' property. |
| // |
| // https://drafts.csswg.org/scroll-animations-1/#timeline-scope |
| name: "CSSTimelineScopeAll", |
| status: "experimental", |
| }, |
| { |
| // Makes timeline names global by default. |
| // |
| // https://github.com/w3c/csswg-drafts/issues/12581 |
| name: "CSSTimelineScopeGlobal", |
| }, |
| { |
| name: "CSSTypedArithmetic", |
| status: "stable", |
| }, |
| // Support for `user-select:contain`. |
| { |
| name: "CSSUserSelectContain", |
| status: "test", |
| }, |
| { |
| // https://crbug.com/488305665: Support :user-valid/:user-invalid for radio buttons. |
| // This lands in M147, and the flag can be removed in M149. |
| // |
| // https://drafts.csswg.org/selectors-4/#user-valid-pseudo |
| name: "CSSUserValidAndUserInvalidForRadio", |
| status: "stable", |
| }, |
| { |
| name: "CSSVideoDynamicRangeMediaQueries", |
| status: "experimental", |
| }, |
| { |
| // https://chromestatus.com/feature/4850737974345728 |
| name: "CSSViewTransitionAutoName", |
| status: "experimental", |
| }, |
| { |
| // appearance:base for the <datalist> element when it is invoked as a |
| // picker from an <input type=text>. |
| // https://issues.chromium.org/issues/453705243 |
| // https://chromestatus.com/feature/5067156794507264 |
| name: "CustomizableCombobox", |
| status: "experimental", |
| depends_on: ["AppearanceBase"], |
| }, |
| { |
| // appearance:base-select for <select multiple> and <select size=n> |
| // https://issues.chromium.org/issues/357649033 |
| name: "CustomizableSelectListbox", |
| status: "stable", |
| }, |
| { |
| // appearance:base-select for <select multiple size=1> with a picker. |
| name: "CustomizableSelectMultiplePopup", |
| status: "experimental", |
| depends_on: ["CustomizableSelectListbox"], |
| }, |
| // see crbug.com/341313078 |
| { |
| name: "CustomScrollbarApplyMinimumThumbLength", |
| status: "stable", |
| }, |
| { |
| // https://chromestatus.com/feature/5134293578285056 |
| name: "Database", |
| }, |
| { |
| // crbug.com/40153320 |
| name: "DateTimeLocalArabicCommaWorkaround", |
| status: "stable", |
| }, |
| // https://crbug.com/448174611 |
| { |
| name: "DeclarativeCSSModules", |
| status: "experimental", |
| }, |
| // https://crbug.com/448174611 |
| { |
| name: "DeclarativeCSSModulesStyleTag", |
| implied_by: ["DeclarativeCSSModules"], |
| }, |
| { |
| // https://chromestatus.com/feature/5133099851317248 |
| name: "DecoupleComputedBorderWidthFromStyle", |
| public: true, |
| status: "stable", |
| }, |
| { |
| // https://chromestatus.com/feature/5133099851317248 |
| name: "DecoupleResolvedColumnRuleWidthFromStyle", |
| public: true, |
| status: "stable", |
| }, |
| { |
| // Killswitch for https://crbug.com/400317114 fix. |
| // This lands in M142, and the flag can be removed in M144. |
| name: "DelegatesFocusTextControlInputFix", |
| status: "stable", |
| }, |
| { |
| // Delete text from descendant text nodes before removing children of |
| // a root editable element to ensure selectionchange event fires. |
| name: "DeleteTextInContentEditableBeforeRemovingChildren", |
| status: "stable", |
| }, |
| // 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: "DeviceAttributes", |
| status: { |
| "ChromeOS": "stable", |
| "default": "experimental", |
| }, |
| }, |
| { |
| name: "DeviceOrientationRequestPermission", |
| status: "experimental", |
| }, |
| { |
| name: "DevicePosture", |
| status: "stable", |
| }, |
| { |
| // This feature makes the <dialog> element close properly when its "open" |
| // attribute is removed. https://github.com/whatwg/html/issues/5802 and |
| // https://github.com/whatwg/html/pull/10124. |
| name: "DialogCloseWhenOpenRemoved", |
| status: "experimental", |
| }, |
| { |
| name: "DialogNewFocusBehavior", |
| status: "experimental", |
| }, |
| { |
| name: "DigitalGoods", |
| origin_trial_feature_name: "DigitalGoodsV2", |
| origin_trial_os: ["android", "chromeos"], |
| public: true, |
| status: { |
| "Android": "stable", |
| "ChromeOS": "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": "stable", |
| // crbug.com/1143079: Web tests cannot differentiate ChromeOS and Linux, |
| // so enable the API on all platforms for testing. |
| "default": "test" |
| }, |
| }, |
| { |
| name: "DirectSockets", |
| public: true, |
| status: "stable", |
| }, |
| { |
| // Experimental support for the Direct Sockets API in Service Workers. |
| // https://github.com/WICG/direct-sockets |
| name: "DirectSocketsInServiceWorkers", |
| status: "test", |
| depends_on: ["DirectSockets"], |
| }, |
| { |
| // Experimental support for the Direct Sockets API in Shared Workers. |
| // https://github.com/WICG/direct-sockets |
| name: "DirectSocketsInSharedWorkers", |
| status: "test", |
| depends_on: ["DirectSockets"], |
| }, |
| { |
| name: "DisableDifferentOriginSubframeDialogSuppression", |
| base_feature: "none", |
| origin_trial_feature_name: "DisableDifferentOriginSubframeDialogSuppression", |
| origin_trial_type: "deprecation", |
| origin_trial_allows_insecure: true, |
| }, |
| { |
| // Switch from ellipsis to clip when a container is scrolled. |
| // This shipped in M146 and the flag can be removed in M148. |
| name: "DisableEllipsisWhenScrolled", |
| status: "experimental", |
| }, |
| { |
| name: "DisableReduceAcceptLanguage", |
| origin_trial_feature_name: "DisableReduceAcceptLanguage", |
| origin_trial_type: "deprecation", |
| origin_trial_allows_insecure: true, |
| origin_trial_allows_third_party: true, |
| base_feature: "none", |
| }, |
| { |
| // Disables removeFormat command on Plaintext-only content editable div |
| name: "DisableRemoveFormatForPlainTextOnlyEditableDiv", |
| status: "stable", |
| }, |
| { |
| // Disconnected <area> elements should not trigger navigation. |
| // This was added in M146, and can be removed in M148. |
| name: "DisallowDisconnectedAreaNavigation", |
| status: "stable", |
| }, |
| { |
| // For readonly inputs, do not allow access to the picker. |
| // This landed in M146 and can be removed in M148. |
| name: "DisallowPickerForReadonlyInputs", |
| status: "stable", |
| }, |
| { |
| // `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", |
| }, |
| { |
| // Dispatch selectionchange event per element according to the new spec: |
| // https://w3c.github.io/selection-api/#selectionchange-event |
| name: "DispatchSelectionchangeEventPerElement", |
| status: "stable", |
| }, |
| { |
| // Allowing elements with display:contents to have focus. |
| // See https://crbug.com/1366037 |
| name: "DisplayContentsFocusable", |
| status: "experimental", |
| }, |
| { |
| name: "DisplayCutoutAPI", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // https://chromestatus.com/feature/5067126381215744 |
| name: "DocumentActiveViewTransition", |
| status: "stable", |
| }, |
| { |
| name: "DocumentCookie", |
| }, |
| { |
| name: "DocumentDomain", |
| }, |
| { |
| // Enables DocumentIsolationPolicy. |
| // See https://https://github.com/WICG/document-isolation-policy. |
| name: "DocumentIsolationPolicy", |
| status: "experimental", |
| origin_trial_feature_name: "DocumentIsolationPolicy", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| base_feature: "none", |
| }, |
| { |
| // Fix iframe unload events not firing during document.open() |
| // https://crbug.com/40947017 |
| // Lands in M144; remove this flag in M146 after the milestone rolls. |
| name: "DocumentOpenIframeUnloadEvents", |
| status: "stable", |
| }, |
| { |
| name: "DocumentOpenOriginAliasRemoval", |
| status: "experimental", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "DocumentOpenSandboxInheritanceRemoval", |
| status: "stable", |
| copied_from_base_feature_if: "overridden", |
| }, |
| // https://chromestatus.com/feature/5111042975465472 |
| // <template patchfor> etc. |
| { |
| name: "DocumentPatching", |
| status: "experimental", |
| }, |
| { |
| name: "DocumentPictureInPictureAPI", |
| status: { |
| "Android": "", |
| "default": "stable", |
| }, |
| }, |
| // Enables `preferInitialWindowPlacement` Document PiP option to skip |
| // re-using the previous pip window bounds. |
| { |
| name: "DocumentPictureInPicturePreferInitialPlacement", |
| status: { |
| "Android": "", |
| "default": "stable", |
| }, |
| }, |
| // Enables propagating user activation from a document picture-in-picture |
| // window up to its opener window and vice versa. |
| { |
| name: "DocumentPictureInPictureUserActivation", |
| 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 |
| // ExpectNoLinkedResources. |
| { |
| name: "DocumentPolicyExpectNoLinkedResources", |
| status: "stable", |
| }, |
| // Enables the ability to use Document Policy header to control feature |
| // IncludeJSCallStacksInCrashReports. https://chromestatus.com/feature/4731248572628992 |
| { |
| name: "DocumentPolicyIncludeJSCallStacksInCrashReports", |
| status: "stable", |
| }, |
| // Enables Document Policy for DedicatedWorkers. |
| { |
| name: "DocumentPolicyInDedicatedWorker", |
| 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 |
| // NetworkEfficiencyGuardrails. https://chromestatus.com/feature/5156240166223872 |
| { |
| name: "DocumentPolicyNetworkEfficiencyGuardrails", |
| status: "experimental", |
| }, |
| // Enables the ability to use Document Policy header to control feature |
| // SyncXHR. |
| { |
| name: "DocumentPolicySyncXHR", |
| status: "experimental", |
| }, |
| { |
| name: "DocumentWrite", |
| }, |
| { |
| // DOMActivate event inherits bubbles from the underlying event to |
| // prevent activation behavior of parent elements when it doesn't bubble. |
| // crbug.com/41431966 |
| name: "DOMActivateBubblesInheritance", |
| status: "stable", |
| }, |
| { |
| // When enabled, retarget the relatedTarget attribute of drag events. |
| // This landed in M146 and can be removed in M148. |
| name: "DontLeakShadowTreesInDragEvents", |
| status: "stable", |
| }, |
| { |
| // Enable drag and drop delegation to child frames in HTMLPlugInElements |
| // (object/embed elements). Fixes drag and drop from text inputs/textareas |
| // to elements inside object frames. |
| name: "DragAndDropPluginElementSupport", |
| status: "stable", |
| }, |
| { |
| // See https://crbug.com/443612843 |
| name: "EditContextAssignmentAsPerSpec", |
| status: "test" |
| }, |
| { |
| // See https://crbug.com/379170477 |
| name: "EditContextHandleTextOrSelectionUpdateDuringComposition", |
| status: "test", |
| settable_from_internals: true |
| }, |
| { |
| // Enables proper backspace handling for emoji tag sequences |
| // (e.g., subdivision flags like 🏴) per UTS #51 ED-14a. |
| name: "EditEmojiTagSequence", |
| status: "stable", |
| }, |
| { |
| public: true, |
| name: "ElementCapture", |
| status: {"Android": "experimental", "iOS": "", "default": "stable"}, |
| }, |
| { |
| name: "ElementInnerTextHandleFirstLineStyle", |
| status: "stable", |
| }, |
| { |
| // When enabled, the readonly attribute will prevent constraint validation |
| // only in some cases, depending on the element. |
| // This was added in M147 and can be removed after M149. |
| // https://issues.chromium.org/issues/486228104 |
| name: "ElementSpecificReadOnlyConstraintValidation", |
| status: "stable", |
| }, |
| { |
| name: "EmailVerificationProtocol", |
| public: true, |
| status: "test", |
| base_feature: "none", |
| }, |
| { |
| // crbug.com/420857717 |
| name: "EmojiMonochromeRendering", |
| status: "stable" |
| }, |
| { |
| name: "EndpointInclusiveCommitStyles", |
| status: "stable", |
| }, |
| { |
| name: "EnforceAnonymityExposure", |
| status: "stable", |
| }, |
| { |
| // See: crbug.com/40771555 |
| name: "EnterInOpenShadowRoots", |
| status: "stable", |
| }, |
| // When enabled, the LCP algorithm ignores image entropy for the first |
| // video frame. See crbug.com/434659232. |
| { |
| name: "EntropyIgnoredForFirstVideoFrameLCP", |
| status: "experimental", |
| }, |
| { |
| // `event.pseudoTarget` property to represent pseudo-elements in events. Returns `CSSPseudoElement` or null. |
| name: "EventPseudoTargetProperty", |
| status: "stable", |
| depends_on: ["CSSPseudoElementInterface"], |
| }, |
| { |
| |
| // Kill-switch for https://chromestatus.com/feature/5153386492198912 |
| // Added in M144, can be removed in M146. |
| name: "EventTimingInteractionCount", |
| status: "stable", |
| }, |
| { |
| name: "EventTimingTargetSelector", |
| status: "experimental", |
| }, |
| { |
| // https://drafts.csswg.org/web-animations-2/#triggers |
| name: "EventTrigger", |
| status: "experimental", |
| }, |
| { |
| name: "ExperimentalContentSecurityPolicyFeatures", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "ExperimentalJSProfilerMarkers", |
| status: "experimental", |
| }, |
| { |
| name: "ExperimentalMachineLearningNeuralNetwork", |
| // Enabled by webnn::mojom::features::kExperimentalWebMachineLearningNeuralNetwork. |
| base_feature: "none", |
| }, |
| { |
| name: "ExperimentalPolicies", |
| status: "experimental", |
| }, |
| { |
| name: "ExposeCSSFontFeatureValuesRule", |
| status: "stable", |
| }, |
| { |
| name: "ExposeRenderTimeNonTaoDelayedImage", |
| }, |
| { |
| name: "ExtendedShapeCache", |
| status: "stable", |
| }, |
| { |
| name: "ExtendedTextMetrics", |
| origin_trial_feature_name: "ExtendedTextMetrics", |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| }, |
| { |
| // Kill-switch for crbug.com/40434449. |
| // Added in M139, and it can be removed in M141. |
| name: "ExternalPopupMenuClickEvent", |
| status: "stable", |
| }, |
| { |
| 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": "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: "FastPositionIterator", |
| // Not enabled due to a RTL issue. crbug.com/1421016. |
| }, |
| { |
| name: "FedCm", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "FedCmAutofill", |
| implied_by: ["FedCmDelegation"], |
| public: true, |
| status: "test", |
| base_feature: "none", |
| }, |
| { |
| name: "FedCmDelegation", |
| depends_on: ["FedCm"], |
| public: true, |
| status: "test", |
| base_feature: "none", |
| }, |
| { |
| name: "FedCmErrorAttribute", |
| depends_on: ["FedCm"], |
| public: true, |
| base_feature: "none", |
| }, |
| { |
| name: "FedCmIdPRegistration", |
| depends_on: ["FedCm"], |
| public: true, |
| status: "test", |
| base_feature: "none", |
| }, |
| { |
| name: "FedCmLightweightMode", |
| depends_on: ["FedCm"], |
| status: "test", |
| public: true, |
| base_feature: "none", |
| }, |
| { |
| name: "FedCmMultipleIdentityProviders", |
| depends_on: ["FedCm"], |
| status: "stable", |
| base_feature: "none", |
| public: true, |
| origin_trial_feature_name: "FedCmMultipleIdentityProviders", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| name: "FedCmNavigationInterception", |
| depends_on: ["FedCm"], |
| public: true, |
| base_feature: "none", |
| }, |
| { |
| name: "FedCmNonStringToken", |
| depends_on: ["FedCm"], |
| public: true, |
| base_feature: "none", |
| status: "stable", |
| }, |
| { |
| name: "FencedFrames", |
| base_feature: "none", |
| // This helps enable and expose the <fencedframe> element, but note that |
| // blink::features::kFencedFrames must be enabled as well, as we require |
| // the support of the browser process to fully enable the feature. |
| // Enabling this runtime enabled feature alone has no effect. |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "FencedFramesAPIChanges", |
| // Various new IDL attributes on the <fencedframe> element (such as |
| // `config`, `sandbox`, and `allow`). |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "enabled_or_overridden", |
| status: "stable", |
| }, |
| { |
| 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, |
| }, |
| { |
| // Add Request.bytes() and Response.bytes() |
| // https://chromestatus.com/feature/5239268180754432 |
| name: "FetchBodyBytes", |
| status: "stable", |
| }, |
| { |
| // The Blink runtime-enabled feature name for the API's IDL. |
| // https://chromestatus.com/feature/4654499737632768 |
| name: "FetchLaterAPI", |
| status: "stable", |
| }, |
| { |
| // The retry ability for Fetch keepalive requests. |
| // https://chromestatus.com/feature/5181984581877760 |
| name: "FetchRetry", |
| origin_trial_feature_name: "FetchRetry", |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| base_feature: "FetchRetry", |
| // 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": "experimental", |
| "default": "", |
| } |
| }, |
| { |
| // Non-OPFS File System Access API. |
| name: "FileSystemAccessLocal", |
| status: {"default": "stable"}, |
| }, |
| { |
| name: "FileSystemAccessLockingScheme", |
| status: "stable", |
| }, |
| { |
| // OPFS File System Access API. |
| name: "FileSystemAccessOriginPrivate", |
| status: "stable", |
| }, |
| { |
| // When enabled, calling remove() on a FileSystemAccessHandle will also |
| // update the permission grants for the associated path. Restored after |
| // next write to the path. |
| // See crbug.com/421690393. |
| name: "FileSystemAccessRevokeReadOnRemove", |
| depends_on: ["FileSystemAccessWriteMode"], |
| status: "stable", |
| }, |
| { |
| // Controls the internal write-only mode for various FileSystemAccess API. |
| // This covers mostly content layer and does not expose any write mode to |
| // user visible APIs. |
| // This flag is part of crbug.com/421690393 and crbug.com/328458680. |
| name: "FileSystemAccessWriteMode", |
| status: "stable", |
| }, |
| { |
| // The FileSystemObserver interface for the File System Access API. |
| // See https://crbug.com/1019297. |
| name: "FileSystemObserver", |
| depends_on: ["FileSystemAccess"], |
| status: { |
| "Android": "", |
| "iOS": "", |
| "default": "stable", |
| }, |
| }, |
| { |
| // The unobserve function of the FileSystemObserver. |
| // See https://crbug.com/321980469. |
| name: "FileSystemObserverUnobserve", |
| status: "experimental", |
| }, |
| { |
| // Adds the filter attribute to the input element, which targets a |
| // listbox select element to perform filtering. |
| name: "FilterableSelect", |
| status: "experimental", |
| depends_on: ["CustomizableSelectListbox"], |
| }, |
| { |
| // Fix for https://crbug.com/41153707 |
| name: "FilterContainerLevelStyles", |
| status: "stable" |
| }, |
| { |
| name: "FindFirstMisspellingEndWhenNonEditable", |
| status: "stable", |
| }, |
| { |
| name: "FirstLineOnListItem", |
| status: "stable", |
| }, |
| { |
| name: "FirstLineTextMetrics", |
| status: "stable", |
| }, |
| { |
| // Returns alignment value instead of a boolean |
| name: "FixJustifyQueryCommandValue", |
| status: "stable", |
| }, |
| { |
| name: "FixLinebreakForPreTag", |
| status: "stable", |
| }, |
| { |
| // This fixes the suppression of markers for <details> and |
| // list items for appearance:auto. |
| // This was added in M146 and can be removed after M148. |
| name: "FixMarkerSuppressionForAppearanceAuto", |
| status: "stable", |
| }, |
| { |
| // crbug.com/411739501 |
| name: "FixNextPositionCalculationInInsertList", |
| status: "stable", |
| }, |
| { |
| // Fix for strikethrough toggle not working in empty |
| // contenteditable. See https://crbug.com/427915243 |
| name: "FixStrikethroughToggleInEmptyContentEditable", |
| status: "stable", |
| }, |
| { |
| name: "Fledge", |
| status: "stable", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // Enables deal support within auctions. |
| name: "FledgeAuctionDealSupport", |
| status: "test", |
| }, |
| { |
| name: "FledgeBiddingAndAuctionServerAPI", |
| origin_trial_feature_name: "FledgeBiddingAndAuctionServer", |
| origin_trial_allows_third_party: true, |
| base_feature: "none", |
| status: "stable", |
| }, |
| { |
| name: "FledgeBiddingAndAuctionServerAPIMultiSeller", |
| status: "stable", |
| }, |
| { |
| name: "FledgeClickiness", |
| status: "test", |
| }, |
| { |
| name: "FledgeCustomMaxAuctionAdComponents", |
| status: "stable", |
| }, |
| { |
| // Enables using a 'deprecatedRenderURLReplacements' field within the |
| // Protected Audience ad auction config. |
| name: "FledgeDeprecatedRenderURLReplacements", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "FledgeDirectFromSellerSignalsHeaderAdSlot", |
| status: "stable", |
| }, |
| { |
| // Feature flag to control removal, in case we run into unexpected |
| // breakage. |
| // |
| // TODO(crbug.com/384481095): Remove in a few milestones, along with the |
| // implementation code. |
| name: "FledgeDirectFromSellerSignalsWebBundles", |
| }, |
| { |
| name: "FledgeMultiBid", |
| public: true, |
| status: "stable", |
| }, |
| { |
| // Enables the private model training API in Protected Audience. |
| // https://github.com/WICG/turtledove/blob/main/PA_private_model_training.md |
| name: "FledgePrivateModelTraining", |
| status: "test", |
| }, |
| { |
| // Enables real time reporting API in Protected Audience. |
| // https://github.com/WICG/turtledove/blob/main/PA_real_time_monitoring.md |
| name: "FledgeRealTimeReporting", |
| public: true, |
| status: "stable", |
| }, |
| { |
| // Enables the ability to set seller nonces on the header response and |
| // use bidNonce in bids. |
| name: "FledgeSellerNonce", |
| status: "stable", |
| }, |
| { |
| // Enables having `executionMode` in the auctionConfig to use for seller scripts. |
| name: "FledgeSellerScriptExecutionMode", |
| status: "test", |
| }, |
| { |
| name: "FledgeTrustedSignalsKVv1CreativeScanning", |
| status: "test", |
| }, |
| { |
| name: "FledgeTrustedSignalsKVv2ContextualData", |
| depends_on: ["FledgeTrustedSignalsKVv2Support"], |
| status: "test", |
| }, |
| { |
| name: "FledgeTrustedSignalsKVv2Support", |
| status: "stable", |
| }, |
| { |
| name: "FlexWrapBalance", |
| status: "experimental", |
| }, |
| { |
| // https://open-ui.org/components/scoped-focusgroup.explainer/ |
| name: "Focusgroup", |
| status: "experimental", |
| origin_trial_feature_name: "Focusgroup", |
| }, |
| { |
| // 2-D grid navigation functionality of focusgroup is considered out of |
| // scope for the initial implementation. |
| // crbug.com/445992558 |
| name: "FocusgroupGrid", |
| depends_on: ["Focusgroup"], |
| status: "experimental", |
| }, |
| { |
| name: "FontAccess", |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "FontFallbackForTabSize", |
| status: "stable", |
| }, |
| { |
| name: "FontFamilyPostscriptMatchingCTMigration", |
| }, |
| { |
| name: "FontFamilyStyleMatchingCTMigration", |
| }, |
| { |
| // crbug.com/40398871 |
| name: "FontFeatureSettingsDescriptor", |
| status: "stable", |
| }, |
| { |
| // crbug.com/41170551 |
| name: "FontLanguageOverride", |
| status: "stable", |
| }, |
| { |
| name: "FontMatchAliasesAsLastResort", |
| status: "stable", |
| }, |
| { |
| name: "FontSrcLocalMatching", |
| base_feature: "none", |
| // No status, as the web platform runtime enabled feature is controlled by |
| // a Chromium level feature. |
| }, |
| { |
| // crbug.com/393391746 |
| name: "FontStyleObliqueZeroDegreeAsNormal", |
| status: "stable", |
| }, |
| { |
| // crbug.com/40398871 |
| name: "FontVariationSettingsDescriptor", |
| status: "stable", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| name: "FractionalScrollOffsets", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // Generate layout fragments for out-of-flow positioned elements as |
| // children of their actual containing block - ALSO when inside block |
| // fragmentation, such as multicol. See crbug.com/40267498 |
| name: "FragmentedOofInCb", |
| }, |
| { |
| name: "FreezeFramesOnVisibility", |
| status: "experimental", |
| }, |
| { |
| name: "GamepadMultitouch", |
| status: "experimental", |
| public: true, |
| }, |
| { |
| name: "GamepadRawInputChangeEvent", |
| status: "experimental", |
| }, |
| { |
| name: "GamepadWindowEventHandlers", |
| status: "stable", |
| }, |
| { |
| // Tracking bug for the implementation: https://crbug.com/430204832 |
| name: "GeolocationElement", |
| status: "stable", |
| public: true, |
| }, |
| { |
| // A feature flag that controls whether the geometry mapper singular |
| // transform fix is enabled. |
| // https://issues.chromium.org/issues/441128445 |
| name: "GeometryMapperSingularTransformFix", |
| status: "stable", |
| }, |
| { |
| // GeometryUtils mixin. |
| // https://drafts.csswg.org/cssom-view/#the-geometryutils-interface |
| name: "GeometryUtils", |
| status: "experimental", |
| }, |
| { |
| // GeometryUtils for CSSPseudoElement interface. |
| // https://www.w3.org/TR/cssom-view-1/#the-geometryutils-interface |
| name: "GeometryUtilsForCSSPseudoElement", |
| depends_on: ["CSSPseudoElementInterface"], |
| status: "experimental", |
| }, |
| { |
| name: "GetAllScreensMedia", |
| depends_on: ["GetDisplayMedia"], |
| public: true, |
| status: { |
| "ChromeOS": "stable", |
| "default": "test", |
| }, |
| }, |
| { |
| name: "GetComputedStyleOutsideFlatTree", |
| status: "stable", |
| }, |
| { |
| name: "GetDisplayMedia", |
| public: true, |
| status: { |
| "Android": "experimental", |
| "default": "stable", |
| }, |
| base_feature: "none", |
| }, |
| { |
| name: "GetDisplayMediaRequiresUserActivation", |
| depends_on: ["GetDisplayMedia"], |
| status: "experimental", |
| }, |
| // When a Web application calls getDisplayMedia() and asks for audio, |
| // allow a hint to be provided as to whether the Web application is |
| // interested in audio being among the options offered to the user |
| // on window display surfaces. |
| // |
| // https://www.w3.org/TR/screen-capture/#dom-displaymediastreamoptions-windowaudio |
| { |
| name: "GetDisplayMediaWindowAudioCapture", |
| status: "stable", |
| browser_process_read_write_access: true, |
| }, |
| { |
| // To filter only elements in the HTML namespace when calling |
| // getElementsByName(). |
| // This was added in M141 and can be removed after M143. |
| // https://issues.chromium.org/issues/40502558 |
| name: "GetElementsByNameOnlyHTMLElements", |
| status: "stable", |
| }, |
| { |
| name: "GetUserMediaEchoCancellationModes", |
| status: "stable", |
| }, |
| { |
| name: "GroupEffect", |
| status: "test", |
| }, |
| { |
| // Enables Skipping children for invisible select elements containing |
| // non-editable node while calculating end of paragraph. |
| name: "HandleDeletionAtStartAndEndBoundaryContainingHiddenElement", |
| status: "stable", |
| }, |
| { |
| name: "HandleDisconnectedSelectionDuringDOMChanges", |
| status: "stable", |
| }, |
| { |
| // Killswitch for https://crbug.com/441547032. |
| name: "HandleInvalidMaskImageWithBackdropFilter", |
| status: "stable", |
| }, |
| { |
| name: "HandleShadowDOMInSubstringUtil", |
| status: "stable", |
| }, |
| { |
| name: "HandwritingRecognition", |
| status: { |
| "ChromeOS": "stable", |
| "default": "experimental", |
| }, |
| }, |
| { |
| name: "HasUAVisualTransition", |
| status: "stable", |
| }, |
| // TODO(crbug.com/333628468): Enables the `headingoffset` and |
| // `headingreset` attributes, which allow for alternate styles of building |
| // structured headings. This is being actively prototyped, starting ~M136. |
| // For more see https://github.com/whatwg/html/issues/5033 |
| { |
| name: "HeadingOffset", |
| status: "experimental", |
| }, |
| { |
| // Kill switch for setting `display: none` on the media controls |
| // container when it is not needed. |
| // Lands in M147 and can be removed in M149. https://crbug.com/40591804 |
| name: "HideVideoControlsWhenUnneeded", |
| status: "stable", |
| }, |
| { |
| name: "HighlightPointerEvents", |
| }, |
| { |
| name: "HighlightsFromPoint", |
| status: "stable", |
| }, |
| { |
| // Removed status stable due to https://crbug.com/456164629. |
| name: "HitTestBorderRadiusForStackingContext", |
| }, |
| { |
| // Use container_transform_state instead of local_transform_state when |
| // computing z-depth for depth ordering in preserve-3d hit testing. |
| // Fixes incorrect hit-test results for layers without CSS transforms. |
| // https://crbug.com/464173566 |
| name: "HitTestContainerTransformStateForPreserve3d", |
| status: "stable", |
| }, |
| { |
| name: "HrefTranslate", |
| depends_on: ["TranslateService"], |
| origin_trial_feature_name: "HrefTranslate", |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "HstsTopLevelNavigationsOnly", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| // Extra steps in HTML Agency Adoption algorithm to remove elements from the |
| // formatting list when the internal loop reached the maximum number of |
| // iterations. This shipped in M148 and the flag can be removed in M150. |
| { |
| name: "HTMLAdoptionAlgorithmNewSteps", |
| status: "stable", |
| }, |
| // Additional default command/commandfor actions that aren't part of v1 of |
| // commands. When this flag is disabled only v1 actions (popover and dialog |
| // defaults) will work. |
| { |
| name: "HTMLCommandActionsV2", |
| status: "test", |
| }, |
| // Remove support for the <command> element from the HTML parsing logic. |
| // This shipped in M148 and the flag can be removed in M150. |
| // https://issues.chromium.org/issues/491158089 |
| // NOTE: when this flag is removed, be sure to also remove "command" |
| // from third_party/blink/renderer/core/html/html_tag_names.json5. |
| { |
| name: "HTMLCommandElementRemoval", |
| status: "stable", |
| }, |
| // Adds support for scroll commands such as 'page-up' and 'page-block-end'. |
| // https://github.com/danielsakhapov/declarative-scroll-commands-for-html-explainer |
| { |
| name: "HTMLCommandForScrollCommands", |
| status: "experimental", |
| }, |
| { |
| name: "HTMLElementScrollParent", |
| status: "experimental", |
| }, |
| { |
| // Don't require a LayoutObject when the 'src' of an <embed> with 'type' |
| // unset changes from empty ("represents nothing") to something |
| // ("potentially active"). https://crbug.com/479233864 |
| name: "HTMLEmbedElementRepresentsNothingToActive", |
| status: "stable", |
| }, |
| // Return a natural width/height of zero from |
| // HTMLImageElement.naturalWidth/Height for SVG images that don't have a |
| // natural width/height set. |
| { |
| name: "HTMLImageElementActualNaturalSize", |
| status: "test", |
| }, |
| // Adds support for the `interestfor` attribute. See crbug.com/326681249. |
| // https://open-ui.org/components/interest-invokers.explainer/ |
| // This shipped in M142 and the flag can be removed in M144. |
| { |
| name: "HTMLInterestForAttribute", |
| status: "stable", |
| }, |
| // Adds support for the `::interest-hint` pseudo element, which is a sub- |
| // feature of the HTMLInterestForAttribute feature. |
| // https://open-ui.org/components/interest-invokers.explainer/ |
| { |
| name: "HTMLInterestForInterestHintPseudo", |
| status: "experimental", |
| depends_on: ["HTMLInterestForAttribute"], |
| }, |
| { |
| // Prevents the HTMLLinkElement processing model from being invoked when |
| // attributes are processed but their value doesn't change. See |
| // https://crbug.com/41436016. |
| name: "HTMLLinkElementAttributeValueChanges", |
| status: "stable", |
| }, |
| { |
| // 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", |
| }, |
| { |
| name: "HTMLParserYieldByUserTiming", |
| status: "test", |
| }, |
| { |
| // When enabled, specifies visual affordances for printing such as headers, |
| // footers and page numbers, to be PDF annotations. |
| // See section 14.8.2.2.1 here for info: |
| // https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf |
| name: "HTMLPrintingArtifactAnnotations", |
| status: "stable", |
| }, |
| { |
| // Parse processing instructions in HTML. |
| name: "HTMLProcessingInstruction", |
| status: "experimental", |
| }, |
| { |
| name: "ICUCapitalization", |
| status: "experimental", |
| }, |
| { |
| name: "IgnoreLetterSpacingInCursiveScripts", |
| status: "stable", |
| }, |
| { |
| name: "ImageDataPixelFormat", |
| status: "stable", |
| }, |
| { |
| name: "ImageDocumentUseLayoutWidth", |
| status: "stable", |
| }, |
| { |
| name: "ImplicitRootScroller", |
| public: true, |
| settable_from_internals: true, |
| status: {"Android": "stable"}, |
| base_feature: "none", |
| }, |
| { |
| // Improved retargeting behavior of ToggleEvent.source and |
| // CommandEvent.source to match Event.relatedTarget. |
| // crbug.com/420639769 |
| // Enabled in M142, can be removed in M144. |
| name: "ImprovedSourceRetargeting", |
| status: "stable", |
| }, |
| { |
| name: "IncomingCallNotifications", |
| origin_trial_feature_name: "IncomingCallNotifications", |
| origin_trial_os: [ "win" ], |
| base_feature: "IncomingCallNotifications", |
| }, |
| { |
| name: "InertElementNonEditable", |
| 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", |
| }, |
| { |
| // Enable DataTransfer propagation to input events for insertFromPaste, |
| // insertFromDrop, and insertReplacementText operations on content-editables. |
| name: "InputEventDataTransferForInsertCmd", |
| status: "stable", |
| }, |
| { |
| // When enabled, deletion commands like Ctrl+Backspace (deleteWordBackward) |
| // with selected text will correctly report deleteContentBackward instead of |
| // deleteWordBackward in both beforeinput and input events, conforming to |
| // the W3C Input Events spec. |
| name: "InputEventsDeleteNonCollapsedSelection", |
| status: "stable", |
| }, |
| { |
| // The HTML parser inserts a </select> end tag before inserting <input> |
| // when parsing inside of a <select> tag. We want to allow <input> inside |
| // <select>, but it isn't web compatible enough. This flag allows <input> |
| // inside <select> but only if there is another open tag in between the |
| // <input> and the <select>, like <select><div><input>. |
| // For now, this flag also makes <input> close <select> like it used to |
| // when the <input> is put directly within an <option> or <optgroup>. |
| name: "InputInSelect", |
| 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", |
| }, |
| { |
| name: "InstalledApp", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| // https://chromestatus.com/feature/5152834368700416 |
| name: "InstallElement", |
| status: {"Android": "", "default": "test"}, |
| }, |
| { |
| name: "InstallOnDeviceSpeechRecognition", |
| status: "stable", |
| }, |
| { |
| name: "IntegrityPolicyScript", |
| status: "stable", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // Adds `!important` to `[inert] {interactivity: auto}` in the UA |
| // stylesheet. Resolved in the CSSWG here: |
| // https://github.com/w3c/csswg-drafts/issues/12049#issuecomment-3303716541 |
| // This killswitch is shipping in M142, and can ge removed in M144. |
| name: "InteractivityInertImportant", |
| status: "stable", |
| }, |
| { |
| name: "InterestGroupsInSharedStorageWorklet", |
| public: true, |
| status: "stable", |
| }, |
| { |
| // If enabled, BeginMainFrame will always be requested when there are |
| // active IntersectionObservers and also active composited animations. |
| name: "IntersectionObserverCompositedAnimationsForceMainFrames", |
| status: "stable", |
| }, |
| { |
| name: "InvertedColors", |
| status: "experimental", |
| }, |
| { |
| name: "InvisibleSVGAnimationThrottling", |
| status: "stable", |
| }, |
| { |
| name: "JavaScriptCompileHintsPerFunctionMagicRuntime", |
| status: "experimental", |
| origin_trial_feature_name: "JavaScriptCompileHintsPerFunctionMagic", |
| }, |
| { |
| name: "JavaScriptSourcePhaseImports", |
| }, |
| { |
| name: "KeyboardAccessibleTooltip", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // Fixes a bug after find-in-page tries to return focus to |
| // the page. This change shipped in M142, and this flag can |
| // be removed in M144. |
| name: "KeyboardFocusabilityAfterFindInPage", |
| status: "stable", |
| }, |
| { |
| // Checks interactive content using EventPath captured at |
| // dispatch start instead of current DOM state. This was |
| // added in M145 and can be removed after M147. |
| // https://issues.chromium.org/issues/452084024 |
| name: "LabelInteractiveContentCheckBeforeHandler", |
| status: "stable", |
| }, |
| { |
| name: "LangAttributeAwareFormControlUI", |
| settable_from_internals: true, |
| }, |
| { |
| name: "LanguageDetectionAPI", |
| status: { |
| "Win": "stable", |
| "Mac": "stable", |
| "Linux": "stable", |
| "ChromeOS": "stable", |
| "Android": "test", |
| "default": "", |
| }, |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "LanguageDetectionAPIForWorkers", |
| public: true, |
| }, |
| { |
| name: "LanguageModelLegacyParamsAndAttributes", |
| public: true, |
| }, |
| { |
| name: "LayoutFlexCacheFix", |
| status: "stable", |
| }, |
| { |
| name: "LayoutIgnoreMarginsForSticky", |
| }, |
| { |
| name: "LayoutImageEmptyNaturalSizeBeforeSizeAvailable", |
| status: "stable", |
| }, |
| { |
| name: "LayoutReinsertOnInFlowStateChange", |
| status: "stable", |
| }, |
| { |
| name: "LayoutTableCellAlignmentSafe", |
| status: "stable", |
| }, |
| { |
| // When enabled, brings chromium into compliance with the resolution of: |
| // https://github.com/whatwg/html/issues/10671 |
| // This flag can be used to easily revert to the old behavior if the new |
| // behavior causes breakage; otherwise, it can be removed after M145 |
| // reaches stable. |
| name: "LazyImageConformantLoadEventTiming", |
| status: "stable", |
| }, |
| { |
| // Enables the loading attribute for video and audio elements, |
| // allowing lazy loading similar to images. |
| // https://crbug.com/469111735 |
| name: "LazyLoadVideoAndAudio", |
| status: "experimental", |
| }, |
| { |
| // Allow triggering the word suggestion from left click. |
| // From crbug.com/433209485 |
| name: "LeftClickToHandleSuggestion", |
| status: { |
| "Android": "stable" |
| } |
| }, |
| { |
| // Makes light dismiss for popovers and dialogs use the click event |
| // instead of pointerdown and pointerup in order to fix light dismiss |
| // bugs for touch inputs. |
| // https://issues.chromium.org/issues/408010435 |
| name: "LightDismissFromClick", |
| status: "experimental", |
| }, |
| { |
| // Improves the logic for removing focus from a currently focused <a> |
| // element when its href attribute is removed by considering other ways |
| // that an <a> may be focusable. Shipped in M142, should be safe to |
| // remove in M144. |
| // https://issues.chromium.org/issues/443585794 |
| name: "LinkBlurImprovement", |
| status: "stable", |
| }, |
| { |
| name: "ListOwnerMustHaveCSSBox", |
| status: "stable", |
| }, |
| { |
| // Reverse origin trial allowing Local Network Access requests on |
| // non-secure contexts (but still requiring a permission grant from the |
| // user). |
| name: "LocalNetworkAccessNonSecureContextAllowed", |
| origin_trial_feature_name: "LocalNetworkAccessNonSecureContextAllowed", |
| origin_trial_type: "deprecation", |
| origin_trial_allows_insecure: true, |
| status: "experimental", |
| base_feature: "none", |
| // No status because this blink runtime feature doesn't work by itself. |
| // It's controlled by network::features::kLocalNetworkAccessChecks which |
| // needs to be enabled to make the whole feature work (see |
| // crbug.com/394009026). |
| }, |
| { |
| name: "LocalNetworkAccessPermissionPolicy", |
| base_feature: "none", |
| // No status because this blink runtime feature doesn't work by itself. |
| // It's controlled by network::features::kLocalNetworkAccessChecks which |
| // needs to be enabled to make the whole feature work (see |
| // crbug.com/394009026). |
| }, |
| { |
| name: "LocalNetworkAccessSplitPermissions", |
| base_feature: "none", |
| // No status because this blink runtime feature doesn't work by itself. |
| // It's controlled by |
| // network::features::kLocalNetworkAccessChecksSplitPermissions which |
| // needs to be enabled to make the whole feature work (see |
| // crbug.com/465491626). |
| }, |
| { |
| name: "LocalNetworkAccessWebRTC", |
| base_feature: "none", |
| // No status because this feature is controlled by |
| // network::features::kLocalNetworkAccessChecks and |
| // network::features::kLocalNetworkAccessChecksWebRTC. |
| }, |
| { |
| name: "LockedMode", |
| status: "test", |
| // Enabled by features::kLockedMode. |
| public: true, |
| }, |
| { |
| // When the start-of-line position cannot be determined (e.g., because |
| // the caret is in an empty inline element with no layout information), |
| // fall back to the start of the enclosing block rather than the start |
| // of the entire editable root. See https://crbug.com/41053053. |
| name: "LogicalStartOfLineBlockFallback", |
| status: "stable", |
| }, |
| { |
| name: "LoginElement", |
| depends_on: ["FedCm"], |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // Enable sourceCharPosition for the invoke-type resolve-promise |
| // https://issues.chromium.org/issues/381529126 |
| name: "LongAnimationFrameSourceCharPosition", |
| status: "stable", |
| }, |
| { |
| // Enable retrieving sourceLine and sourceColumn in LoAF implementation. |
| // https://issues.chromium.org/issues/391417815 |
| name: "LongAnimationFrameSourceLineColumn", |
| status: "test", |
| implied_by: ["LongAnimationFrameSourceLineColumnInterface"], |
| }, |
| { |
| // Add sourceLine and sourceColumn to PerformanceScriptTiming |
| // https://issues.chromium.org/issues/391417815 |
| name: "LongAnimationFrameSourceLineColumnInterface", |
| status: "test", |
| }, |
| { |
| // Add styleDuration and layoutDuration to |
| // PerformanceLongAnimationFrameTiming and forcedStyleDuration and |
| // forcedLayoutDuration to PerformanceScriptTiming |
| name: "LongAnimationFrameStyleDuration", |
| origin_trial_feature_name: "LongAnimationFrameStyleDuration", |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| }, |
| { |
| // Long press on a link selects the link text instead of bringing up |
| // context menu. Enabled only on Android AuthView. |
| name: "LongPressLinkSelectText", |
| }, |
| { |
| // Use LongAnimationFrameMonitor to emit longtask entries |
| name: "LongTaskFromLongAnimationFrame", |
| status: "test", |
| }, |
| { |
| name: "MacCharacterFallbackCache", |
| status: "stable", |
| }, |
| { |
| name: "MacDisableCtrlHomeEnd", |
| status: "stable", |
| }, |
| { |
| name: "MachineLearningNeuralNetwork", |
| origin_trial_feature_name: "WebMachineLearningNeuralNetwork", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| // Enabled by webnn::mojom::features::kWebMachineLearningNeuralNetwork. |
| base_feature: "none", |
| }, |
| { |
| // Enables macOS system-level clipboard permission checking using |
| // NSPasteboard.accessBehavior API (available on macOS 15.4+). |
| // This allows web applications to respect user's clipboard privacy |
| // settings in System Settings > Privacy & Security > Clipboard. |
| name: "MacSystemClipboardPermissionCheck", |
| status: {"Mac": "stable", "default": ""}, |
| }, |
| { |
| name: "ManagedConfiguration", |
| status: "stable", |
| }, |
| { |
| name: "ManualText", |
| public: true, |
| status: "test", |
| base_feature: "none", |
| }, |
| { |
| // CSS margin-trim property: https://drafts.csswg.org/css-box-4/#margin-trim |
| name: "MarginTrim", |
| status: "experimental", |
| }, |
| { |
| name: "MaskDeserializationTimeForCrossOriginMessages", |
| status: "stable", |
| }, |
| { |
| // Enables mirroring for stretchy and large MathML operators when |
| // the text direction is right to left. |
| name: "MathMLOperatorRTLMirroring", |
| status: "stable", |
| }, |
| { |
| // Enables MathML ancestor context preservation during copy-paste |
| // serialization. When enabled, copying partial MathML content includes |
| // the containing <math> element to preserve semantic context and |
| // namespace declarations. |
| name: "MathMLSerializationOnCopy", |
| status: "stable", |
| }, |
| { |
| // Enables skipping <mtr> wrapping during ancestor wrapping in |
| // serialization. When enabled duplicate <mtr> wrapping are absent. |
| name: "MathMLSkipMtrTagInAncestorWrapping", |
| status: "stable", |
| }, |
| { |
| name:"MeasureMemory", |
| 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", |
| }, |
| { |
| 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: "MediaPlaybackWhileNotVisiblePermissionPolicy", |
| status: "test", |
| origin_trial_feature_name: "MediaPlaybackWhileNotVisiblePermissionPolicy", |
| }, |
| { |
| name: "MediaQueryNavigationControls", |
| }, |
| { |
| name: "MediaSession", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "MediaSessionChapterInformation", |
| status: "stable", |
| }, |
| { |
| name: "MediaSourceExperimental", |
| status: "experimental", |
| }, |
| { |
| name: "MediaSourceExtensionsForWebCodecs", |
| status: "experimental", |
| base_feature: "none", |
| origin_trial_feature_name: "MediaSourceExtensionsForWebCodecs", |
| }, |
| { |
| name: "MediaStreamTrackTransfer", |
| status: "test", |
| base_feature: "none", |
| }, |
| { |
| name: "MediaStreamTrackWebSpeech", |
| status: { |
| "Linux": "stable", |
| "Mac": "stable", |
| "Win": "stable", |
| "default": "experimental", |
| }, |
| }, |
| { |
| // This feature helps to add memory consumer to NGShapeCache, so that |
| // the cached shape results would be cleared once exceeding the memory limit. |
| name: "MemoryConsumerForNGShapeCache", |
| status: "test", |
| }, |
| { |
| name: "MenuElements", |
| status: "experimental", |
| }, |
| { |
| 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", |
| }, |
| // Killswitch for crbug.com/40062462 fix. |
| { |
| name: "MixedContentAutoupgradesUseIsMixedContentRestrictedInFrame", |
| status: "stable", |
| }, |
| { |
| name: "MobileLayoutTheme", |
| }, |
| { |
| name: "ModifyParagraphCrossEditingoundary", |
| status: "stable", |
| }, |
| // ModulePreloadReferrer enables modulepreload to send proper referrer |
| // headers as specified in the HTML spec. Behind a flag for safer rollout. |
| // https://crbug.com/441933555 |
| { |
| name: "ModulePreloadReferrer", |
| status: "experimental", |
| }, |
| // https://crbug.com/466888680 |
| { |
| name: "ModulePreloadStyleJson", |
| status: "stable", |
| }, |
| { |
| name: "MojoJS", |
| status: "test", |
| is_protected_feature: true, |
| }, |
| // MojoJSTest is used exclusively in testing environments, whereas MojoJS |
| // may also be used elsewhere. |
| { |
| name: "MojoJSTest", |
| status: "test", |
| base_feature: "none", |
| is_protected_feature: true, |
| }, |
| // Move the selection to the last position in the list item. See |
| // https://crbug.com/331841851 |
| { |
| name: "MoveEndingSelectionToListChild", |
| status: "stable", |
| }, |
| { |
| name: "MoveToParagraphStartOrEndSkipsNonEditable", |
| status: "stable", |
| }, |
| { |
| name: "MulticolColumnWrapping", |
| status: "stable", |
| }, |
| { |
| name: "NavigateEventAddHandlerOnPrecommit", |
| status: "stable", |
| }, |
| { |
| name: "NavigateEventClearOnRestore", |
| status: "test", |
| }, |
| { |
| name: "NavigateEventDeferCrossDocumentCommit", |
| status: "experimental", |
| }, |
| { |
| name: "NavigationEventTiming", |
| }, |
| { |
| name: "NavigationId", |
| status: "experimental", |
| origin_trial_feature_name: "SoftNavigationHeuristics", |
| implied_by: ["SoftNavigationHeuristics"], |
| }, |
| { |
| name: "NavigatorContentUtils", |
| // Android does not yet support NavigatorContentUtils. |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "NetInfoConstantType", |
| }, |
| { |
| name: "NetInfoDownlinkMax", |
| public: true, |
| // Only Android, ChromeOS support NetInfo downlinkMax, type and ontypechange now |
| status: { |
| "Android": "stable", |
| "ChromeOS": "stable", |
| "default": "experimental", |
| }, |
| base_feature: "none", |
| }, |
| { |
| // https://chromestatus.com/feature/5054329641893888 |
| // streamHTML, appendHTML, etc. |
| name: "NewHTMLSettingMethods", |
| status: "experimental", |
| depends_on: ["SetHTMLCanRunScripts", "TrustedTypesCreateParserOptions"] |
| }, |
| // This is a killswitch flag, shipped in M144. It can be removed in M146. |
| { |
| name: "NoAriaDetailsForAnchorPos", |
| status: "stable", |
| }, |
| { |
| // This turns off all font antialiasing for tests unless it is |
| // explicitly required and enabled using the |
| // "--enable-font-antialiasing" flag like in the case of |
| // "virtual/text-antialias/" virtual test suite. |
| // crbug.com/339041663 |
| name: "NoFontAntialiasing", |
| status: "test", |
| }, |
| { |
| name: "NoIdleEncodingForWebTests", |
| status: "test", |
| }, |
| // Doesn't insert empty blockquotes on outdenting a blockquote. See |
| // https://crbug.com/323960902 |
| { |
| name: "NonEmptyBlockquotesOnOutdenting", |
| status: "stable", |
| }, |
| { |
| name: "NonEmptyVisibleTextSelectionForTextFragment", |
| status: "stable", |
| }, |
| { |
| // 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", |
| }, |
| { |
| 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", |
| }, |
| { |
| name: "NumberInputFullWidthChars", |
| status: "stable", |
| }, |
| { |
| name: "OffMainThreadCSSPaint", |
| status: "stable", |
| }, |
| { |
| name: "OffscreenCanvasGetContextAttributes", |
| status: "stable", |
| }, |
| { |
| // Kill switch for a fix to offset-path transform invalidation for |
| // https://crbug.com/463409688. |
| name: "OffsetPathTransformUpdateFix", |
| status: "stable", |
| }, |
| { |
| name: "OmitBlurEventOnElementRemoval", |
| status: "test" |
| }, |
| { |
| name: "OnDeviceWebSpeechAvailable", |
| status: "stable", |
| }, |
| { |
| // The OpaqueRange interface provides a live AbstractRange subtype |
| // for encapsulated content within <textarea> and <input> elements. |
| // crbug.com/421421332 |
| name: "OpaqueRange", |
| status: "experimental", |
| }, |
| { |
| // Restrict popover invoker lookup to the same TreeScope as the element. |
| // This will be shipped in M142, and it can be removed in M144. |
| // See https://issues.chromium.org/issues/443031270. |
| name: "OpenPopoverInvokerRestrictToSameTreeScope", |
| status: "stable", |
| }, |
| { |
| // Improves the performance of the option element's MutationObserver. |
| // Enabled in M145, can be removed in M147. |
| name: "OptionMutationObserverImprovement", |
| status: "stable", |
| }, |
| { |
| name: "OrientationEvent", |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "OriginAPI", |
| status: "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", |
| public: 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: "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, |
| public: 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: "OutlineDrawAutoStyleZeroWidth", |
| status: "stable", |
| }, |
| { |
| // Improves the performance of the global overlay:none!important UA style |
| // rule by replacing the normal UA style rule with other things which |
| // result in the same behavior. Added in M147, should be safe to remove |
| // in M150. |
| name: "OverlayGlobalRuleRemoval", |
| status: "stable", |
| }, |
| { |
| // Enables the CSS overlay property. When this flag is disabled, top |
| // layer exit animations will work without the need for using the overlay |
| // property. |
| name: "OverlayProperty", |
| status: "stable", |
| }, |
| { |
| // https://chromestatus.com/feature/5261280285949952 |
| name: "OverscrollGestures", |
| status: "experimental", |
| }, |
| { |
| name: "PagePopup", |
| // Android does not have support for PagePopup |
| status: {"Android": "", "iOS": "", "default": "stable"}, |
| }, |
| { |
| name: "PagePopupCopyPaste", |
| depends_on: ["PagePopup"], |
| status: "stable", |
| }, |
| { |
| name: "PageRevealEvent", |
| status: "stable", |
| }, |
| { |
| name: "PageSwapEvent", |
| status: "stable", |
| }, |
| { |
| name: "PaintHoldingForIframes", |
| status: "stable", |
| }, |
| { |
| // Fix for https://crbug.com/40716515. |
| // Killswitch M141. |
| name: "PaintOffsetTranslationForBackdropFilterWithInlineElement", |
| status: "stable", |
| }, |
| { |
| // Killswitch M142. Overrides the above to enable PaintOffsetTranslation |
| // for all composited LayoutObjects. |
| name: "PaintOffsetTranslationForComposited", |
| status: "test", |
| }, |
| { |
| name: "PaintTimingMixin", |
| status: "stable", |
| }, |
| { |
| name: "PaintUnderInvalidationChecking", |
| settable_from_internals: true, |
| }, |
| { |
| // PARAKEET ad serving runtime flag/JS API. |
| name: "Parakeet", |
| origin_trial_feature_name: "Parakeet", |
| }, |
| { |
| name: "PartialCompletionNotAllowedInMoveParagraphs", |
| status: "stable", |
| }, |
| { |
| name: "PartitionVisitedLinkDatabaseWithSelfLinks", |
| status: {"iOS": "", "default": "stable"}, |
| }, |
| // This is to add an option to enable the Reveal button on password inputs while waiting ::reveal gets standardized. |
| { |
| name: "PasswordReveal", |
| }, |
| { |
| name: "PaymentApp", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // https://chromestatus.com/feature/5198846820352000 |
| name: "PaymentLinkDetection", |
| status: "stable", |
| }, |
| { |
| name: "PaymentMethodChangeEvent", |
| depends_on: ["PaymentRequest"], |
| status: "stable", |
| }, |
| // PaymentRequest is enabled by default on Android |
| { |
| name: "PaymentRequest", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "PerformanceManagerInstrumentation", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // Sends custom user timing events in subframes to the browser process. |
| // crbug.com/467177770 for more details. |
| name: "PerformanceMarkCustomUserTimingFromSubframe", |
| status: "experimental" |
| }, |
| { |
| // Enables performance.mark('mark_feature_usage'): crbug.com/1517170 |
| name: "PerformanceMarkFeatureUsage", |
| status: "experimental" |
| }, |
| { |
| name: "PerformanceNavigationTimingConfidence", |
| status: "stable", |
| }, |
| { |
| name: "PeriodicBackgroundSync", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "PerMethodCanMakePaymentQuota", |
| origin_trial_feature_name: "PerMethodCanMakePaymentQuota", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "PermissionsRequestRevoke", |
| status: "experimental", |
| }, |
| { |
| // crbug.com/398955086 |
| name: "PlaceholderVisibility", |
| status: "stable", |
| }, |
| // This is a reverse OT used for a phased deprecation. |
| // https://crbug.com/918374 |
| { |
| name: "PNaCl", |
| base_feature: "none", |
| origin_trial_feature_name: "PNaCl", |
| public: true, |
| }, |
| { |
| name: "PointerEventDeviceId", |
| status: "stable", |
| }, |
| { |
| // Flag for enabling the pointer lock API on Android |
| name: "PointerLockOnAndroid", |
| "status": "stable", |
| }, |
| { |
| // https://crbug.com/404479704 |
| name: "PointerRawUpdateOnlyInSecureContext", |
| status: "stable", |
| }, |
| { |
| name: "PositionOutsideTabSpanCheckSiblingNode", |
| status: "stable", |
| }, |
| { |
| // Kill switch for https://crbug.com/448173938 which changes position |
| // visibility to ignore non-clipping ancestors. |
| name: "PositionVisibilityIgnoreNonClipAncestors", |
| status: "stable", |
| }, |
| { |
| name: "PotentialPermissionsPolicyReporting", |
| 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: "PreferredAudioOutputDevices", |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| origin_trial_feature_name: "PreferredAudioOutputDevices", |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| public: true, |
| }, |
| { |
| name: "PrefersReducedData", |
| status: "experimental", |
| }, |
| { |
| // Used to allow preloading data: URLs with link rel=preload. |
| // https://crbug.com/348442535 |
| name: "PreloadLinkRelDataUrls", |
| 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", |
| }, |
| { |
| // Used to allow prerender cross-origin iframes with an opt-in response |
| // header. |
| // https://chromestatus.com/feature/5112398709129216 |
| // https://crbug.com/440387014 |
| name: "Prerender2CrossOriginIframes", |
| origin_trial_feature_name: "Prerender2CrossOriginIframes", |
| }, |
| { |
| // Used to allow prerender activation by form submission. |
| // See https://crbug.com/346555939. |
| name: "PrerenderActivationByFormSubmission", |
| origin_trial_feature_name: "PrerenderActivationByFormSubmission", |
| status: "experimental", |
| }, |
| { |
| name: "PrerenderUntilScript", |
| public: true, |
| origin_trial_feature_name: "PrerenderUntilScript", |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| }, |
| { |
| name: "Presentation", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| // When enabled, preserves dropEffect in drag event set during dragover |
| // events. See https://crbug.com/434151262 |
| name: "PreserveDropEffect", |
| status: "stable", |
| }, |
| { |
| // When enabled, prevents undo to be applied if the enclosing block |
| // is not editable |
| name: "PreventUndoIfNotEditable", |
| status: "stable" |
| }, |
| { |
| // Controls the aggregate error reporting feature, which allows for |
| // contributions to be made conditional on error conditions that can be |
| // hit when using the API. This also defers contribution merging and |
| // modifies the budgeting flow. |
| // https://chromestatus.com/feature/5194896325214208 |
| name: "PrivateAggregationApiErrorReporting", |
| status: "experimental", |
| }, |
| { |
| // Controls whether Private Aggregation's "maxContributions" field is |
| // enabled for Shared Storage callers. If disabled, the field will be |
| // ignored. https://chromestatus.com/feature/5189366316793856 |
| name: "PrivateAggregationApiMaxContributions", |
| status: "stable", |
| }, |
| { |
| name: "PrivateNetworkAccessNullIpAddress", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "PrivateStateTokens", |
| status: "stable", |
| base_feature: "none", |
| 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: "ProfilerAPI", |
| status: "stable", |
| }, |
| { |
| // When enabled, dedicated workers can use profiler API |
| name: "ProfilerAPIForDedicatedWorker", |
| status: "experimental", |
| }, |
| // Promisify programmatic scroll methods in Element and Window. |
| // https://crbug.com/41406914 |
| { |
| name: "ProgrammaticScrollPromise", |
| status: "experimental", |
| }, |
| { |
| // When enabled, setting progress.max enforces a >0 constraint. |
| // This will be shipped in M146, and it can be removed in M148. |
| name: "ProgressMaxIsPositive", |
| status: "experimental", |
| }, |
| { |
| // Propagate overscroll-behavior from the root element rather than the |
| // body element. crbug.com/41453796 |
| name: "PropagateOverscrollBehaviorFromRoot", |
| status: "stable" |
| }, |
| // Protected memory varariant of the sample API for testing integration with |
| // the Origin Trials Framework. This is used only in unit tests. |
| // Do not change this flag to stable, as it exists |
| // solely to generate code used by the sample API implementation. |
| { |
| name: "ProtectedOriginTrialsSampleAPI", |
| base_feature: "none", |
| origin_trial_feature_name: "Frobulate", |
| is_protected_feature: "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: "ProtectedOriginTrialsSampleAPIDependent", |
| depends_on: ["ProtectedOriginTrialsSampleAPI"], |
| base_feature: "none", |
| is_protected_feature: "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: "ProtectedOriginTrialsSampleAPIImplied", |
| base_feature: "none", |
| origin_trial_feature_name: "FrobulateImplied", |
| implied_by: ["ProtectedOriginTrialsSampleAPI"], |
| is_protected_feature: "true", |
| }, |
| { |
| // Allowing pseudo-elements to have focus. |
| name: "PseudoElementsFocusable", |
| status: "stable", |
| }, |
| { |
| // Support hit-testing for ::after, ::before, ::marker |
| // (e.g. for CSSPseudoElement). |
| name: "PseudoElementsHitTestable", |
| status: "stable", |
| }, |
| { |
| // Support :hover on ::after, ::before, ::marker. |
| name: "PseudoElementsHoverable", |
| depends_on: ["PseudoElementsHitTestable"], |
| status: "experimental", |
| }, |
| { |
| name: "PushMessageDataBytes", |
| depends_on: ["PushMessaging"], |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "PushMessaging", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "PushMessagingSubscriptionChange", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // ChromeStatus: https://chromestatus.com/feature/6194847180128256 |
| name: "QuotaExceededErrorUpdate", |
| status: "stable", |
| }, |
| { |
| name: "QuoteFirstLineStyle", |
| status: "stable", |
| }, |
| { |
| name: "RasterInducingScroll", |
| status: { |
| "Linux": "stable", |
| "Win": "stable", |
| "default": "test", |
| } |
| }, |
| { |
| // Enables support for a 'min' option in ReadableStream BYOBReader.read(), |
| // allowing callers to specify the minimum number of bytes to be read into |
| // the buffer before resolving the read request. |
| // https://chromestatus.com/feature/6396991665602560 |
| name: "ReadableStreamBYOBReaderReadMinOption", |
| status: "stable", |
| }, |
| { |
| // getType() on a ClipboardItem triggers the |
| // clipboard read operation, implementing lazy loading for clipboard data. |
| name: "ReadClipboardDataOnClipboardItemGetType", |
| status: "test", |
| }, |
| { |
| name: "RecordSameDocumentPresentationTimeOnce", |
| status: "stable", |
| }, |
| // If enabled, both Accept-Language HTTP header and JavaScript getter will |
| // be reduced. |
| { |
| name: "ReduceAcceptLanguage", |
| base_feature: "none", |
| }, |
| // If enabled, the platform version in User-Agent Data will be removed. |
| // This feature is limited to Linux only. |
| { |
| name: "ReduceUserAgentDataLinuxPlatformVersion", |
| status: {"Linux": "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", |
| }, |
| { |
| public: true, |
| name: "RegionCapture", |
| status: {"Android": "experimental", "iOS": "", "default": "stable"}, |
| }, |
| { |
| name: "RelatedWebsitePartitionAPI", |
| base_feature: "none", |
| |
| // No status because this blink runtime feature doesn't work by itself. |
| // It's controlled by the corresponding Chromium feature, |
| // net::features::kRelatedWebsitePartitionAPI, which needs to be |
| // enabled to make the whole feature work. |
| }, |
| { |
| name: "RelOpenerBcgDependencyHint", |
| status: "experimental", |
| }, |
| { |
| 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"}, |
| }, |
| { |
| // This feature acts as a kill switch for ISO-2022-JP auto-detection. |
| // This will be shipped in M139, and it can be removed in M141. |
| // See https://chromestatus.com/feature/6576566521561088. |
| name: "RemoveCharsetAutoDetectionForISO2022JP", |
| status: "stable", |
| }, |
| // After paste operation removes the placeholder <br> tag |
| // that gets inserted in contenteditable as placeholder for newline |
| { |
| name: "RemoveCollapsedPlaceholderForContentEditable", |
| status: "stable" |
| }, |
| { |
| name: "RemoveDanglingMarkupInTarget", |
| status: "stable", |
| }, |
| { |
| name: "RemoveDataUrlInSvgUse", |
| status: "stable", |
| }, |
| { |
| // Fix for removeFormat command incorrectly preserving background-color |
| // when removing styles from elements. Prevents background-color from being |
| // re-applied to child elements during style removal. |
| // See https://crbug.com/41438799 |
| name: "RemoveFormatFilterBackgroundColor", |
| status: "stable", |
| }, |
| { |
| // See https://issues.chromium.org/issues/40779139 |
| name: "RemoveScrollNodeWorkaround", |
| status: "stable", |
| }, |
| { |
| // See https://issues.chromium.org/issues/41474791 |
| name: "RemoveSelectionCanonicalizationInMoveParagraph", |
| status: "stable", |
| }, |
| { |
| // See https://issues.chromium.org/issues/41311101 |
| name: "RemoveVisibleSelectionInDOMSelection", |
| status: "test", |
| }, |
| { |
| // See https://github.com/whatwg/html/issues/11070 |
| // ChromeStatus: https://chromestatus.com/feature/5207202081800192 |
| name: "RenderBlockingFullFrameRate", |
| copied_from_base_feature_if: "overridden", |
| origin_trial_feature_name: "RenderBlockingFullFrameRate", |
| status: "test", |
| }, |
| { |
| name: "RenderBlockingStatus", |
| status: "stable", |
| }, |
| { |
| // The renderpriority attribute feature. |
| // https://github.com/WICG/display-locking/blob/main/explainers/update-rendering.md |
| name: "RenderPriorityAttribute", |
| }, |
| { |
| name: "ReportFirstFrameTimeAsRenderTime", |
| status: "test", |
| }, |
| { |
| name: "ReportLayoutShiftRectsInCssPixels", |
| status: "stable", |
| }, |
| { |
| name: "RequestIsReloadNavigation", |
| status: "experimental", |
| }, |
| { |
| name: "RequestMainFrameAfterFirstVideoFrame", |
| status: "experimental", |
| }, |
| { |
| name: "ResolveVarStylesOnCopy", |
| status: "stable", |
| }, |
| { |
| name: "ResourceTimingContentEncoding", |
| status: "stable", |
| }, |
| { |
| name: "ResourceTimingContentType", |
| status: "experimental", |
| }, |
| { |
| name: "ResourceTimingInitiator", |
| status: "experimental", |
| }, |
| { |
| name: "ResourceTimingUseCORSForBodySizes", |
| status: "test", |
| }, |
| { |
| name: "RespectOverscrollBehaviorForScrollBubbling", |
| status: "stable", |
| }, |
| { |
| name: "ResponsiveIframes", |
| status: "experimental", |
| }, |
| { |
| name: "RestrictGamepadAccess", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "RestrictOwnAudio", |
| status: "stable", |
| }, |
| { |
| // If enabled, makes the root scrollbars' foreground elements follow the |
| // browser |
| name: "RootScrollbarFollowsBrowserTheme", |
| status: {"Linux": "test", "Win": "test"}, |
| }, |
| // Route matching, @route CSS rule, script type="routemap". |
| // https://chromestatus.com/feature/4771962874363904 |
| { |
| name: "RouteMatching", |
| status: "experimental", |
| }, |
| { |
| name: "RtcAlwaysNegotiateDataChannels", |
| status: "stable", |
| }, |
| { |
| name: "RtcAudioJitterBufferMaxPackets", |
| origin_trial_feature_name: "RtcAudioJitterBufferMaxPackets", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "RTCDataChannelPriority", |
| status: "experimental", |
| }, |
| { |
| name: "RTCDiagnosticLogging", |
| status: "test", |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "RTCEncodedFrameAudioLevel", |
| status: "stable", |
| }, |
| { |
| name: "RTCEncodedFrameSetMetadata", |
| status: "experimental", |
| origin_trial_feature_name: "RTCEncodedFrameSetMetadata", |
| }, |
| { |
| name: "RTCEncodedFrameTimestamps", |
| status: "stable", |
| }, |
| { |
| 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", |
| }, |
| { |
| name: "RTCRtpScaleResolutionDownTo", |
| status: "stable", |
| }, |
| { |
| name: "RTCRtpScriptTransform", |
| status: "stable", |
| }, |
| { |
| name: "RTCRtpTransport", |
| status: "test", |
| }, |
| { |
| 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", |
| }, |
| { |
| // HTML event loop invoking 'Run snapshot post-layout state steps' from |
| // the CSSOM View per spec proposal. |
| name: "RunSnapshotPostLayoutStateSteps", |
| }, |
| { |
| // Spec: https://wicg.github.io/sanitizer-api/ |
| // Tracking bug: crbug.com/356601280 |
| name: "SanitizerAPI", |
| status: "stable", |
| }, |
| { |
| // https://wicg.github.io/webcomponents/proposals/Scoped-Custom-Element-Registries |
| // https://github.com/whatwg/html/issues/10854 |
| // Spec PRs: |
| // https://github.com/whatwg/html/pull/10869 |
| // https://github.com/whatwg/dom/pull/1341 |
| name: "ScopedCustomElementRegistry", |
| status: "stable", |
| }, |
| { |
| // https://github.com/WICG/view-transitions/blob/main/scoped-transitions.md |
| name: "ScopedViewTransitions", |
| status: "stable" |
| }, |
| { |
| // https://github.com/w3c/window-management/issues/149 |
| name: "ScreenDetailedHdrHeadroom", |
| status: "experimental", |
| }, |
| { |
| // crbug.com/406917902 |
| name: "ScriptBasedOnUnicodeBlock", |
| status: "stable", |
| }, |
| // 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: "ScrollAnchorPriorityCandidateSubtree", |
| status: "stable", |
| }, |
| { |
| // Use parent element for text node to compute relative offset when |
| // serializing scroll anchor to ensure consistency with |
| // ComputeUniqueSelector() |
| name: "ScrollAnchorSerializationUseParentForTextNode", |
| status: "stable", |
| }, |
| { |
| name: "ScrollbarColor", |
| status: "stable", |
| }, |
| { |
| name: "ScrollbarGutterBugFix", |
| status: "stable", |
| }, |
| { |
| name: "ScrollbarWidth", |
| status: "stable", |
| }, |
| { |
| name: "ScrollIntoViewNearest", |
| status: "stable" |
| }, |
| // TODO(355460994): Remove after M129. |
| // scroll into root frame didn't take scrollbar and borders into account, |
| // while this is fixed, to avoid any web compat issues we have this killswitch. |
| { |
| name: "ScrollIntoViewRootFrameViewportBugFix", |
| status: "stable", |
| }, |
| { |
| // Separate flag for crbug.com/1426506 (getCurrentTime API change) which |
| // is expected to land after the initial launch of ScrollTimeline. |
| name: "ScrollTimelineCurrentTime", |
| status: "experimental" |
| }, |
| { |
| // https://github.com/w3c/csswg-drafts/issues/9367#issuecomment-1854280461 |
| name: "ScrollTimelineNamedRangeScroll", |
| 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", |
| }, |
| // Only consider unique case-insensitive scroll-to-text fragments. |
| { |
| name: "ScrollToTextFragmentUniqueFragments", |
| status: "stable", |
| }, |
| // Allows CSS styling of browser search results. |
| // https://issues.chromium.org/issues/339298411 |
| // https://chromestatus.com/feature/5195073796177920 |
| { |
| name: "SearchTextHighlightPseudo", |
| status: "stable", |
| }, |
| // SecurePaymentConfirmation has shipped on some platforms, but its |
| // availability is controlled by the browser process (via the |
| // SecurePaymentConfirmationBrowser feature), as it requires browser |
| // support to function. See //content/public/common/content_features.cc |
| // |
| // The status is set to 'test' here to enable some WPT tests that only |
| // require blink-side support to function. |
| { |
| name: "SecurePaymentConfirmation", |
| public: true, |
| status: "test", |
| base_feature: "none", |
| }, |
| // SecurePaymentConfirmationAvailabilityAPI needs to be kept as a runtime |
| // flag in order to disable the API in WebView. |
| { |
| name: "SecurePaymentConfirmationAvailabilityAPI", |
| status: "stable", |
| }, |
| { |
| name: "SecurePaymentConfirmationBrowserBoundKeys", |
| status: { |
| "Android": "stable", |
| "Mac": "stable", |
| "Win": "stable", |
| "iOS": "", |
| "default": "test", |
| }, |
| }, |
| { |
| name: "SecurePaymentConfirmationCapabilities", |
| status: { |
| "Android": "experimental", |
| "Mac": "experimental", |
| "Win": "experimental", |
| "iOS": "", |
| "default": "test", |
| }, |
| }, |
| { |
| name: "SecurePaymentConfirmationDebug", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "SecurePaymentConfirmationOptOut", |
| origin_trial_feature_name: "SecurePaymentConfirmationOptOut", |
| origin_trial_allows_third_party: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| // Implements new UX for SPC including new output states, payment |
| // instrument details and payment entities logos. |
| name: "SecurePaymentConfirmationUxRefresh", |
| status: { |
| "Android": "stable", |
| "Mac": "stable", |
| "Win": "stable", |
| "iOS": "", |
| "default": "test", |
| }, |
| }, |
| { |
| // SelectAudioOutput API |
| // https://chromestatus.com/feature/5164535504437248 |
| name: "SelectAudioOutput", |
| status: { |
| "Android": "", |
| "default": "test", |
| }, |
| }, |
| { |
| // Replicates old behavior which removes selectedness from option |
| // elements when they are all removed from a select at the same time. |
| // https://issues.chromium.org/issues/444330901 |
| // Enabled in M142, can be removed in M145. |
| name: "SelectChildrenRemovedFix", |
| status: "stable", |
| }, |
| { |
| // The selectedcontentelement attribute is for connecting select elements |
| // to arbitrary <selectedcontent> elements. |
| // https://github.com/openui/open-ui/issues/1063 |
| // https://github.com/whatwg/html/issues/12227 |
| name: "SelectedcontentelementAttribute", |
| status: "experimental", |
| depends_on: ["SelectedcontentSpec"], |
| }, |
| { |
| // Aligns the implementation of the <selectedcontent> element with the |
| // HTML spec. https://issues.chromium.org/issues/458113204 |
| name: "SelectedcontentSpec", |
| status: "experimental", |
| }, |
| { |
| // See https://crbug.com/40664519 |
| // Disabled due to UI freeze issues, see https://crbug.com/448833953. |
| name: "SelectionAndFocusedVisiblePositionMatch", |
| status: "experimental", |
| }, |
| { |
| name: "SelectionCollapsedDirectionNone", |
| status: "stable", |
| }, |
| { |
| // Killswitch M141. |
| name: "SelectionHandleWithBottomClipped", |
| status: "stable", |
| }, |
| { |
| // https://issues.chromium.org/issues/40502558 |
| name: "SelectionRemoveRangeNotFoundError", |
| status: "stable", |
| }, |
| { |
| // https://issues.chromium.org/issues/40502558 |
| name: "SelectionSetBaseAndExtentNonNullNode", |
| status: "experimental", |
| settable_from_internals: true, |
| }, |
| { |
| // Enables skipping user-select: none content |
| // in DOMSelection::toString() |
| name: "SelectionToStringSkipsUserSelectNone", |
| status: "stable", |
| }, |
| { |
| // Conditionally update selection only when autoscroll actually scrolls. |
| // This prevents infinite selection updates during autoscroll when the |
| // scroll position doesn't change. |
| // See https://crbug.com/412578722 |
| name: "SelectionUpdateOnlyAfterAutoscroll", |
| status: "stable", |
| }, |
| { |
| // See https://crbug.com/395544401 |
| name: "SelectionUpdateToInitialSelectionInListify", |
| status: "stable", |
| }, |
| { |
| // See https://chromestatus.com/feature/5203433409871872 |
| name: "SelectiveClipboardFormatRead", |
| status: "test", |
| }, |
| { |
| // See https://chromestatus.com/feature/4811835974615040 |
| name: "SelectivePermissionsIntervention", |
| status: "experimental", |
| }, |
| { |
| // Removes the forced overflow:hidden rules on the select element's |
| // InnerElement unless the author specifies text-overflow:ellipsis. May |
| // cause text to overlap with the dropdown indicator. |
| // https://issues.chromium.org/issues/40805967 |
| name: "SelectRemoveOverflowHidden", |
| status: "stable", |
| }, |
| { |
| name: "SendBeaconThrowForBlobWithNonSimpleType", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| // SlotChange signal is sent after node insertion is complete, |
| // ensuring that slot fallback content is handled correctly. |
| // This was added in M145 and can be removed after M147. |
| // https://issues.chromium.org/issues/40150299 |
| name: "SendSlotChangeSignalAfterNodeInserted", |
| status: "stable", |
| }, |
| { |
| name: "SensorExtraClasses", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // Separate defer and module script execution into individual tasks |
| // to comply with HTML spec requirement to "spin the event loop" between |
| // each script execution. This prevents long tasks and improves responsiveness. |
| // https://crbug.com/40894694 |
| name: "SeparateDeferModuleScriptTasks", |
| status: "stable", |
| }, |
| { |
| name: "Serial", |
| status: "stable", |
| base_feature: "WebSerialAPI", |
| }, |
| { |
| name: "SerializeViewTransitionStateInSPA", |
| }, |
| { |
| name: "SerialPortConnected", |
| status: {"Android": "", "default": "experimental"}, |
| base_feature: "none", |
| }, |
| { |
| // Support for Service Worker background sync APIs in Dedicated Workers. |
| // See https://chromestatus.com/feature/6497653025931264 |
| // See https://issues.chromium.org/issues/40364838 |
| name: "ServiceWorkerBackgroundSyncInDedicatedWorker", |
| depends_on: ["ServiceWorkerInDedicatedWorker"], |
| }, |
| { |
| name: "ServiceWorkerClientLifecycleState", |
| status: "experimental", |
| }, |
| { |
| // Support for Service Worker APIs in Dedicated Workers. |
| // See https://chromestatus.com/feature/6497653025931264 |
| // See https://issues.chromium.org/issues/40364838 |
| name: "ServiceWorkerInDedicatedWorker", |
| }, |
| { |
| name: "ServiceWorkerStaticRouterTimingInfo", |
| status: "stable", |
| }, |
| { |
| // When enabled, sets the default drop effect as according to spec for |
| // events like dragOver, dragLeave, etc. See https://crbug.com/434151262 |
| name: "SetDefaultDropEffect", |
| status: "stable", |
| }, |
| { |
| name: "SetHTMLCanRunScripts", |
| status: "experimental", |
| }, |
| { |
| name: "SetSequentialFocusStartingPoint", |
| status: "experimental", |
| }, |
| // https://chromestatus.com/feature/5176753681203200 |
| { |
| name: "ShadowContourFollowsBorder", |
| status: "stable", |
| }, |
| // https://crbug.com/448174611 |
| { |
| name: "ShadowRootAdoptedStyleSheet", |
| implied_by: ["DeclarativeCSSModules"], |
| }, |
| { |
| // Reference Target allows IDREF attributes to refer inside Shadow DOM. |
| // crbug.com/346835896 |
| name: "ShadowRootReferenceTarget", |
| status: "experimental", |
| origin_trial_feature_name: "ShadowRootReferenceTarget" |
| }, |
| { |
| // If enabled, Reference Target will support aria-owns. |
| // https://github.com/WICG/webcomponents/issues/1091 |
| name: "ShadowRootReferenceTargetAriaOwns", |
| }, |
| |
| { |
| name: "SharedArrayBuffer", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "SharedArrayBufferUnrestrictedAccessAllowed", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "SharedStorageAPI", |
| base_feature: "none", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "SharedStorageWebLocks", |
| depends_on: ["SharedStorageAPI"], |
| status: "stable", |
| }, |
| { |
| name: "SharedWorker", |
| public: true, |
| // Android does not yet support SharedWorker. crbug.com/154571 |
| status: {"Android": "", "default": "stable"}, |
| |
| // Allow Android to run the origin trial. |
| origin_trial_feature_name: "SharedWorkerOnAndroid", |
| origin_trial_os: ["android"], |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| // If enabled, SharedWorker supports extendedLifetime |
| // https://github.com/whatwg/html/issues/10997 |
| name: "SharedWorkerExtendedLifetime", |
| status: "experimental", |
| origin_trial_feature_name: "SharedWorkerExtendedLifetime", |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| name: "SideRelativeBackgroundPosition", |
| status: "stable", |
| public: true, |
| }, |
| { |
| name: "SignatureBasedInlineIntegrity", |
| status: "experimental", |
| }, |
| { |
| name: "SingleAxisScrollContainers", |
| }, |
| { |
| name: "SkipAd", |
| depends_on: ["MediaSession"], |
| status: "stable", |
| }, |
| { |
| // If enabled, only call ResourceLoadObserver callbacks if the DevTools |
| // panel is open. |
| name: "SkipCallbacksWhenDevToolsNotOpen", |
| status: "experimental", |
| }, |
| { |
| // Skip field disabled checks in DateTimeEditElement. |
| // This will be shipped in M143, and it can be removed in M145. |
| // See https://issues.chromium.org/issues/442293382. |
| name: "SkipDateTimeFieldDisableChecks", |
| status: "stable", |
| }, |
| { |
| // Improves performance of event dispatching by skipping the capture |
| // phase if there are no capture listeners registered on the page. |
| name: "SkipEventCapture", |
| status: "stable", |
| }, |
| { |
| // When enabled, cursor movement (arrow keys) will skip over non-editable |
| // atomic or empty inline elements within editable content, instead of |
| // getting stuck or moving into the non-editable content. |
| name: "SkipNonEditableInAtomicMove", |
| status: "stable", |
| }, |
| { |
| name: "SkipOofItemForBreakCandidate", |
| status: "stable", |
| }, |
| { |
| // Skips paragraph split in insertHTML when the fragment contains only |
| // inline content, preventing inline elements from being inserted |
| // outside their containing block. |
| // See https://crbug.com/41024699. |
| name: "SkipParagraphSplitForInlineInsertHTML", |
| status: "stable", |
| }, |
| { |
| // Skip lines that contain only pseudo-element content (like ::before |
| // or ::after) when determining valid caret positions for line |
| // navigation. Pseudo-elements don't have DOM nodes for caret positioning, |
| // so including them caused incorrect selection behavior. |
| // See crbug.com/357889508 |
| name: "SkipPseudoOnlyLinesInLineNavigation", |
| status: "stable", |
| }, |
| { |
| // Skips the browser touch event filter, ensuring that events that reach |
| // the queue and would otherwise be filtered out will instead be passed |
| // onto the renderer compositor process as long as the page hasn't timed |
| // out. If skip_filtering_process is browser_and_renderer, also skip the |
| // renderer cc touch event filter, ensuring that events will be passed |
| // onto the renderer main thread. |
| name: "SkipTouchEventFilter", |
| status: "stable", |
| }, |
| // Fix for crbug.com/41393366 |
| { |
| name: "SkipUnselectableContentInSerialization", |
| status: "stable", |
| }, |
| { |
| name: "SmallerViewportUnits", |
| status: "stable", |
| }, |
| { |
| name: "SmartCard", |
| status: { |
| "Android": "", |
| "ChromeOS": "stable", |
| "default": "test", |
| }, |
| }, |
| { |
| name: "SmartZoom", |
| base_feature: "none", |
| public: true, |
| status: {"Android": "test"}, |
| }, |
| { |
| // Used to enable the code for detecting soft navigations through task |
| // attribution. Set to stable as this generates an enabled-by-default |
| // base::Feature for a field-trial remote shutoff. Needs to be a runtime |
| // feature so that the Soft Navigation Heuristics Origin Trial can depend |
| // on it. |
| name: "SoftNavigationDetection", |
| status: "stable", |
| }, |
| { |
| name: "SoftNavigationDetectionIncludeReplaceState", |
| status: "stable", |
| }, |
| { |
| name: "SoftNavigationHeuristics", |
| status: "experimental", |
| origin_trial_allows_third_party: true, |
| origin_trial_feature_name: "SoftNavigationHeuristics", |
| }, |
| { |
| name: "SortedLayoutShiftSourcesByImpactArea", |
| status: "stable", |
| }, |
| { |
| // Source-specific multicast support in the Direct Sockets API. |
| name: "SourceSpecificMulticastInDirectSockets", |
| status: "test", |
| depends_on: ["DirectSockets"], |
| }, |
| { |
| // Whether spatial navigation should use cursor inheritance to exclude |
| // nodes where cursor is inherited. Kill-switch that can be remove once |
| // the change goes through a stable release. |
| name: "SpatNavUsesCursorInheritance", |
| status: "stable", |
| }, |
| { |
| name: "SpeakerSelection", |
| status: "experimental", |
| }, |
| // This is a flag that re-enables some deprecated/removed "special rules" |
| // that apply to the styles of an <h1> element nested within <article>, |
| // <aside>, <nav>, or <section>. It is disabled by default, and here as a |
| // Finch killswitch only. This was shipped (disabled) in M140, and the flag |
| // can be removed in M142. |
| { |
| name: "SpecialRulesForNestedH1Elements", |
| }, |
| { |
| // API for accessing the Custom Dictionary for spell checking purpose. |
| // https://chromestatus.com/feature/6185007701557248 |
| name: "SpellCheckCustomDictionaryAPI", |
| status: "test", |
| }, |
| { |
| name: "SplitTextNotCleanupDummySpans", |
| status: "stable", |
| }, |
| // Kill switch for change to unify image-set and srcset selection logic. |
| { |
| name: "SrcsetSelectionMatchesImageSet", |
| status: "stable", |
| }, |
| // Used as argument in attribute of stable-release functions/interfaces |
| // where a runtime-enabled feature name is required for correct IDL syntax. |
| // This is a global flag; do not change its status. |
| { |
| name: "StableBlinkFeatures", |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| // Kill switch for falsifying IsStacked() for non-stacked |
| // stacking contexts. https://crbug.com/40208685 |
| name: "StackingContextIsNotStacked", |
| status: "stable", |
| }, |
| { |
| // See https://github.com/w3c/csswg-drafts/issues/9398 |
| name: "StandardizedBrowserZoom", |
| status: "stable", |
| public: true, |
| }, |
| { |
| name: "StandardizedBrowserZoomOptOut", |
| origin_trial_feature_name: "DisableStandardizedBrowserZoom", |
| origin_trial_type: "deprecation", |
| origin_trial_allows_insecure: true, |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| // Preserves the sticky user activation state after a page navigates to |
| // another same-origin page. https://crbug.com/433729626 |
| name: "StickyUserActivationAcrossSameOriginNavigation", |
| status: "stable", |
| }, |
| { |
| name: "StorageBuckets", |
| status: "stable", |
| }, |
| { |
| // Gates the `durability()` method on a storage bucket and the property in |
| // the options struct. |
| name: "StorageBucketsDurability", |
| status: "experimental", |
| }, |
| { |
| // Gates the `locks()` method on a storage bucket. |
| name: "StorageBucketsLocks", |
| status: "experimental", |
| }, |
| { |
| name: "StrictMimeTypesForWorkers", |
| status: "experimental", |
| }, |
| { |
| name: "StylusHandwriting", |
| base_feature: "none", |
| }, |
| { |
| name: "SubApps", |
| status: "test", |
| }, |
| // 'pointercancel' and boundary leave ('pointerout' and 'pointerleave') |
| // events would now fire after a mouse drag start, matching the spec's |
| // definition of "pointer stream suppression". See: |
| // https://github.com/w3c/pointerevents/issues/555 |
| { |
| name: "SuppressPointerStreamAfterDrag", |
| status: "experimental", |
| }, |
| { |
| name: "SvgAnchorElementAttributes", |
| status: "stable", |
| }, |
| { |
| name: "SvgAnchorElementDownloadAttribute", |
| status: "stable", |
| }, |
| { |
| name: "SvgAnimateMotionDiscreteCalcMode", |
| status: "stable", |
| }, |
| { |
| name: "SvgAvoidCullingElementsWithTransformOperations", |
| status: "stable", |
| }, |
| { |
| name: "SvgAvoidResettingFilterQualityForTiledPattern", |
| status: "stable", |
| }, |
| { |
| // Treat SVG documents in <object>/<embed> as replaced elements |
| // https://issues.chromium.org/41302806 |
| name: "SVGEmbeddedAsReplacedElement", |
| status: "experimental", |
| }, |
| { |
| name: "SvgEnableTextDecorationCssStyling", |
| status: "experimental", |
| }, |
| { |
| name: "SvgFallBackToContainerSize", |
| status: "stable", |
| }, |
| { |
| name: "SvgFilterPaintsForHiddenContent", |
| status: "stable", |
| }, |
| { |
| name: "SvgIgnoreNegativeEllipseRadii", |
| status: "stable", |
| }, |
| { |
| name: "SvgInlineRootPixelSnappingScaleAdjustment", |
| status: "test", |
| }, |
| { |
| name: "SvgLengthListClearOnParsingFailure", |
| status: "stable", |
| }, |
| { |
| name: "SvgLengthResolveUnparsedValue", |
| status: "stable", |
| }, |
| { |
| name: "SvgNonScalingStrokePrecisionFix", |
| status: "stable", |
| }, |
| { |
| name: "SvgNumberListClearOnParsingFailure", |
| status: "stable", |
| }, |
| { |
| name: "SvgPartitionSVGDocumentResourcesInMemoryCache", |
| status: "stable", |
| }, |
| { |
| name: "SvgPathLengthCssProperty", |
| status: "experimental", |
| }, |
| { |
| name: "SvgScriptElementAsyncAttribute", |
| status: "stable", |
| }, |
| { |
| name: "SvgSizingWithPreserveAspectRatioNone", |
| status: "experimental", |
| }, |
| { |
| name: "SvgTextPathPathAttribute", |
| status: "stable", |
| }, |
| { |
| name: "SvgTransformOnNestedSvgElement", |
| status: "stable", |
| }, |
| { |
| name: "SynthesizedKeyboardEventsForAccessibilityActions", |
| status: "experimental", |
| }, |
| { |
| name: "SyntheticMouseHoverOverInactivePage", |
| status: "experimental", |
| }, |
| { |
| name: "SystemDefaultAccentColors", |
| status: "stable", |
| base_feature: "none", |
| |
| // This feature is controlled by the corresponding Chromium feature |
| // features::kUseSystemDefaultAccentColors. |
| }, |
| { |
| // This is used for emoji variation selectors support in system |
| // fallback matching. This is a workaround solution that helps to |
| // avoid incorrect font matching due to lack of cmap format 14 |
| // subtable in system emoji fonts on various platforms. |
| // This should be eventually removed when the custom emoji font |
| // is shipped with Chrome or when system emoji fonts will have |
| // cmap format 14 subtable. |
| name: "SystemFallbackEmojiVSSupport", |
| status: "stable", |
| }, |
| { |
| name: "SystemWakeLock", |
| status: "experimental", |
| }, |
| { |
| // Don't trigger table border rendering with only bordercolor attribute. |
| // This shipped in M146 and can be removed in M148. |
| name: "TableBorderColorNoImplicitBorder", |
| status: "stable", |
| }, |
| { |
| name: "TableIsAutoFixedLayout", |
| status: "test", |
| }, |
| { |
| name: "TabSizeAncestor", |
| status: "stable", |
| }, |
| { |
| name: "TabSizeWithSpacing", |
| status: "stable", |
| }, |
| { |
| // When checking the shadow tree during invoke(), |
| // use the invocationTargetInShadowTree saved before |
| // calling the listener. |
| // This was added in M142 and can be removed after M147. |
| // https://issues.chromium.org/issues/41408360 |
| name: "TargetInShadowDeterminedBeforeListener", |
| status: "stable", |
| }, |
| // For unit tests. |
| { |
| // This is for testing copied_from_base_feature_if. |
| // This is set in base/test/test_suite.cc. |
| name: "TestBlinkFeatureDefault", |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "TestFeature", |
| base_feature: "none", |
| browser_process_read_write_access: true, |
| }, |
| // For unit tests. |
| { |
| name: "TestFeatureDependent", |
| depends_on: ["TestFeatureImplied"], |
| base_feature: "none", |
| }, |
| // This is a feature used for testing what happens when an origin trial |
| // feature has browser-process read/write access. It should never be used |
| // in production code. |
| { |
| name: "TestFeatureForBrowserProcessReadWriteAccessOriginTrial", |
| origin_trial_feature_name: "TestFeatureForBrowserProcessReadWriteAccessOriginTrial", |
| base_feature: "none", |
| browser_process_read_write_access: true, |
| }, |
| // For unit tests. |
| { |
| name: "TestFeatureImplied", |
| implied_by: ["TestFeature"], |
| base_feature: "none", |
| }, |
| // For unit tests. |
| { |
| name: "TestFeatureProtected", |
| base_feature: "none", |
| is_protected_feature: true, |
| }, |
| // For unit tests. |
| { |
| name: "TestFeatureProtectedDependent", |
| depends_on: ["TestFeatureProtectedImplied"], |
| base_feature: "none", |
| is_protected_feature: true, |
| }, |
| // For unit tests. |
| { |
| name: "TestFeatureProtectedImplied", |
| implied_by: ["TestFeatureProtected"], |
| base_feature: "none", |
| is_protected_feature: true, |
| }, |
| // For unit tests. |
| { |
| name: "TestFeatureStable", |
| status: "stable", |
| }, |
| { |
| name: "TextDetector", |
| status: "experimental", |
| }, |
| { |
| // crbug.com/40812040 |
| name: "TextEmphasisLetterSpacing", |
| status: "stable", |
| }, |
| { |
| // crbug.com/368657256 |
| name: "TextEmphasisPositionAuto", |
| status: "experimental", |
| }, |
| { |
| name: "TextEmphasisPunctuationExceptions", |
| status: "stable" |
| }, |
| { |
| // crbug.com/442481227 |
| name: "TextEmphasisWithRuby", |
| status: "stable", |
| }, |
| { |
| name: "TextFragmentAPI", |
| status: "experimental", |
| }, |
| { |
| name: "TextFragmentIdentifiers", |
| origin_trial_feature_name: "TextFragmentIdentifiers", |
| public: true, |
| status: "stable", |
| base_feature: "TextFragmentAnchor", |
| }, |
| { |
| name: "TextFragmentTapOpensContextMenu", |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "TextMetricsBaselines", |
| status: "stable", |
| }, |
| { |
| // When enabled, text-overflow ellipsis is clipped when |
| // selection focus is inside the element, revealing the full text content. |
| // See https://crbug.com/40731275 |
| name: "TextOverflowClipWithSelection", |
| status: "test", |
| }, |
| { |
| // https://crbug.com/41492459 |
| name: "TextOverflowString", |
| status: "test", |
| }, |
| { |
| name: "TextScaleMetaTag", |
| status: "stable", |
| }, |
| { |
| // crbug.com/431660829 |
| name: "TextSpacingTrimFallback", |
| status: "stable", |
| }, |
| { |
| // crbug.com/431660829 |
| name: "TextSpacingTrimFallback2", |
| depends_on: ["TextSpacingTrimFallback"], |
| status: "test", |
| }, |
| { |
| // crbug.com/440947112 |
| name: "TextSpacingTrimFallbackChws", |
| depends_on: ["TextSpacingTrimFallback"], |
| status: "stable", |
| }, |
| { |
| // crbug.com/331123676 |
| name: "TextSpacingTrimYuGothicUI", |
| status: "stable", |
| }, |
| { |
| name: "ThrottledHistoryAPIThrowsSecurityError", |
| status: "test", |
| }, |
| { |
| // https://drafts.csswg.org/web-animations-2/#triggers |
| name: "TimelineTrigger", |
| status: "stable", |
| }, |
| { |
| name: "TimerThrottlingForBackgroundTabs", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "TimestampBasedCLSTracking", |
| status: "experimental" |
| }, |
| { |
| name: "TimeZoneChangeEvent", |
| status: "experimental", |
| }, |
| { |
| name: "TopicsAPI", |
| base_feature: "none", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "TopicsDocumentAPI", |
| base_feature: "none", |
| public: true, |
| status: "stable", |
| }, |
| { |
| // This feature allows calling the Topics API via an image |
| // attribute. |
| name: "TopicsImgAPI", |
| base_feature: "none", |
| public: true, |
| status: "experimental", |
| }, |
| // This feature allows touch dragging and a context menu to occur |
| // simultaneously, with the assumption that the menu is non-modal. Without |
| // this feature, a long-press touch gesture can start either a drag or a |
| // context-menu in Blink, not both (more precisely, a context menu is shown |
| // only if a drag cannot be started). |
| // This feature is enabled by default in Android, where |
| // TouchDragOnShortPress is not shipped due to interactions with the OS that |
| // caused issues in the behavior. |
| // Please see https://issues.chromium.org/40823294 |
| { |
| name: "TouchDragAndContextMenu", |
| base_feature: "none", |
| public: true, |
| }, |
| // This feature enables drag and drop using touch input devices. Replaces |
| // the old "--enable-touch-drag-drop" and "--disable-touch-drag-drop" |
| // switches. |
| // Enabled by default in Android, ChromeOS and Windows. |
| { |
| name: "TouchDragAndDrop", |
| base_feature: "none", |
| public: true, |
| }, |
| // This feature makes touch dragging to occur at the short-press gesture, |
| // which occurs right before the long-press gesture. |
| { |
| name: "TouchDragOnShortPress", |
| depends_on: ["TouchDragAndDrop"], |
| status: { |
| "Win": "stable", |
| }, |
| }, |
| // Many websites disable mouse support when touch APIs are available. We'd |
| // like to enable this always but can't until more websites fix this bug. |
| // Chromium sets this conditionally (eg. based on the presence of a |
| // touchscreen) in ApplyWebPreferences. "Touch events" themselves are always |
| // enabled since they're a feature always supported by Chrome. |
| { |
| name: "TouchEventFeatureDetection", |
| origin_trial_feature_name: "ForceTouchEventFeatureDetectionForInspector", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| // Set to reflect the kTouchTextEditingRedesign feature. |
| { |
| name: "TouchTextEditingRedesign", |
| base_feature: "none", |
| }, |
| { |
| name: "TransferableRTCDataChannel", |
| status: "stable", |
| }, |
| // This is conditionally set if the platform supports translation. |
| { |
| name: "TranslateService", |
| }, |
| { |
| name: "TranslationAPI", |
| status: { |
| "Win": "stable", |
| "Mac": "stable", |
| "Linux": "stable", |
| "ChromeOS": "stable", |
| "default": "", |
| }, |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "TranslationAPIForWorkers", |
| public: true, |
| }, |
| { |
| // Traverse flat tree to find start and end of paragraph in delete |
| // selection to handle slot distribution in details. |
| // See https://crbug.com/413595949 |
| name: "TraverseFlatTreeToHandleSlots", |
| status: "stable", |
| }, |
| { |
| // When enabled, treats the initial navigation to about:blank#fragment in |
| // an MHTML document as a cross-document navigation. |
| // |
| // Although it appears to be a same-document fragment navigation, MHTML |
| // loading replaces the initial empty document with a new committed |
| // document that has an opaque origin. |
| // |
| // This feature acts as a kill switch for https://crbug.com/40580002. |
| name: "TreatMhtmlInitialDocumentLoadsAsCrossDocument", |
| status: "stable", |
| }, |
| { |
| // When enabled, trusted types can be used to enforce sanitization & |
| // script running rules. |
| // For example, it can enforce that any HTML setter would go through a |
| // sanitizer. See https://github.com/w3c/trusted-types/issues/594 |
| name: "TrustedTypesCreateParserOptions", |
| status: "experimental", |
| depends_on: ["SanitizerAPI", "SetHTMLCanRunScripts"], |
| }, |
| { |
| name: "TrustedTypesFromLiteral", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // Adapt Trusted Types to its new spec, as part of HTML. |
| // Tracking bug: 330516530 |
| name: "TrustedTypesHTML", |
| status: "stable", |
| }, |
| { |
| name: "TrustedTypesUseCodeLike", |
| status: "experimental", |
| }, |
| { |
| name: "TwoPhaseViewTransition", |
| status: "test", |
| }, |
| { |
| name: "UnclosedFormControlIsInvalid", |
| status: "experimental", |
| }, |
| { |
| name: "UnencodedDigest", |
| status: "stable", |
| }, |
| { |
| name: "UnexposedTaskIds", |
| }, |
| // This is a kill switch for the unprefixed Web Speech API. |
| { |
| name: "UnprefixedSpeechRecognition", |
| status: "stable", |
| }, |
| { |
| name: "UnrestrictedMeasureUserAgentSpecificMemory", |
| }, |
| // This is a reverse OT used for a phased deprecation, on desktop |
| // https://crbug.com/1071424 |
| { |
| name: "UnrestrictedSharedArrayBuffer", |
| base_feature: "none", |
| origin_trial_feature_name: "UnrestrictedSharedArrayBuffer", |
| origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos"], |
| }, |
| // Enables using policy-controlled feature "usb-unrestricted" to allow |
| // isolated context to access protected USB interface classes and to |
| // bypass the USB blocklist. |
| { |
| name: "UnrestrictedUsb", |
| status: "stable", |
| depends_on: ["WebUSB"], |
| }, |
| // If enabled, notify the associated DisplayCutoutHost of changes in |
| // complex safe area constraint usage on the page. |
| // Only Android may make use of this feature currently. |
| { |
| name: "UpdateComplexSafaAreaConstraints", |
| status: { |
| "Android": "stable", |
| "default": "", |
| } |
| }, |
| // Fix for https://crbug.com/41329214. |
| { |
| name: "UpdateSelectionOnNodeInsertion" |
| }, |
| // Fix for https://crbug.com/436624850 |
| // Ensures trivial_text_ is updated after fragment creation from text |
| // by calling UpdateTrivialReplacementText() |
| { |
| name: "UpdateTrivalTextAfterFragmentCreationFromText", |
| status: "stable", |
| }, |
| { |
| name: "URLPatternCompareComponent", |
| status: "experimental", |
| }, |
| { |
| name: "URLPatternGenerate", |
| status: "experimental", |
| }, |
| { |
| name: "URLSearchParamsHasAndDeleteMultipleArgs", |
| status: "stable", |
| }, |
| { |
| name: "UseBeginFramePresentationFeedback", |
| status: { |
| "ChromeOS": "stable", |
| }, |
| }, |
| { |
| // Fix for https://crbug.com/454639396 |
| name: "UseBoundedSelectionOffsetsInEditContextDeleteOperations", |
| status: "stable" |
| }, |
| { |
| name: "UseLargestPaintedImageForLCPCandidate", |
| status: "stable", |
| }, |
| { |
| // Android currently uses low-quality interpolation, while other platforms |
| // default to medium-quality. This flag is for experimenting with changing |
| // the value on Android. See: https://crbug.com/374315986. |
| name: "UseLowQualityInterpolation", |
| status: { |
| "Android": "stable", |
| "default": "", |
| }, |
| }, |
| { |
| // This flag uses the original DOM text for input when the password |
| // echo is enabled to create the offset_map. |
| name: "UseOriginalDomOffsetsForOffsetMap", |
| status: "test", |
| }, |
| { |
| name: "UsePositionForPointInFlexibleBoxWithSingleChildElement", |
| status: "stable", |
| }, |
| { |
| name: "UsePositionIfIsVisuallyEquivalentCandidate", |
| status: "stable", |
| }, |
| { |
| name: "UserDefinedEntryPointTiming", |
| status: "experimental", |
| }, |
| { |
| name: "UserMediaElement", |
| status: "experimental", |
| origin_trial_feature_name: "UserMediaElement", |
| public: true, |
| origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos", "android"], |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| // Fix for https://crbug.com/421314614 |
| name: "UseSelectionInDOMTreeAnchorInExtendSelection", |
| status: "stable" |
| }, |
| { |
| name: "UseShadowHostStyleCheckEditable", |
| status: "stable", |
| }, |
| { |
| name: "UseUndoStepElementDispatchBeforeInput", |
| status: "stable", |
| }, |
| { |
| name: "V8IdleTasks", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // Whether a video element should automatically play fullscreen unless |
| // 'playsinline' is set. |
| name: "VideoAutoFullscreen", |
| settable_from_internals: true, |
| }, |
| { |
| name: "VideoFrameMetadataBackgroundBlur", |
| status: "experimental", |
| }, |
| { |
| name: "VideoFrameMetadataRtpTimestamp", |
| status: "stable", |
| }, |
| { |
| name: "VideoFullscreenOrientationLock", |
| }, |
| { |
| name: "VideoRotateToFullscreen", |
| }, |
| { |
| name: "VideoTrackGenerator", |
| status: "test", |
| }, |
| { |
| name: "VideoTrackGeneratorInWindow", |
| status: "test", |
| }, |
| { |
| name: "VideoTrackGeneratorInWorker", |
| }, |
| { |
| name: "ViewportHeightClientHintHeader", |
| status: "stable", |
| }, |
| { |
| name: "ViewportSegments", |
| status: "stable", |
| }, |
| { |
| name: "ViewTransitionAsyncFinished", |
| status: "stable", |
| }, |
| { |
| name: "ViewTransitionHoistBackdropFilterEffect", |
| status: "stable", |
| }, |
| { |
| name: "ViewTransitionLongCallbackTimeoutForTesting", |
| status: "test", |
| }, |
| { |
| name: "ViewTransitionUpdateLifecycleBeforeReady", |
| status: "stable", |
| }, |
| { |
| name: "ViewTransitionWaitUntil", |
| status: "stable", |
| }, |
| { |
| name: "VisibilityCollapseColumn", |
| }, |
| { |
| // Guards the removal of legacy visual rect inflation when mapping through |
| // nested 2D transforms. Prevents rotated or skewed descendants from being |
| // repeatedly expanded while computing visible bounds. |
| name: "VisualRectMappingFixForExpansion", |
| status: "stable", |
| }, |
| { |
| // The "WakeLock" feature was originally implied_by "ScreenWakeLock" and |
| // "SystemWakeLock". The former was removed after being promoted to |
| // stable, but we need to keep this feature around for code and IDLs that |
| // should work with both screen and system wake locks. |
| name: "WakeLock", |
| status: "stable", |
| implied_by: ["SystemWakeLock"], |
| }, |
| { |
| // When enabled, this will issue a warning to the console any time |
| // rendering is forced withing content-visibility subtrees (both |
| // content-visibility: auto and content-visibility: hidden). |
| name: "WarnOnContentVisibilityRenderAccess", |
| }, |
| { |
| // https://chromestatus.com/feature/5183481574850560 |
| name: "WebAppInstallation", |
| status: {"Android": "", "default": "test"}, |
| origin_trial_feature_name: "WebAppInstallation", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| // This needs to be kept as a runtime flag |
| // in order to disable the API in WebView. |
| name: "WebAppLaunchQueue", |
| status: "stable", |
| }, |
| { |
| name: "WebAppScopeExtensions", |
| origin_trial_feature_name: "WebAppScopeExtensions", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // If enabled, form controls will only render the OS accent color in a |
| // web app context. |
| name: "WebAppScopeSystemAccentColor", |
| status: "experimental", |
| }, |
| { |
| name: "WebAppTabStrip", |
| status: { |
| "ChromeOS": "stable", |
| "default": "experimental" |
| }, |
| base_feature: "DesktopPWAsTabStrip", |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "WebAppTabStripCustomizations", |
| status: { |
| "ChromeOS": "stable", |
| "default": "experimental" |
| }, |
| base_feature: "DesktopPWAsTabStripCustomizations", |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "WebAppTranslations", |
| status: "experimental", |
| base_feature: "WebAppEnableTranslations", |
| }, |
| { |
| // https://chromestatus.com/feature/6024844719947776 |
| name: "WebAssemblyCustomDescriptors", |
| origin_trial_feature_name: "WebAssemblyCustomDescriptors", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // WebAssembly JS Promise Integration, |
| // https://github.com/WebAssembly/js-promise-integration/blob/main/proposals/js-promise-integration |
| name: "WebAssemblyJSPromiseIntegration", |
| origin_trial_feature_name: "WebAssemblyJSPromiseIntegration", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // https://chromestatus.com/feature/5077691662073856 |
| name: "WebAudioBypassOutputBuffering", |
| status: { |
| "Win": "stable", |
| "ChromeOS": "stable", |
| "Mac": "stable", |
| "Linux": "stable", |
| }, |
| }, |
| { |
| // https://chromestatus.com/feature/5077691662073856 |
| // Allows an Enterprise Policy to override WebAudioBypassOutputBuffering |
| name: "WebAudioBypassOutputBufferingOptOut", |
| public: true, |
| }, |
| { |
| // https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-renderquantumsize |
| name: "WebAudioConfigurableRenderQuantum", |
| origin_trial_feature_name: "WebAudioConfigurableRenderQuantum", |
| status: "experimental", |
| }, |
| // WebAuth is disabled on Android versions prior to N (7.0) due to lack of |
| // supporting APIs, see runtime_features.cc. |
| { |
| name: "WebAuth", |
| status: "stable", |
| }, |
| // When enabled adds the authenticator attachment used for registration and |
| // authentication to the public key credential response. |
| { |
| name: "WebAuthAuthenticatorAttachment", |
| status: "test", |
| }, |
| // Prototyping https://github.com/w3c/webauthn/issues/2144 |
| { |
| name: "WebAuthenticationAmbient", |
| status: "experimental", |
| base_feature: "none", |
| public: true, |
| }, |
| // https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestationformats |
| { |
| name: "WebAuthenticationAttestationFormats", |
| status: "experimental", |
| origin_trial_feature_name: "WebAuthnAttestationFormats", |
| origin_trial_os: ["android"], |
| origin_trial_allows_third_party: true, |
| }, |
| // Enables providing a URL to retrieve a WebAuthn challenge. |
| // https://chromestatus.com/feature/5109012922892288 |
| { |
| name: "WebAuthenticationChallengeUrl", |
| status: "experimental", |
| }, |
| // Enables `uiMode` enumeration field in CredentialRequestOptions struct. |
| // and `get()` requests with `uiMode: 'immediate'`. |
| // See https://github.com/w3c/webauthn/issues/2228. |
| { |
| name: "WebAuthenticationImmediateGet", |
| status: "experimental", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "WebAuthenticationRemoteDesktopSupport", |
| base_feature: "none", |
| public: true, |
| }, |
| // https://w3c.github.io/webauthn/#sctn-supplemental-public-keys-extension |
| { |
| name: "WebAuthenticationSupplementalPubKeys", |
| status: "experimental", |
| }, |
| |
| // WebBluetooth is enabled by default on Android, ChromeOS, iOS, macOS and |
| // Windows. |
| { |
| name: "WebBluetooth", |
| public: true, |
| status: { |
| "Android": "stable", |
| "ChromeOS": "stable", |
| "iOS": "stable", |
| "Mac": "stable", |
| "Win": "stable", |
| "default": "experimental", |
| }, |
| base_feature: "none", |
| }, |
| { |
| name: "WebBluetoothGetDevices", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "WebBluetoothScanning", |
| status: "experimental", |
| }, |
| { |
| name: "WebBluetoothWatchAdvertisements", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "WebCodecsVideoEncoderBuffers", |
| status: "experimental", |
| }, |
| { |
| // Adding post-quantum algorithms (ML-DSA, ML-KEM) to WebCrypto. |
| // Also adding ChaCha20-Poly1305 while we're at it. |
| // |
| // https://chromestatus.com/feature/5198951632470016 |
| name: "WebCryptoPQC", |
| }, |
| { |
| name: "WebFontResizeLCP", |
| }, |
| { |
| name: "WebGLDeveloperExtensions", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // Draft WebGL extensions are deliberately not enabled by experimental web |
| // platform features. |
| name: "WebGLDraftExtensions", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "WebGLDrawingBufferStorage", |
| status: "stable", |
| }, |
| { |
| // Switch WebGL to use an experimental implementation where WebGL calls |
| // are translated in Blink, via ANGLE, to WebGPU calls. Note that this |
| // is not marked as "experimental" because it is not an incremental |
| // addition like other experimental features but a code switch, so we |
| // don't want to enable it when testing all "experimental Web platform |
| // features". |
| name: "WebGLOnWebGPU", |
| }, |
| { |
| // Launch feature flag for WebGPU Compatibility Mode |
| // https://chromestatus.com/feature/6436406437871616 |
| name: "WebGPUCompatibilityMode", |
| origin_trial_feature_name: "WebGPUCompatibilityMode", |
| status: "stable", |
| // Also enabled as part of all experimental WebGPU features. |
| implied_by: ["WebGPUExperimentalFeatures"], |
| }, |
| { |
| // WebGPU developer features are deliberately not enabled by experimental |
| // web platform features. |
| name: "WebGPUDeveloperFeatures", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // WebGPU experimental features are meant for features that would |
| // eventually land in the WebGPU spec. |
| name: "WebGPUExperimentalFeatures", |
| status: "experimental", |
| public: true, |
| }, |
| { |
| name: "WebGPUImmediatesFeature", |
| status: "experimental", |
| public: true, |
| implied_by: ["WebGPUExperimentalFeatures"], |
| }, |
| { |
| // Enables GPUBuffer::mapSync for WebGPU. |
| name: "WebGPUMapSyncOnWorkers", |
| status: "experimental", |
| public: true, |
| }, |
| { |
| // Allows handling of WebGPU related commands from the GPU process to |
| // happen on a separate thread. This is a pre-requisite for emulation of |
| // serialized asynchronous APIs, i.e. mapSync. |
| name: "WebGPUMultithreadDawnWireOnWorkers", |
| status: "experimental", |
| implied_by: ["WebGPUMapSyncOnWorkers"], |
| }, |
| { |
| name: "WebGPUTransientAttachment", |
| status: "stable", |
| }, |
| { |
| name: "WebHID", |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| // It is only enabled in extension environment for now. |
| name: "WebHIDOnServiceWorkers", |
| depends_on: ["WebHID"], |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "WebIdentityDigitalCredentials", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "WebIdentityDigitalCredentialsCreation", |
| origin_trial_feature_name: "WebIdentityDigitalCredentialsCreation", |
| origin_trial_allows_third_party: true, |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| // Kill switch for making BigInt handling in WebIDL use ToBigInt. |
| { |
| name: "WebIDLBigIntUsesToBigInt", |
| status: "stable", |
| }, |
| { |
| name: "WebMCP", |
| implied_by: ["WebMCPTesting"], |
| status: "experimental", |
| }, |
| { |
| name: "WebMCPDeclarativeFileInput", |
| depends_on: ["WebMCP"], |
| status: "test", |
| }, |
| { |
| // Support for form-associated custom elements in declarative |
| // WebMCP tools. |
| name: "WebMCPFormAssociatedCustomElements", |
| status: "experimental", |
| }, |
| { |
| name: "WebMCPTesting", |
| status: "experimental", |
| }, |
| { |
| name: "WebNFC", |
| public: true, |
| status: {"Android": "stable", "iOS": "stable", "default": "test"}, |
| base_feature: "none", |
| }, |
| { |
| name: "WebOTP", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "WebOTPAssertionFeaturePolicy", |
| depends_on: ["WebOTP"], |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| // https://wicg.github.io/web-preferences-api/ |
| name: "WebPreferences", |
| status: "experimental", |
| }, |
| { |
| name: "WebPrinting", |
| status: {"Android": "", "ChromeOS": "stable", "default": "test"}, |
| }, |
| // WebShare is enabled by default on Android (non-WebView), Win, ChromeOS, and Mac. |
| // This is done in chrome/renderer/chrome_content_renderer_client.cc to prevent |
| // making the API available to Linux and WebView. Ideally we would set the status |
| // below to "stable" once we can do so without significant test expectation duplication. |
| { |
| name: "WebShare", |
| public: true, |
| status: "test", |
| }, |
| { |
| name: "WebSocketStream", |
| status: "stable", |
| }, |
| { |
| name: "WebSocketStreamStandardBinaryChunkType", |
| status: "experimental", |
| }, |
| { |
| name: "WebSpeechRecognitionContext", |
| status: { |
| "Win": "stable", |
| "Mac": "stable", |
| "Linux": "stable", |
| "ChromeOS": "experimental", |
| "default": "", |
| }, |
| }, |
| { |
| name: "WebTransportApplicationProtocol", |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "WebTransportCustomCertificates", |
| origin_trial_feature_name: "WebTransportCustomCertificates", |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| // Note: enabling this without setting WebTransportCongestionControl to |
| // either BBRv1 or BBRv2 will produce poor bandwidth estimates. |
| name: "WebTransportStats", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // Fetches the WebUI code cache from the resource bundle asynchronously |
| // on a worker thread. |
| name: "WebUIBundledCodeCacheAsyncFetch", |
| status: "experimental", |
| }, |
| { |
| name: "WebUSB", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "WebUSBOnDedicatedWorkers", |
| status: "stable", |
| depends_on: ["WebUSB"], |
| }, |
| { |
| // It is only enabled in extension environment for now. |
| name: "WebUSBOnServiceWorkers", |
| depends_on: ["WebUSB"], |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "WebVTTRegions", |
| status: "experimental", |
| }, |
| { |
| name: "WebXR", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "WebXREnabledFeatures", |
| depends_on: ["WebXR"], |
| status: "stable", |
| }, |
| { |
| name: "WebXRFrameRate", |
| depends_on: ["WebXR"], |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "WebXRFrontFacing", |
| depends_on: ["WebXR"], |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "WebXRGPUBinding", |
| depends_on: ["WebXR"], |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "WebXRHitTestEntityTypes", |
| depends_on: ["WebXR"], |
| status: "experimental", |
| }, |
| { |
| name: "WebXRImageTracking", |
| depends_on: ["WebXR"], |
| origin_trial_feature_name: "WebXRImageTracking", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "WebXRLayers", |
| depends_on: ["WebXR"], |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "WebXRLayersCommon", |
| implied_by: ["WebXRLayers", "WebXRGPUBinding"], |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "WebXRPlaneDetection", |
| depends_on: ["WebXR"], |
| origin_trial_feature_name: "WebXRPlaneDetection", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "WebXRPoseMotionData", |
| depends_on: ["WebXR"], |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "WebXRSpecParity", |
| depends_on: ["WebXR"], |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "WebXRVisibilityMask", |
| depends_on: ["WebXR"], |
| status: "stable", |
| }, |
| { |
| name: "WidthAndHeightAsPresentationAttributesOnNestedSvg", |
| // Disabled due to web compat issues, see https://crbug.com/449170647. |
| status: "experimental", |
| }, |
| { |
| name: "WidthAndHeightStylePropertiesOnUseAndSymbol", |
| status: "experimental", |
| }, |
| { |
| name: "WindowControlsOverlay", |
| status: { "Android": "stable", "default": "stable" }, |
| base_feature: "AndroidWindowControlsOverlay", |
| }, |
| // If enabled, window.default[Ss]tatus will be supported. This is disabled |
| // by default, and is here to allow this behavior to be re-enabled via Finch |
| // in case of problems. This flag should be removed by Q1 2023, assuming |
| // no problems are encountered. |
| { |
| name: "WindowDefaultStatus", |
| }, |
| { |
| // Fixes an issue where Ctrl+Right Arrow skips punctuation before a newline. |
| name: "WordSkipSpacesPunctuationFix", |
| status: "stable", |
| }, |
| { |
| name: "WordSpacingWhiteSpacePre", |
| status: "stable", |
| }, |
| { |
| // Moving to the Rust parser requires deprecation of the niche feature |
| // of synchronously including external entities. |
| // https://crbug.com/455813733 |
| name: "XMLNoExternalEntities", |
| status: "stable", |
| }, |
| { |
| // Switches from XML parsing through libxml2 to parsing XML using the |
| // Rust xml crate. This makes parsing memory safe but breaks XSLT |
| // as the Rust XML parsing code paths is incompatible with libxslt. |
| // https://crbug.com/441911594 |
| name: "XMLParsingRust" |
| }, |
| { |
| // Enables the Rust XML parser for situations where we know |
| // no XSLT processing will be required. This covers usage of |
| // JS DOMParser API to parse XML, and usage of XMLHttpRequest |
| // with its responseXML document. |
| // https://crbug.com/466303347 |
| name: "XMLRustForNonXslt", |
| status: "experimental", |
| }, |
| { |
| name: "XMLSerializerConsistentDefaultNsDeclMatching", |
| status: "test", |
| }, |
| { |
| // Support XPath evaluation within Shadow DOM. |
| // This was added in M146 and can be removed after M148. |
| name: "XPathShadowDOMSupport", |
| status: "stable", |
| }, |
| { |
| // A feature flag that controls whether XSLT is supported by the browser. |
| // The current default state is XSLT-enabled. Note that there is a Finch |
| // trial underway that sets this flag to false for pre-stable channels. |
| // See XSLTSpecialTrial below. |
| // crbug.com/435623334. |
| name: "XSLT", |
| status: "stable", |
| public: true, |
| }, |
| { |
| // A feature flag that will be used for a "special trial" of disabling |
| // XSLT on pre-stable channels only. This flag does *not* control the |
| // actual enabled state of XSLT. It merely changes the console error that |
| // gets emitted if XSLT is disabled. When this flag is true, a "special |
| // trial run" message is used. |
| // crbug.com/435623334. |
| name: "XSLTSpecialTrial", |
| }, |
| ], |
| } |