| { |
| // 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: [ |
| { |
| // crbug.com/439682405 |
| name: "AbortByPlaceholderLayout", |
| status: "stable", |
| }, |
| { |
| // 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: "AIPageContentPaidContentAnnotation", |
| status: "stable" |
| }, |
| // In AIPageContentAgent::ComputeHitTestableNodesInViewport, the hit test |
| // may hit the same node multiple times, which causes issues with computing |
| // the final z-order of page elements. This flag will filter those |
| // duplicate results first before doing any further processing. |
| { |
| name: "AIPageContentZOrderEarlyFiltering", |
| status: "stable" |
| }, |
| { |
| 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", |
| }, |
| { |
| 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: "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: "AllowContentInitiatedDataUrlNavigations", |
| base_feature: "none", |
| }, |
| // Fix for https://crbug.com/41238177. |
| { |
| name: "AllowCopyingEmptyLastTableCell", |
| status: "stable", |
| }, |
| { |
| 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // Switch for https://crbug.com/445371140 which changes the initial value |
| // for position-visibility to 'anchors-visible' per current spec. |
| name: "AnchorsVisibleInitialValue", |
| 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: "experimental", |
| 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: "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", |
| }, |
| { |
| // Fix Asymmetric word navigation behavior on Windows when punctuation follows whitespace |
| // See https://crbug.com/40252703 |
| name: "AsymmetricWordBoundaryFix", |
| 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, |
| }, |
| { |
| name: "AudioContextOnError", |
| 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, |
| }, |
| { |
| name: "AutoDarkMode", |
| base_feature: "none", |
| origin_trial_feature_name: "AutoDarkMode", |
| }, |
| { |
| name: "AutomationControlled", |
| base_feature: "none", |
| public: true, |
| settable_from_internals: true, |
| }, |
| { |
| name: "AutoPictureInPictureVideoHeuristics", |
| status: "experimental", |
| }, |
| { |
| name: "AvoidForcedLayoutOnInvisibleDocumentClose", |
| status: "test", |
| }, |
| { // 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", |
| }, |
| { |
| // Killswitch for https://crbug.com/40947850. |
| name: "BackdropRootForClipPathWithBackdropFilter", |
| 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: "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, |
| }, |
| { |
| name: "BlinkLifecycleScriptForbidden", |
| }, |
| { |
| name: "BlinkRuntimeCallStats", |
| }, |
| { |
| // https://chromestatus.com/feature/4830298126417920 |
| name: "BlobBytes", |
| status: "experimental", |
| }, |
| { |
| name: "BlockingFocusWithoutUserActivation", |
| status: "experimental", |
| }, |
| // https://chromestatus.com/feature/5176753681203200 |
| { |
| name: "BorderRadiusCorrectionCoverageFactor", |
| status: "test", |
| }, |
| // crbug.com/1147998: Mouse and Pointer boundary event dispatch (i.e. dispatch |
| // of enter, leave, over, out events) tracks DOM node removal to fix event |
| // pairing on ancestor nodes. |
| { |
| name: "BoundaryEventDispatchTracksNodeRemoval", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "BrowserInitiatedAutomaticPictureInPicture", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| name: "BrowserVerifiedUserActivationKeyboard", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "BrowserVerifiedUserActivationMouse", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "BufferedBytesConsumerLimitSize", |
| status: "stable", |
| }, |
| { |
| name: "BuiltInAIAPI", |
| status: "experimental", |
| base_feature_status: "enabled", |
| // An OT feature name is required to satisfy `implied_by` build checks. |
| // The feature reuses AIPromptAPIMultimodalInput, but any origin trial |
| // features in the `implied_by` list will enable this feature as well. |
| origin_trial_feature_name: "AIPromptAPIMultimodalInput", |
| copied_from_base_feature_if: "overridden", |
| implied_by: [ |
| "AIPromptAPI", |
| "AIPromptAPIMultimodalInput", |
| "AIRewriterAPI", |
| "AISummarizationAPI", |
| "AIWriterAPI", |
| "LanguageDetectionAPI", |
| "TranslationAPI", |
| "AIProofreadingAPI", |
| ] |
| }, |
| { |
| // 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", |
| }, |
| { |
| 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: "Canvas2dImageChromium", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| 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", |
| }, |
| { |
| // Remove the restriction that drawElementImage can only draw immediate children |
| // of the canvas, and allow drawing canvas descendants. |
| name: "CanvasDrawElementInSubtree", |
| depends_on: ["CanvasDrawElement"], |
| }, |
| { |
| 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", |
| }, |
| { |
| // crbug.com/389726691. |
| name: "CanvasTextMemoryPressure", |
| status: "stable", |
| }, |
| { |
| // crbug.com/450531794. |
| name: "CanvasTextSwitchFrameOnFinalize", |
| status: "stable", |
| }, |
| { |
| // crbug.com/450531794. |
| name: "CanvasTextTexImage2DFix", |
| status: "stable", |
| }, |
| { |
| // 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"}, |
| }, |
| { |
| // crbug.com/446475645 |
| name: "CaretPositionFromPointTextareaFix", |
| status: "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", |
| }, |
| { |
| // If focus is not at canonical position then spellcheck should be deactivated. |
| // crbug.com/396485529 |
| name: "CheckForCanonicalPositionInIdleSpellCheck", |
| status: "stable", |
| }, |
| { |
| name: "CheckVisibilityExtraProperties", |
| 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // Allows top-level sites to restrict collection of high-entropy UA client |
| // hints (from 3Ps, or itself) via the getHighEntropyValues API. |
| // crbug.com/385161047 |
| name: "ClientHintUAHighEntropyValuesPermissionPolicy", |
| status: "test", |
| }, |
| { |
| // 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: "experimental", |
| }, |
| // 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: "CollectWidthAndHeightAsStylesForNestedSvg", |
| 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": "", |
| } |
| }, |
| { |
| 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: "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", |
| }, |
| { |
| name: "CookieDeprecationFacilitatedTesting", |
| base_feature: "none", |
| }, |
| { |
| 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" |
| }, |
| { |
| name: "CrashReportingStorageAPI", |
| status: "experimental", |
| 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", |
| }, |
| { |
| // Allows using counter() and counters() in alt text (after / in content property). |
| name: "CSSAltCounter", |
| status: "stable", |
| }, |
| { |
| // An update of anchor positioning (primarily how scrolling affects |
| // layout, but includes other inter-connected changes). |
| name: "CSSAnchorUpdate", |
| status: "stable", |
| }, |
| { |
| // Let transforms affect anchor() and anchor-size() functions. |
| name: "CSSAnchorWithTransforms", |
| status: "experimental", |
| }, |
| { |
| // Whether <image> values are allowed as counter style <symbol> |
| name: "CSSAtRuleCounterStyleImageSymbols", |
| }, |
| { |
| // https://drafts.csswg.org/css-counter-styles/#counter-style-speak-as |
| name: "CSSAtRuleCounterStyleSpeakAsDescriptor", |
| status: "test", |
| }, |
| // https://chromestatus.com/feature/5459864205393920 |
| { |
| // https://chromestatus.com/feature/5125388091260928 |
| name: "CSSBorderShape", |
| status: "experimental", |
| }, |
| { |
| // Support CSS Values Level 4 calc simplification and serialization |
| // as specified in the specs below. |
| // https://drafts.csswg.org/css-values-4/#calc-simplification |
| // https://drafts.csswg.org/css-values-4/#calc-serialize |
| name: "CSSCalcSimplificationAndSerialization", |
| }, |
| { |
| // https://chromestatus.com/feature/5082469066604544 |
| name: "CSSCaretAnimation", |
| status: "stable", |
| }, |
| { |
| // Need a feature entry |
| name: "CSSCaretShape", |
| status: "experimental", |
| }, |
| { |
| // 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: "CSSColorContrast", |
| status: "experimental", |
| }, |
| { |
| name: "CSSColorTypedOM", |
| status: "experimental", |
| }, |
| { |
| // https://github.com/w3c/csswg-drafts/issues/12090#issuecomment-3204775586 |
| name: "CSSContainerNameNotTreeScoped", |
| 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-borders-4/#corner-shaping |
| name: "CSSCornerShapeInsetBoxShadowFollowsContour", |
| status: "test", |
| }, |
| { |
| // https://drafts.csswg.org/css-borders-4/#corner-shaping |
| name: "CSSCornersShorthand", |
| 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", |
| }, |
| { |
| // https://drafts.csswg.org/css-anchor-position-2/#anchored |
| name: "CSSFallbackContainerQueries", |
| status: "stable", |
| }, |
| { |
| // crbug.com/417306102 |
| name: "CssFitWidthText", |
| status: "experimental", |
| }, |
| { |
| 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", |
| }, |
| { |
| // https://chromestatus.com/feature/5157805733183488 |
| name: "CSSGridGapSuppression", |
| status: "experimental", |
| depends_on: ["CSSGapDecoration"], |
| }, |
| { |
| // 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // CSS if() function for custom properties. Flag is used only for media |
| // queries support in conditions. |
| // https://drafts.csswg.org/css-values-5/#if-notation. |
| name: "CSSInlineIfForMediaQueries", |
| status: "stable", |
| }, |
| { |
| // CSS if() function for custom properties. Flag is used only for style |
| // queries support in conditions. |
| // https://drafts.csswg.org/css-values-5/#if-notation. |
| name: "CSSInlineIfForStyleQueries", |
| status: "stable", |
| }, |
| { |
| // CSS if() function for custom properties. Flag is used only for supports |
| // queries support in conditions. |
| // https://drafts.csswg.org/css-values-5/#if-notation. |
| name: "CSSInlineIfForSupportsQueries", |
| status: "stable", |
| }, |
| { |
| // https://chromestatus.com/feature/6289894144212992 |
| name: "CSSKeyframesRuleLength", |
| status: "stable", |
| }, |
| { |
| name: "CSSLayoutAPI", |
| status: "experimental", |
| }, |
| { |
| name: "CSSLetterAndWordSpacingPercentage", |
| status: "experimental", |
| }, |
| { |
| name: "CSSLineClamp", |
| status: "experimental", |
| }, |
| { |
| name: "CSSLineClampLineBreakingEllipsis", |
| depends_on: ["CSSLineClamp"], |
| }, |
| { |
| // Allows pseudo-element selectors within logical combination pseudo- |
| // classes, e.g. :is(div::before). |
| // |
| // https://crbug.com/444386484 |
| name: "CSSLogicalCombinationPseudo", |
| }, |
| { |
| name: "CSSMarkerNestedPseudoElement", |
| status: "stable", |
| }, |
| { |
| name: "CSSMasonryLayout", |
| status: "experimental", |
| public: true, |
| }, |
| // https://drafts.csswg.org/css-values-5/#progress |
| // media-progress() |
| { |
| name: "CSSMediaProgressNotation", |
| status: "experimental", |
| }, |
| { |
| name: "CSSMixins", |
| status: "experimental", |
| }, |
| { |
| name: "CSSNestedPseudoElements", |
| status: "stable", |
| }, |
| { |
| // https://chromestatus.com/feature/5261280285949952 |
| name: "CSSOverscrollGestures", |
| status: "test", |
| }, |
| { |
| 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: "experimental", |
| }, |
| { |
| // 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"], |
| }, |
| { |
| // 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"], |
| }, |
| { |
| // https://drafts.csswg.org/css-scroll-snap-2#scroll-start |
| name: "CSSScrollStart", |
| status: "test", |
| }, |
| { |
| // 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", |
| }, |
| { |
| name: "CSSSignRelatedFunctions", |
| status: "stable", |
| }, |
| { |
| name: "CSSSupportsAtRuleFunction", |
| status: "experimental", |
| }, |
| { |
| name: "CSSSupportsForImportRules", |
| status: "stable", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // crbug.com/1463890: CSS `text-autospace` property |
| name: "CSSTextAutoSpace", |
| status: "stable", |
| }, |
| { |
| // crbug.com/40321528 |
| name: "CssTextJustify", |
| status: "test", |
| }, |
| { |
| // crbug.com/1463890, crbug.com/1463891: CSS `text-spacing` shorthand |
| name: "CSSTextSpacing", |
| depends_on: ["CSSTextAutoSpace"], |
| status: "test", |
| }, |
| { |
| // https://issues.chromium.org/41297237: CSS `text-transform: full-width` value |
| name: "CSSTextTransformFullWidth", |
| status: "experimental", |
| }, |
| { |
| // Support for tree-scoped [1] timeline names (e.g. produced by |
| // scroll-timeline). |
| // |
| // [1] https://drafts.csswg.org/css-scoping-1/#shadow-names |
| name: "CSSTreeScopedTimelines", |
| }, |
| { |
| name: "CSSTypedArithmetic", |
| status: "stable", |
| }, |
| // Support for `user-select:contain`. |
| { |
| name: "CSSUserSelectContain", |
| status: "test", |
| }, |
| { |
| name: "CSSVideoDynamicRangeMediaQueries", |
| status: "experimental", |
| }, |
| { |
| // https://chromestatus.com/feature/4850737974345728 |
| name: "CSSViewTransitionAutoName", |
| status: "experimental", |
| }, |
| { |
| // appearance:base-select for <select multiple> and <select size=n> |
| // https://issues.chromium.org/issues/357649033 |
| name: "CustomizableSelectInPage", |
| status: "experimental", |
| depends_on: ["SelectMobileDesktopParity"], |
| }, |
| { |
| // appearance:base-select for <select multiple size=1> with a picker. |
| name: "CustomizableSelectMultiplePopup", |
| status: "experimental", |
| depends_on: ["CustomizableSelectInPage"], |
| }, |
| // see crbug.com/341313078 |
| { |
| name: "CustomScrollbarApplyMinimumThumbLength", |
| status: "stable", |
| }, |
| { |
| // https://chromestatus.com/feature/5134293578285056 |
| name: "Database", |
| }, |
| // https://crbug.com/448174611 |
| { |
| name: "DeclarativeCSSModules", |
| status: "test", |
| }, |
| { |
| // https://crbug.com/393631108 |
| name: "DecoupleComputedBorderWidthFromStyle", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| // https://crbug.com/393631108 |
| name: "DecoupleResolvedColumnRuleWidthFromStyle", |
| public: true, |
| status: "experimental", |
| }, |
| { |
| // Killswitch for https://crbug.com/400317114 fix. |
| // This lands in M142, and the flag can be removed in M144. |
| name: "DelegatesFocusTextControlInputFix", |
| status: "stable", |
| }, |
| { |
| name: "DeprecateCursorMovementIterator", |
| 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: "DesktopPWAsSubApps", |
| status: "test", |
| }, |
| { |
| name: "DeviceAttributes", |
| status: { |
| "ChromeOS": "stable", |
| "default": "experimental", |
| }, |
| }, |
| { |
| name: "DeviceAttributesPermissionPolicy", |
| status: "stable", |
| }, |
| { |
| name: "DeviceBoundSessionCredentials", |
| origin_trial_feature_name: "DeviceBoundSessionCredentials", |
| origin_trial_os: ["win", "linux", "mac"], |
| status: "experimental", |
| // Killswitch is net::features::kDeviceBoundSessions |
| base_feature: "none", |
| }, |
| { |
| name: "DeviceBoundSessionCredentials2", |
| origin_trial_feature_name: "DeviceBoundSessionCredentials2", |
| origin_trial_os: ["win", "linux", "mac"], |
| status: "experimental", |
| // Killswitch is net::features::kDeviceBoundSessions |
| base_feature: "none", |
| }, |
| { |
| 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, |
| }, |
| { |
| 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", |
| }, |
| { |
| // `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 |
| // document.patch, <template patchfor> etc. |
| { |
| name: "DocumentPatching", |
| status: { |
| "default": "test", |
| }, |
| }, |
| { |
| 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", |
| }, |
| { |
| 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", |
| }, |
| { |
| name: "DOMPartsAPI", |
| status: "experimental", |
| implied_by: ["DOMPartsAPIMinimal"], |
| }, |
| { |
| name: "DOMPartsAPIMinimal", |
| }, |
| { |
| // 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/379170477 |
| name: "EditContextHandleTextOrSelectionUpdateDuringComposition", |
| status: "test", |
| }, |
| { |
| name: "EditEmojiUnicode11", |
| status: "stable", |
| }, |
| { |
| public: true, |
| name: "ElementCapture", |
| status: {"Android": "experimental", "iOS": "", "default": "stable"}, |
| }, |
| { |
| name: "ElementInnerTextHandleFirstLineStyle", |
| status: "stable", |
| }, |
| { |
| // ElementInternals.type allows web authors to create autonomous |
| // custom elements that inherit specific behaviors from native |
| // HTML elements, while maintaining the ability to use shadow DOM |
| // and custom rendering. |
| // crbug.com/422947646 |
| // https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/ElementInternalsType/explainer.md |
| name: "ElementInternalsDotType", |
| status: "experimental", |
| }, |
| { |
| // crbug.com/447267214 |
| name: "EmojiJustification", |
| status: "stable", |
| }, |
| { |
| name: "EmphasisMarkShapeCache", |
| 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: "experimental", |
| depends_on: ["CSSPseudoElementInterface"], |
| }, |
| { |
| // See: crbug.com/40887145 |
| "name": "EventTargetStringIdentifierUsesQuotes", |
| "status": "stable", |
| }, |
| { |
| name: "EventTimingInteractionCount", |
| status: "experimental", |
| }, |
| { |
| 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: "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: "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": "experimental", |
| "iOS": "experimental", |
| "default": "stable", |
| }, |
| }, |
| { |
| // The unobserve function of the FileSystemObserver. |
| // See https://crbug.com/321980469. |
| name: "FileSystemObserverUnobserve", |
| status: "experimental", |
| }, |
| { |
| // crbug.com/438220615 |
| name: "FindAcrossParagraphsInTextarea", |
| status: "stable", |
| }, |
| { |
| name: "FindFirstMisspellingEndWhenNonEditable", |
| status: "stable", |
| }, |
| { |
| name: "FirstLineOnListItem", |
| status: "stable", |
| }, |
| { |
| name: "FirstLineTextMetrics", |
| status: "stable", |
| }, |
| { |
| // crbug.com/411739501 |
| name: "FixNextPositionCalculationInInsertList", |
| 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", |
| }, |
| { |
| name: "FluentOverlayScrollbars", |
| // The associated base feature is defined in |
| // ui/native_theme/features/native_theme_features.cc. |
| base_feature: "none", |
| }, |
| { |
| name: "FluentScrollbars", |
| // The associated base feature is defined in |
| // ui/native_theme/features/native_theme_features.cc. |
| base_feature: "none", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // The FormControlRange interface allows web authors to create |
| // Range-like objects of the value of <textarea> and <input> |
| // elements. |
| // crbug.com/421421332 |
| // https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/FormControlRange/explainer.md |
| name: "FormControlRange", |
| status: "test", |
| }, |
| { |
| // 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, |
| }, |
| { |
| name: "FreezeFramesOnVisibility", |
| status: "experimental", |
| }, |
| { |
| name: "GamepadMultitouch", |
| status: "experimental", |
| public: true, |
| }, |
| { |
| name: "GamepadWindowEventHandlers", |
| status: "stable", |
| }, |
| { |
| // Tracking bug for the implementation: https://crbug.com/430204832 |
| name: "GeolocationElement", |
| status: "experimental", |
| public: true, |
| }, |
| { |
| 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", |
| }, |
| { |
| 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", |
| }, |
| { |
| name: "HighlightByLayoutObject", |
| status: "stable", |
| }, |
| { |
| name: "HighlightPointerEvents", |
| }, |
| { |
| name: "HighlightsFromPoint", |
| status: "stable", |
| }, |
| { |
| // Moved from status stable to test due to https://crbug.com/456164629. |
| name: "HitTestBorderRadiusForStackingContext", |
| status: "test", |
| }, |
| { |
| name: "HrefTranslate", |
| depends_on: ["TranslateService"], |
| origin_trial_feature_name: "HrefTranslate", |
| status: "stable", |
| base_feature: "none", |
| }, |
| // The `anchor` attribute, supported by both anchor positioning and the |
| // popover API. |
| { |
| name: "HTMLAnchorAttribute", |
| status: "experimental", |
| }, |
| // 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", |
| }, |
| // Adds support for the 'request-close' command. |
| // https://open-ui.org/components/invokers.explainer/ |
| { |
| name: "HTMLCommandRequestClose", |
| status: "stable", |
| }, |
| { |
| name: "HTMLElementScrollParent", |
| status: "experimental", |
| }, |
| // 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", |
| }, |
| { |
| 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: "IndexedDbGetAllRecords", |
| status: "stable", |
| }, |
| { |
| 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // crbug.com/1420675 |
| name: "InsertLineBreakIfPhrasingContent", |
| status: "stable", |
| }, |
| { |
| name: "InstalledApp", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "InstallElement", |
| status: "experimental" |
| }, |
| { |
| 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", |
| }, |
| { |
| name: "LangAttributeAwareFormControlUI", |
| settable_from_internals: true, |
| }, |
| { |
| name: "LanguageDetectionAPI", |
| status: { |
| "Win": "stable", |
| "Mac": "stable", |
| "Linux": "stable", |
| "ChromeOS": "stable", |
| "Android": "test", |
| "default": "", |
| }, |
| origin_trial_feature_name: "LanguageDetectionAPI", |
| origin_trial_allows_third_party: true, |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "LanguageDetectionAPIForWorkers", |
| public: true, |
| }, |
| { |
| name: "LayoutFlexNewRowAlgorithm", |
| status: "stable", |
| }, |
| { |
| name: "LayoutIgnoreMarginsForSticky", |
| }, |
| { |
| name: "LayoutImageEmptyNaturalSizeBeforeSizeAvailable", |
| status: "stable", |
| }, |
| { |
| // 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", |
| }, |
| { |
| name: "LimitThirdPartyCookies", |
| origin_trial_feature_name: "LimitThirdPartyCookies", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // 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: "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, |
| }, |
| { |
| // Enable sourceCharPosition for the invoke-type resolve-promise |
| // https://issues.chromium.org/issues/381529126 |
| name: "LongAnimationFrameSourceCharPosition", |
| status: "experimental", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // 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", |
| // 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: "MaskDeserializationTimeForCrossOriginMessages", |
| status: "stable", |
| }, |
| { |
| // Enables mirroring for stretchy and large MathML operators when |
| // the text direction is right to left. |
| name: "MathMLOperatorRTLMirroring", |
| status: "experimental", |
| }, |
| { |
| // 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: "MediaSessionEnterPictureInPicture", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "MediaSourceExperimental", |
| status: "experimental", |
| }, |
| { |
| name: "MediaSourceExtensionsForWebCodecs", |
| status: "experimental", |
| base_feature: "none", |
| origin_trial_feature_name: "MediaSourceExtensionsForWebCodecs", |
| }, |
| { |
| name: "MediaSourceNewAbortAndDuration", |
| status: "stable", |
| }, |
| { |
| 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", |
| }, |
| { |
| 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", |
| }, |
| { |
| // Multicast in Direct Sockets API. |
| // https://github.com/WICG/direct-sockets/blob/main/docs/multicast-explainer.md |
| name: "MulticastInDirectSockets", |
| status: "stable", |
| depends_on: ["DirectSockets"] |
| }, |
| { |
| name: "MulticolColumnWrapping", |
| status: "experimental", |
| }, |
| { |
| name: "NavigateEventCanTransition", |
| }, |
| { |
| name: "NavigateEventCommitBehavior", |
| status: "stable", |
| }, |
| { |
| name: "NavigateEventPopstateLimitations", |
| status: "stable", |
| }, |
| { |
| name: "NavigateEventSourceElement", |
| status: "stable", |
| }, |
| { |
| name: "NavigationId", |
| status: "experimental", |
| origin_trial_feature_name: "SoftNavigationHeuristics", |
| implied_by: ["SoftNavigationHeuristics"], |
| }, |
| { |
| name: "NavigationTransitionDestination", |
| status: "experimental", |
| }, |
| { |
| name: "NavigatorContentUtils", |
| // Android does not yet support NavigatorContentUtils. |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| // crbug.com/437612643 |
| name: "NestedRubyMinMaxFix", |
| status: "stable", |
| }, |
| { |
| name: "NestedViewTransition", |
| status: "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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| name: "OffsetParentNewSpecBehaviorForFixedPosition", |
| status: "stable", |
| }, |
| { |
| name: "OmitBlurEventOnElementRemoval", |
| status: "test" |
| }, |
| { |
| name: "OnDeviceWebSpeechAvailable", |
| status: "stable", |
| }, |
| { |
| // 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", |
| }, |
| { |
| name: "OrientationEvent", |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "OriginAPI", |
| status: "experimental", |
| }, |
| { |
| // Originating elements are implicit anchors for pseudo elements. |
| // This is a spec change since anchor positioning was shipped in Blink. |
| // https://issues.chromium.org/issues/408223892 |
| name: "OriginatingElementIsImplicitAnchor", |
| status: "experimental", |
| }, |
| { |
| 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: "OverscrollCustomization", |
| 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: "experimental", |
| }, |
| { |
| 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: "PartitionedPopins", |
| status: "experimental", |
| }, |
| { |
| 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, |
| }, |
| { |
| // Enables performance.mark('mark_feature_usage'): crbug.com/1517170 |
| name: "PerformanceMarkFeatureUsage", |
| status: "experimental" |
| }, |
| { |
| name: "PerformanceNavigateSystemEntropy", |
| }, |
| { |
| name: "PerformanceNavigationTimingConfidence", |
| origin_trial_feature_name: "PerformanceNavigationTimingConfidence", |
| status: "experimental", |
| }, |
| { |
| name: "PeriodicBackgroundSync", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "PerMethodCanMakePaymentQuota", |
| origin_trial_feature_name: "PerMethodCanMakePaymentQuota", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // Tracking bug for the implementation: https://crbug.com/1462930 |
| name: "PermissionElement", |
| origin_trial_feature_name: "PermissionElement", |
| origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos", "android"], |
| status: "experimental", |
| public: true, |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| implied_by: ["GeolocationElement", "InstallElement"], |
| }, |
| { |
| // Tracking bug for the implementation: crbug.com/352249547 |
| // This flag adds having the option to show an icon in the Permission |
| // element, if developers want to. |
| // The flag will enable us to land the feature over multiple CLs, and will |
| // be enabled after the feature has been fully implemented. |
| name: "PermissionElementIcon", |
| status: "stable", |
| depends_on: ["PermissionElement"], |
| }, |
| { |
| name: "Permissions", |
| public: true, |
| status: "stable", |
| 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", |
| }, |
| { |
| // https://crbug.com/404479704 |
| name: "PointerRawUpdateOnlyInSecureContext", |
| status: "stable", |
| }, |
| { |
| // Kill switch for removing *x-self*, *y-self* as valid values. |
| // Enabling this flag will make *x-self* and *y-self* aliases of |
| // *self-x* and *self-y* at parse time. |
| // https://crbug.com/448642325 |
| name: "PositionAreaXYSelf", |
| }, |
| { |
| 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", |
| }, |
| { |
| name: "PrerenderUntilScript", |
| public: true, |
| origin_trial_feature_name: "PrerenderUntilScript", |
| status: "experimental", |
| }, |
| { |
| name: "Presentation", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| // When enabled, preserves dropEffect in drag event set during dragover |
| // events. |
| 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", |
| }, |
| // Promisify programmatic scroll methods in Element and Window. |
| // https://crbug.com/41406914 |
| { |
| name: "ProgrammaticScrollPromise", |
| }, |
| { |
| // 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", |
| }, |
| { |
| 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", |
| }, |
| { |
| 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 deviceModel will be reduced to "K" and the |
| // androidVersion will be reduced to a static "10" string in android |
| // User-Agent string. |
| name: "ReduceUserAgentAndroidVersionDeviceModel", |
| depends_on: ["ReduceUserAgentMinorVersion"], |
| status: {"Android": "stable"}, |
| }, |
| // If enabled, the platform version in User-Agent Data will be removed. |
| // This feature is limited to Linux only. |
| { |
| name: "ReduceUserAgentDataLinuxPlatformVersion", |
| status: {"Linux": "experimental"}, |
| }, |
| // If enabled, the minor version of the User-Agent string will be reduced. |
| // This User-Agent Reduction feature has been enabled starting from M101, |
| // but we still keep this flag for future phase tests. |
| { |
| name: "ReduceUserAgentMinorVersion", |
| status: "stable", |
| }, |
| { |
| // If enabled, the platform and oscpu of the User-Agent string will be |
| // reduced. |
| name: "ReduceUserAgentPlatformOsCpu", |
| depends_on: ["ReduceUserAgentMinorVersion"], |
| status: {"Android": "", "default": "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. |
| }, |
| { |
| // This flag allows more characters to be accepted as valid names in the |
| // createElement and attribute related DOM APIs. |
| // https://github.com/whatwg/dom/pull/1079 |
| // http://crbug.com/40228234 |
| // https://chromestatus.com/feature/6278918763708416 |
| name: "RelaxDOMValidNames", |
| status: "stable", |
| }, |
| { |
| 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/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", |
| }, |
| { |
| // See https://crbug.com/40896371 for details. |
| name: "ReplacedElementCursorPositioningFix", |
| status: "stable", |
| }, |
| { |
| name: "ReportFirstFrameTimeAsRenderTime", |
| status: "test", |
| }, |
| { |
| name: "ReportLayoutShiftRectsInCssPixels", |
| 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: "ResponsiveIframes", |
| status: "experimental", |
| }, |
| { |
| name: "RestrictGamepadAccess", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "RestrictOwnAudio", |
| status: "stable", |
| }, |
| { |
| // Constrains text selections to stay within table cell boundaries |
| // (e.g., triple-click paragraph selection) |
| // See crbug.com/40852213. |
| name: "RestrictTableCellSelectionToBoundary", |
| 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: "test", |
| }, |
| { |
| name: "RtcAudioJitterBufferMaxPackets", |
| origin_trial_feature_name: "RtcAudioJitterBufferMaxPackets", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "RTCDataChannelPriority", |
| status: "experimental", |
| }, |
| { |
| 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", |
| }, |
| { |
| // This flag is for fixing validation error |
| // for valid email address using IDN. |
| // This may ship in M142, and this flag can be |
| // removed in M144 pending no issues. |
| // See https://issues.chromium.org/issues/429490608 |
| name: "SanitizeIDNEmailFormInput", |
| status: "stable", |
| }, |
| { |
| // Spec: https://wicg.github.io/sanitizer-api/ |
| // Tracking bug: crbug.com/356601280 |
| name: "SanitizerAPI", |
| status: "test", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // https://github.com/WICG/view-transitions/blob/main/scoped-transitions.md |
| name: "ScopedViewTransitions", |
| depends_on: ["CSSAnchorWithTransforms", "OriginatingElementIsImplicitAnchor"], |
| status: "experimental", |
| }, |
| { |
| // https://github.com/w3c/window-management/issues/149 |
| name: "ScreenDetailedHdrHeadroom", |
| status: "experimental", |
| }, |
| // WebSpeech API with both speech recognition and synthesis functionality |
| // is not fully enabled on all platforms. |
| { |
| name: "ScriptedSpeechRecognition", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "ScriptedSpeechSynthesis", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| // crbug.com/378692756 |
| name: "ScriptRunIteratorCombiningMarkAlways", |
| status: "stable", |
| }, |
| { |
| name: "ScriptRunIteratorCombiningMarks", |
| }, |
| { |
| name: "ScrollAnchorPriorityCandidateSubtree", |
| status: "stable", |
| }, |
| { |
| name: "ScrollbarColor", |
| 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", |
| }, |
| // TODO(crbug.com/401443093): Remove after M141. |
| { |
| name: "ScrollIntoViewSelfScrollFix", |
| 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: "test", |
| }, |
| // 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", |
| }, |
| // Allows CSS styling of browser search results. |
| // https://issues.chromium.org/issues/339298411 |
| // https://chromestatus.com/feature/5195073796177920 |
| { |
| name: "SearchTextHighlightPseudo", |
| status: "experimental", |
| }, |
| // 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", |
| }, |
| { |
| name: "SecurePaymentConfirmationAvailabilityAPI", |
| status: "stable", |
| }, |
| { |
| name: "SecurePaymentConfirmationBrowserBoundKeys", |
| status: { |
| "Android": "stable", |
| "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", |
| "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", |
| }, |
| { |
| // Prevents the <select> element from tracking <option>s inside a nested |
| // <datalist>. Shipping in M144, should be safe to remove in M146. |
| name: "SelectDisallowDatalist", |
| status: "stable", |
| }, |
| { |
| // The selectedcontentelement attribute is for connecting select elements |
| // to arbitrary <selectedcontent> elements. |
| // https://github.com/openui/open-ui/issues/1063 |
| name: "SelectedcontentelementAttribute", |
| status: "test", |
| }, |
| { |
| // 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: "experimental", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // Makes the logic to choose between ListBox (in-page) or MenuList |
| // (dropdown) select element modes the same between mobile and desktop. |
| // Without this flag, mobile will always use MenuList and desktop always |
| // makes <select multiple> a ListBox. |
| // https://chromestatus.com/feature/5412736871825408 |
| // https://issues.chromium.org/issues/439964654 |
| name: "SelectMobileDesktopParity", |
| status: "stable", |
| }, |
| { |
| name: "SendBeaconThrowForBlobWithNonSimpleType", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| 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: "test", |
| }, |
| { |
| 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", |
| }, |
| { |
| name: "SetSequentialFocusStartingPoint", |
| status: "experimental", |
| }, |
| { |
| // 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: "SharedAutofill", |
| public: true, |
| status: "test", |
| base_feature: "none", |
| }, |
| { |
| 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: "experimental", |
| public: true, |
| }, |
| { |
| name: "SignatureBasedInlineIntegrity", |
| status: "experimental", |
| }, |
| { |
| name: "SignatureBasedIntegrity", |
| status: "stable", |
| }, |
| { |
| 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", |
| }, |
| { |
| name: "SkipOofItemForBreakCandidate", |
| 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: "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: "SoftNavigationDetectionAdvancedPaintAttribution", |
| depends_on: ["SoftNavigationDetection"], |
| }, |
| { |
| name: "SoftNavigationDetectionPrePaintBasedAttribution", |
| status: "stable", |
| depends_on: ["SoftNavigationDetection"], |
| }, |
| { |
| name: "SoftNavigationHeuristics", |
| status: "experimental", |
| origin_trial_allows_third_party: true, |
| origin_trial_feature_name: "SoftNavigationHeuristics", |
| }, |
| { |
| // 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", |
| }, |
| { |
| name: "SpeculationRulesPrefetchWithSubresources", |
| }, |
| { |
| 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", |
| }, |
| { |
| // 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", |
| }, |
| // Enforces that MIME types matched via *+json wildcards have HTTP token |
| // compliant type and subtype (rejects invalid characters) in addition to |
| // requiring a single slash. |
| { |
| name: "StrictJsonMimeTypeTokenValidation", |
| status: "stable", |
| }, |
| { |
| name: "StrictMimeTypesForWorkers", |
| status: "experimental", |
| }, |
| { |
| name: "StylusHandwriting", |
| base_feature: "none", |
| }, |
| { |
| name: "Svg2Cascade", |
| }, |
| { |
| name: "SvgAnchorElementAttributes", |
| status: "experimental", |
| }, |
| { |
| name: "SvgAnchorElementDownloadAttribute", |
| status: "stable", |
| }, |
| { |
| name: "SvgAvoidCullingElementsWithTransformOperations", |
| 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: "experimental", |
| }, |
| { |
| name: "SvgFilterPaintsForHiddenContent", |
| status: "stable", |
| }, |
| { |
| name: "SvgIgnoreNegativeEllipseRadii", |
| status: "stable", |
| }, |
| { |
| // Disable "external" XSLT stylesheets in SVGImage. |
| name: "SvgImageNoExternalXslt", |
| status: "stable", |
| }, |
| { |
| name: "SvgInlineRootPixelSnappingScaleAdjustment", |
| status: "test", |
| }, |
| { |
| name: "SvgPartitionSVGDocumentResourcesInMemoryCache", |
| status: "stable", |
| }, |
| { |
| name: "SvgScriptElementAsyncAttribute", |
| status: "stable", |
| }, |
| { |
| name: "SvgSizingWithPreserveAspectRatioNone", |
| status: "experimental", |
| }, |
| { |
| name: "SvgSmilPruneInstanceTimes", |
| status: "stable", |
| }, |
| { |
| name: "SvgTransformOnNestedSvgElement", |
| status: "stable", |
| }, |
| { |
| name: "SynthesizedKeyboardEventsForAccessibilityActions", |
| 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", |
| }, |
| { |
| name: "TableIsAutoFixedLayout", |
| status: "test", |
| }, |
| { |
| name: "TabSizeAncestor", |
| status: "stable", |
| }, |
| { |
| name: "TabSizeWithSpacing", |
| status: "stable", |
| }, |
| { |
| name: "TabWidthNegativePosition", |
| 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 M144. |
| // 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", |
| }, |
| { |
| // crbug.com/442551790 |
| name: "TextareaLastLineRemovalFix", |
| status: "stable", |
| }, |
| { |
| // crbug.com/414858401 |
| name: "TextareaLineEndingsAsBr", |
| status: "stable", |
| }, |
| { |
| // crbug.com/414858401 |
| name: "TextareaMultipleIfcs", |
| status: "stable", |
| depends_on: ["TextareaLineEndingsAsBr"], |
| }, |
| { |
| 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", |
| }, |
| { |
| // https://crbug.com/41492459 |
| name: "TextOverflowString", |
| status: "test", |
| }, |
| { |
| // crbug.com/431660829 |
| name: "TextSpacingTrimFallback", |
| status: "stable", |
| }, |
| { |
| // crbug.com/431660829 |
| name: "TextSpacingTrimFallback2", |
| depends_on: ["TextSpacingTrimFallback"], |
| status: "test", |
| }, |
| { |
| // crbug.com/331123676 |
| name: "TextSpacingTrimYuGothicUI", |
| status: "stable", |
| }, |
| // This feature is used to inform the renderer of a user bypass from the |
| // browser process to disable third-party storage partitioning. |
| { |
| name: "ThirdPartyStoragePartitioningUserBypass", |
| browser_process_read_write_access: true, |
| base_feature: "none", |
| }, |
| { |
| // https://drafts.csswg.org/web-animations-2/#triggers |
| name: "TimelineTrigger", |
| status: "experimental", |
| }, |
| { |
| 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", |
| }, |
| { |
| name: "TopLevelTpcd", |
| origin_trial_feature_name: "TopLevelTpcd", |
| origin_trial_type: "deprecation", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| // 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: "Tpcd", |
| origin_trial_feature_name: "Tpcd", |
| origin_trial_allows_third_party: true, |
| origin_trial_type: "deprecation", |
| status: "experimental", |
| 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": "", |
| }, |
| origin_trial_feature_name: "TranslationAPI", |
| origin_trial_allows_third_party: true, |
| 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", |
| }, |
| { |
| name: "TrustedTypesFromLiteral", |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // Adapt Trusted Types to its new spec, as part of HTML. |
| // Tracking bug: 330516530 |
| name: "TrustedTypesHTML", |
| status: "experimental", |
| }, |
| { |
| 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", |
| }, |
| }, |
| { |
| // 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", |
| }, |
| { |
| // Fix for https://crbug.com/421314614 |
| name: "UseSelectionInDOMTreeAnchorInExtendSelection", |
| status: "stable" |
| }, |
| { |
| name: "UseShadowHostStyleCheckEditable", |
| status: "stable", |
| }, |
| { |
| // Fix for https://crbug.com/354497121 |
| name: "UseSpecValuesInTextFormatUpdateEventStyles", |
| 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: "experimental", |
| }, |
| { |
| 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| name: "WebAppLaunchQueue", |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "WebAppScopeExtensions", |
| origin_trial_feature_name: "WebAppScopeExtensions", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| 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", |
| }, |
| // 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", |
| }, |
| // https://w3c.github.io/webauthn/#dom-clientcapability-conditionalcreate |
| { |
| name: "WebAuthenticationConditionalCreate", |
| status: "test", |
| base_feature: "none", |
| public: true, |
| }, |
| // Prototyping https://github.com/w3c/webauthn/issues/2228 |
| { |
| name: "WebAuthenticationImmediateGet", |
| origin_trial_feature_name: "WebAuthenticationImmediateGet", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| 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", |
| }, |
| { |
| name: "WebGLImageChromium", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // 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: "experimental", |
| // 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, |
| }, |
| { |
| // https://chromestatus.com/feature/5110223547269120 |
| name: "WebGPUTextureComponentSwizzle", |
| 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", |
| 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": "", "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: "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: "experimental", |
| 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: "experimental", |
| 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: "experimental", |
| }, |
| { |
| name: "WidthAndHeightAsPresentationAttributesOnNestedSvg", |
| // Disabled due to web compat issues, see https://crbug.com/449170647. |
| status: "experimental", |
| }, |
| { |
| name: "WidthAndHeightStylePropertiesOnUseAndSymbol", |
| status: "experimental", |
| }, |
| { |
| name: "WindowControlsOverlay", |
| status: { "Android": "test", "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", |
| }, |
| { |
| 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", |
| }, |
| { |
| name: "XMLSerializerConsistentDefaultNsDeclMatching", |
| status: "test", |
| }, |
| { |
| // A feature flag that controls whether XSLT is supported by the browser. |
| // crbug.com/435623334. |
| name: "XSLT", |
| status: "stable", |
| }, |
| { |
| // A feature flag that will be used for a "special trial" of disabling |
| // XSLT on pre-stable channels only. If *either* this flag is disabled, |
| // *or* the main "XSLT" flag is disabled, then XSLT will be disabled. |
| // crbug.com/435623334. |
| name: "XSLTSpecialTrial", |
| status: "stable", |
| }, |
| { |
| // If enabled, the `getDisplayMedia()` family of APIs will ask for NV12 |
| // frames, which should trigger a zero-copy path in the tab capture code. |
| name: "ZeroCopyTabCapture", |
| } |
| ], |
| } |