From b6991abc3a7b80e561dc7fe2fb4856caf457d8c2 Mon Sep 17 00:00:00 2001 From: uazo <29201891+uazo@users.noreply.github.com> Date: Thu, 1 Aug 2024 15:02:25 +0000 Subject: [PATCH] [AUTO][FILECONTROL] - version 127.0.6533.94 --- tools/under-control/src/RELEASE | 2 +- .../platform/runtime_enabled_features.json5 | 4719 +++++++++++++++++ 2 files changed, 4720 insertions(+), 1 deletion(-) create mode 100755 tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5 diff --git a/tools/under-control/src/RELEASE b/tools/under-control/src/RELEASE index 7ed6f736..99d9474a 100644 --- a/tools/under-control/src/RELEASE +++ b/tools/under-control/src/RELEASE @@ -1 +1 @@ -127.0.6533.89 +127.0.6533.94 diff --git a/tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5 new file mode 100755 index 00000000..8321d6cf --- /dev/null +++ b/tools/under-control/src/third_party/blink/renderer/platform/runtime_enabled_features.json5 @@ -0,0 +1,4719 @@ +{ + // See third_party/blink/renderer/platform/RuntimeEnabledFeatures.md + // + // This list is used to generate runtime_enabled_features.h/cc which contains + // a class that stores static enablers for all experimental features. + + parameters: { + // Each feature can be assigned a "status". The "status" can be either + // one of the values in the |valid_values| list or a dictionary of + // the platforms listed in |valid_keys| to |valid_values|. + // Use "default" as the key if you want to specify the status of + // the platforms other than the ones declared in the dictionary. + // ** Omitting "default" means the feature is not enabled on + // the platforms not listed in the status dictionary + // + // Definition of each status: + // * status=stable: Enable this in all Blink configurations. We are + // committed to these APIs indefinitely. + // * status=experimental: In-progress features, Web Developers might play + // with, but are not on by default in stable. These features may be + // turned on using the "Experimental Web Platform features" flag in + // chrome://flags/#enable-experimental-web-platform-features. + // * status=test: Enabled in ContentShell for testing, otherwise off. + // Features without a status are not enabled anywhere by default. + // + // Example of the dictionary value use: + // { + // name: "ExampleFeature", + // status: {"Android": "stable", "Win": "experimental"}, + // } + // "ExampleFeature" will be stable on Android/WebView/WebLayer, experimental + // on Windows and not enabled on any other platform. + // + // Note that the Android status key implies Chrome for Android, WebView and + // WebLayer. + // + // "stable" features listed here should be rare, as anything which we've + // shipped stable can have its runtime flag removed soon after. + status: { + valid_values: ["stable", "experimental", "test"], + valid_keys: ["Android", "Win", "ChromeOS_Ash", "ChromeOS_Lacros", "Mac", "Linux", "iOS"] + }, + + // "implied_by" or "depends_on" specifies relationship to other features: + // * implied_by: ["feature1","feature2",...] + // The feature is automatically enabled if any implied_by features is + // enabled. To effectively disable the feature, you must disable the + // feature and all the implied_by features. + // * depends_on: ["feature1","feature2",...] + // The feature can be enabled only if all depends_on features are enabled. + // Only one of "implied_by" and "depends_on" can be specified. + implied_by: { + default: [], + valid_type: "list", + }, + + // *DO NOT* specify features that depend on origin trial features. + // It is NOT supported. As a workaround, you can either specify the same + // |origin_trial_feature_name| for the feature or add the OT feature to + // the |implied_by| list. + // TODO(https://crbug.com/954679): Add support for origin trial features in 'depends_on' list + depends_on: { + default: [], + valid_type: "list", + }, + + // origin_trial_feature_name: "FEATURE_NAME" is used to integrate the + // feature with the Origin Trials framework. The framework allows the + // feature to be enabled at runtime on a per-page basis through a signed + // token for the corresponding feature name. Declaring the + // origin_trial_feature_name will modify the generation of the static + // methods in runtime_enabled_features.h/cpp -- the no-parameter version + // will not be generated, so all callers have to use the version that takes + // a const FeatureContext* argument. + origin_trial_feature_name: { + }, + // origin_trial_os specifies the platforms where the trial is available. + // The default is empty, meaning all platforms. + origin_trial_os: { + default: [], + valid_type: "list", + }, + // origin_trial_type specifies the unique type of the trial, when not the + // usual trial for a new experimental feature. + origin_trial_type: { + default: "", + valid_type: "str", + valid_values: ["deprecation", "intervention", ""], + }, + // origin_trial_allows_insecure specifies whether the trial can be enabled + // in an insecure context, with default being false. This can only be set + // to true for a "deprecation" type trial. + origin_trial_allows_insecure: { + valid_type: "bool", + }, + + // origin_trial_allows_third_party specifies whether the trial can be enabled + // from third party origins, with default being false. + origin_trial_allows_third_party: { + valid_type: "bool", + }, + + // settable_from_internals specifies whether a feature can be set from + // internals.runtimeFlags, with the default being false. + settable_from_internals: { + valid_type: "bool", + }, + + // public specifies whether a feature can be accessed via + // third_party/blink/public/platform/web_runtime_features.h with dedicated + // methods. The default is false. This should be rare because + // WebRuntimeFeatures::EnableFeatureFromString() works in most cases. + public: { + valid_type: "bool", + }, + + // Feature policy IDL extended attribute (see crrev.com/2247923004). + feature_policy: { + }, + + // The string name of a base::Feature. The C++ variable name in + // blink::features is built with this string by prepending 'k'. + // As long as this field isn't "none", a base::Feature is automatically + // generated in features_generated.{h,cc}. By default the "name" field + // is used for the feature name, but can be overridden here. + // + // The default value of the base::Feature instance is: + // base::FEATURE_ENABLED_BY_DEFAULT if 'status' field is 'stable", and + // base::FEATURE_DISABLED_BY_DEFAULT otherwise. + // It can be overridden by 'base_feature_status' field. + // + // If the flag should be associated with a feature not in blink::features, + // we need to specify `base_feature: "none"` and map the features in + // content/child/runtime_features.cc. `base_feature: "none"` is strongly + // discouraged if the feature doesn't have an associated base feature + // because the feature would lack a killswitch controllable via finch. + base_feature: { + valid_type: "str", + default: "", + }, + + // Specify the default value of the base::Feature instance. This field + // works only if base_feature is not "none". + // If the field is missing or "", the default value depends on the 'status' + // field. See the comment above. + // "disabled" sets base::FEATURE_DISABLED_BY_DEFAULT, and "enabled" sets + // base::FEATURE_ENABLED_BY_DEFAULT. + base_feature_status: { + valid_type: "str", + valid_values: ["", "disabled", "enabled"], + default: "", + }, + + // Specify how the flag value is updated from the base::Feature value. This + // field is used only if base_feature is not empty. + // + // * "enabled_or_overridden" + // - If the base::Feature 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. + browser_process_read_access: { + default: false, + value_type: "bool", + }, + + // browser_process_read_write_access indicates the runtime feature state + // should be writable in the browserprocess via RuntimeFeatureStateContext. + // TODO(crbug.com/1377000): this feature does not support origin trial + // tokens provided in HTTP headers. Any tokens provided via HTTP header will + // be dropped. + browser_process_read_write_access: { + default: false, + value_type: "bool", + }, + + // is_protected_feature indicates whether the feature enablement state should + // be tracked using a base::Protected value or just a regular bool + // value. + is_protected_feature: { + default: false, + value_type: "bool", + } + }, + + data: [ + { + name: "Accelerated2dCanvas", + settable_from_internals: true, + status: "stable", + }, + { + name: "AcceleratedSmallCanvases", + status: "stable", + }, + { + name: "AccessibilityAriaVirtualContent", + public: true, + status: "experimental", + base_feature: "none", + }, + { + name: "AccessibilityExposeDisplayNone", + status: "test", + }, + { + name: "AccessibilityObjectModel", + status: "experimental", + }, + { + name: "AccessibilityOSLevelBoldText", + status: "experimental", + public: true, + }, + { + name: "AccessibilityPageZoom", + base_feature: "none", + public: true, + }, + { + name: "AccessibilitySerializationSizeMetrics", + status: "experimental", + }, + { + name: "AccessibilityUseAXPositionForDocumentMarkers", + base_feature: "none", + public: true, + }, + { + name: "AddressSpace", + status: "experimental", + implied_by: ["CorsRFC1918"], + }, + { + // Interest Group JS API/runtimeflag. + name: "AdInterestGroupAPI", + origin_trial_feature_name: "AdInterestGroupAPI", + implied_by: ["Fledge", "Parakeet"], + public: true, + }, + // 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: "AllowContentInitiatedDataUrlNavigations", + base_feature: "none", + }, + // If enabled, blink will not set the autofill state of a field after JS + // modifies its value, and will instead leave it to the WebAutofillClient to + // take care of the state setting. + // This feature should be enabled with + // autofill::features::kAutofillFixCachingOnJavaScriptChanges. + { + name: "AllowJavaScriptToResetAutofillState", + status: "experimental", + }, + { + name: "AllowURNsInIframes", + base_feature: "none", + }, + { + name: "AndroidDownloadableFontsMatching", + base_feature: "none", + public: true, + }, + { + name: "AnimationProgressAPI", + status: "test", + }, + { + name: "AnimationWorklet", + }, + { + name: "AnonymousIframe", + status: "stable", + }, + { + name: "AOMAriaRelationshipProperties", + public: true, + status: "experimental", + }, + { + name: "AppTitle", + status: "experimental", + origin_trial_feature_name: "AppTitle", + origin_trial_os: ["win", "mac", "linux", "chromeos"], + base_feature: "WebAppEnableAppTitle", + }, + { + name: "AriaNotify", + status: "test", + }, + // See https://crbug.com/40150299, and + // https://github.com/whatwg/dom/issues/1255. + { + name: "AtomicMoveAPI", + status: "test", + }, + { + name: "AttributionReporting", + origin_trial_feature_name: "PrivacySandboxAdsAPIs", + origin_trial_allows_third_party: true, + status: "experimental", + base_feature: "none", + public: true, + }, + { + name: "AttributionReportingCrossAppWeb", + origin_trial_feature_name: "AttributionReportingCrossAppWeb", + origin_trial_allows_third_party: true, + base_feature: "none", + public: true, + }, + { + // This only exists so we can use RuntimeEnabled in the IDL file + // when either implied_by flag is enabled. + name: "AttributionReportingInterface", + // This is not going into origin trial, "origin_trial_feature_name" is + // required for using the "implied_by" behaviour. + origin_trial_feature_name: "AttributionReportingInterface", + origin_trial_allows_third_party: true, + implied_by: ["AttributionReporting", "AttributionReportingCrossAppWeb"], + base_feature: "none", + }, + { + name: "AudioContextOnError", + status: "experimental", + }, + { + // AudioContext.playoutStats interface. + // https://chromestatus.com/feature/5172818344148992 + name: "AudioContextPlayoutStats", + status: "experimental", + }, + { + name: "AudioContextSetSinkId", + status: "stable", + }, + { + name: "AudioOutputDevices", + // Android does not yet support switching of audio output devices + status: {"Android": "", "default": "stable"}, + }, + { + name: "AudioVideoTracks", + status: "experimental", + }, + { + name: "AutoDarkMode", + base_feature: "none", + origin_trial_feature_name: "AutoDarkMode", + }, + { + name: "AutomationControlled", + base_feature: "none", + public: true, + settable_from_internals: true, + }, + { + name: "AutoPictureInPictureVideoHeuristics", + status: "experimental", + }, + { + // If enabled, lazy loaded images can be auto sized if the sizes + // attribute is missing or set to auto. + name: "AutoSizeLazyLoadedImages", + depends_on: ["NoIntrinsicSizeOverride"], + status: "stable", + }, + { + name: "AvoidCaretVisibleSelectionAdjuster", + status: "stable", + }, + { + name: "BackdropInheritOriginating", + status: "stable", + }, + // When enabled, enforces new interoperable semantics for 3D transforms. + // See crbug.com/1008483. + { + name: "BackfaceVisibilityInterop", + }, + { + name: "BackForwardCache", + base_feature: "none", + public: true, + }, + { + name: "BackForwardCacheExperimentHTTPHeader", + origin_trial_feature_name: "BackForwardCacheExperimentHTTPHeader", + status: "experimental", + base_feature: "none", + }, + { + name: "BackForwardCacheNotRestoredReasons", + status: "stable", + origin_trial_feature_name: "BackForwardCacheNotRestoredReasons", + base_feature: "BackForwardCacheSendNotRestoredReasons", + base_feature_status: "enabled", + copied_from_base_feature_if: "overridden", + }, + { + // Used to enable Blink side of features flags for Default Nav Transition. + name: "BackForwardTransitions", + }, + { + name: "BackgroundFetch", + public: true, + status: "stable", + base_feature: "none", + }, + { + name: "BarcodeDetector", + status: { + // Built-in barcode detection APIs are only available from some + // platforms. See //services/shape_detection. + "Android": "stable", + "ChromeOS_Ash": "stable", + "ChromeOS_Lacros": "stable", + "Mac": "stable", + "default": "test", + }, + }, + { + // There are two different code changes guarded by this feature. Both + // are about triggering a beforeunload cancel dialog and need adoption + // from developers. + // 1. If event.preventDefault() is called, prompt cancel dialog. + // 2. If event.returnValue is the empty string, do not prompt cancel dialog. + name: "BeforeunloadEventCancelByPreventDefault", + status: "stable", + public: true, + }, + { + name: "BidiCaretAffinity", + }, + { + name: "BlinkExtensionChromeOS", + browser_process_read_write_access: true, + }, + { + name: "BlinkExtensionChromeOSKiosk", + depends_on: ["BlinkExtensionChromeOS"], + browser_process_read_write_access: true, + }, + { + name: "BlinkExtensionDiagnostics", + depends_on: ["BlinkExtensionChromeOS"], + browser_process_read_write_access: true, + base_feature: "none", + }, + { + name: "BlinkExtensionWebView", + public: true, + }, + { + name: "BlinkExtensionWebViewMediaIntegrity", + public: true, + }, + { + name: "BlinkLifecycleScriptForbidden", + }, + { + name: "BlinkRuntimeCallStats", + }, + { + name: "BlockingFocusWithoutUserActivation", + status: "experimental", + }, + // 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", + }, + { + // crbug.com/41485013 + name: "BreakIteratorDataGenerator", + status: "stable", + }, + { + name: "BrowserVerifiedUserActivationKeyboard", + base_feature: "none", + public: true, + }, + { + name: "BrowserVerifiedUserActivationMouse", + base_feature: "none", + public: true, + }, + { + name: "BufferedBytesConsumerLimitSize", + status: "stable", + }, + { + // Bypasses the enforcement of the Page Embedded Permission Control + // security checks. This flag is disabled by default and should only be + // enabled in automated tests in order to allow them to avoid needing to + // wait until the PEPC is validated and also to use JS-initiated clicks. + name: "BypassPepcSecurityForTesting", + }, + { + name: "CacheStorageCodeCacheHint", + origin_trial_feature_name: "CacheStorageCodeCacheHint", + status: "experimental", + base_feature: "none", + }, + { + name: "Canvas2dCanvasFilter", + status: "experimental", + }, + { + name: "Canvas2dGPUTransfer", + status: "experimental", + }, + { + name: "Canvas2dImageChromium", + base_feature: "none", + public: true, + }, + { + name: "Canvas2dLayers", + }, + { + name: "Canvas2dMesh", + status: "test", + }, + { + name: "Canvas2dScrollPathIntoView", + status: "experimental", + }, + { + name: "CanvasFloatingPoint", + status: "experimental", + }, + { + name: "CanvasHDR", + status: "experimental", + }, + { + name: "CanvasImageSmoothing", + status: "experimental", + }, + { + // 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", + origin_trial_feature_name: "CapturedSurfaceControl", + status: {"Android": "", "default": "experimental"}, + }, + { + name: "CaptureHandle", + depends_on: ["GetDisplayMedia"], + status: {"Android": "", "default": "stable"}, + }, + { + // https://www.w3.org/TR/cssom-view-1/#dom-document-caretpositionfrompoint + name: "CaretPositionFromPoint", + status: "test", + }, + { + // Kill switch for changes to RenderFrameMetadataObserverImpl in connection with Engagement + // Signals. See https://crrev.com/c/4544201 and https://crbug.com/1458640. + name: "CCTNewRFMPushBehavior", + base_feature_status: "enabled", + }, + { + name: "CheckVisibilityExtraProperties", + status: "stable", + }, + { + name: "ClickToCapturedPointer", + status: "experimental", + }, + { + name: "ClipboardSvg", + status: "stable", + }, + { + name: "ClipPathRejectEmptyPaths", + status: "stable", + }, + { + // https://html.spec.whatwg.org/multipage/interaction.html#close-requests-and-close-watchers + name: "CloseWatcher", + status: "stable", + }, + { + name: "CoepReflection", + status: "test", + }, + { + name: "CompositeBGColorAnimation", + public: true, + status: "experimental", + base_feature: "none", + }, + { + name: "CompositeBoxShadowAnimation", + }, + { + name: "CompositeClipPathAnimation", + public: true, + }, + { + name: "CompositedSelectionUpdate", + public: true, + status: {"Android": "stable"}, + base_feature: "none", + }, + { + name: "CompositionForegroundMarkers", + status: { + "Android": "stable", + "default": "", + } + }, + { + name: "CompressionDictionaryTransport", + base_feature: "none", + origin_trial_feature_name: "CompressionDictionaryTransportV3", + origin_trial_allows_third_party: true, + public: true, + }, + { + name: "CompressionDictionaryTransportBackend", + base_feature: "none", + public: true, + }, + { + name: "ComputedAccessibilityInfo", + status: "experimental", + }, + { + name: "ComputePressure", + status: { + "Android": "", + "default": "stable", + } + }, + { + name: "ConcurrentViewTransitionsSPA", + status: "stable", + }, + { + name: "ContactsManager", + status: {"Android": "stable", "default": "test"}, + }, + { + name: "ContactsManagerExtraProperties", + status: {"Android": "stable", "default": "test"}, + }, + { + name: "ContentIndex", + status: {"Android": "stable", "default": "experimental"}, + }, + { + name: "ContextMenu", + status: "experimental", + }, + { + name: "ContinueEventTimingRecordingWhenBufferIsFull", + status: "experimental", + }, + { + name: "CookieDeprecationFacilitatedTesting", + base_feature: "none", + }, + { + name: "CooperativeScheduling", + base_feature: "none", + public: true, + }, + { + name: "CoopRestrictProperties", + origin_trial_feature_name: "CoopRestrictProperties", + base_feature: "none", + }, + { + name: "CorsRFC1918", + }, + { + // Controls whether form elements may delay editor creation until layout. + // This is a kill switch. See https://crbug.com/325613706 for details. + name: "CreateInputShadowTreeDuringLayout", + status: "stable" + }, + { + // Allow WebAuthn relying parties to report information about existing + // credentials back to credential storage providers. + name: "CredentialManagerReport", + status: "experimental", + }, + { + name: "CrossFramePerformanceTimeline", + status: "experimental", + }, + { + // Allows positioning a positioned element relative to another one. + // https://drafts.csswg.org/css-anchor-1/ + name: "CSSAnchorPositioning", + implied_by: ["HTMLSelectListElement"], + status: "stable", + }, + { + // Support for the anchor-scope property. + // https://drafts.csswg.org/css-anchor-position-1/#anchor-scope + name: "CSSAnchorScope", + depends_on: ["CSSAnchorPositioning"], + status: "experimental", + }, + { + // Whether values are allowed as counter style + name: "CSSAtRuleCounterStyleImageSymbols", + }, + { + // https://drafts.csswg.org/css-counter-styles/#counter-style-speak-as + name: "CSSAtRuleCounterStyleSpeakAsDescriptor", + status: "test", + }, + { + // https://chromestatus.com/feature/5125388091260928 + name: "CSSBackgroundClipUnprefix", + status: "stable", + }, + { + // Support CSS Values Level 4 calc simplification and serialization + // as specified in the specs below. + // https://drafts.csswg.org/css-values-4/#calc-simplification + // https://drafts.csswg.org/css-values-4/#calc-serialize + name: "CSSCalcSimplificationAndSerialization", + }, + { + // https://chromestatus.com/feature/5196713071738880 + name: "CSSCalcSizeFunction", + status: "experimental", + }, + { + name: "CSSCapFontUnits", + status: "stable", + }, + { + // Support case-sensitive attribute selector modifier + // https://drafts.csswg.org/selectors-4/#attribute-case + name: "CSSCaseSensitiveSelector", + status: "test", + }, + { + name: "CSSColorContrast", + status: "experimental", + }, + { + name: "CSSColorTypedOM", + status: "experimental", + }, + { + name: "CSSComputedStyleFullPseudoElementParser", + status: "stable", + }, + { + name: "CSSContentMultiArgAltText", + status: "stable", + }, + { + name: "CSSContentVisibilityImpliesContainIntrinsicSizeAuto", + status: "stable", + }, + { + // Unprefixed cross-fade() (in addition to the existing -webkit-cross-fade()). + // https://drafts.csswg.org/css-images-4/#cross-fade-function + name: "CSSCrossFade", + status: "experimental", + }, + { + // This flag controls whether the deprecated :--foo syntax is enabled. It + // is being replaced by :state(foo), which is controlled by the + // CSSCustomStateNewSyntax flag. + // TODO(crbug.com/1514397): Remove this when the feature is fully launched. + name: "CSSCustomStateDeprecatedSyntax", + public: true, + }, + { + // This flag controls whether the :state(foo) pseudo-class for custom + // elements is enabled. It is a rename of :--foo, which is being + // deprecated and is controlled by the CSSCustomStateDeprecatedSyntax + // flag. + // TODO(crbug.com/1514397): Remove this when the deprecation is done. + name: "CSSCustomStateNewSyntax", + status: "stable", + }, + { + name: "CSSDisplayModePictureInPicture", + status: "stable", + }, + { + name: "CSSDynamicRangeLimit", + status: "experimental", + }, + { + // Include custom properties in CSSComputedStyleDeclaration::item/length. + // https://crbug.com/949807 + name: "CSSEnumeratedCustomProperties", + status: "test", + }, + { + name: "CSSExponentialFunctions", + status: "stable", + }, + { + name: "CSSFontSizeAdjust", + status: "stable", + }, + { + name: "CSSFunctions", + status: "test", + }, + { + // This needs to be kept as a runtime flag as long as we need to forcibly + // disable it for WebView on Android versions older than P. See + // https://crrev.com/f311a84728272e30979432e8474089b3db3c67df + name: "CSSHexAlphaColor", + status: "stable", + }, + { + // https://chromestatus.com/feature/6289894144212992 + name: "CSSKeyframesRuleLength", + status: "stable", + }, + { + name: "CSSLayoutAPI", + status: "experimental", + }, + { + // Flag so that we can Finch the effects of our SIMD fast-path for + // skipping lazily-parsed CSS declaration blocks faster. + name: "CSSLazyParsingFastPath", + status: "experimental" + }, + { + // Support for 'light-dark()' function to select computed color values + // based on the used color-scheme. + name: "CSSLightDarkColors", + status: "stable", + }, + { + name: "CSSLineClamp", + }, + { + name: "CSSLogicalOverflow", + status: "test", + }, + { + name: "CSSMarkerNestedPseudoElement", + status: "experimental", + }, + { + // Support for typed om numeric factory methods for various units that + // were otherwise shipped: rex, rch, ic, ric, lh, rlh, x (cap and rcap + // covered by separate runtime flag). + name: "CSSNumericFactoryCompleteness", + status: "stable", + }, + { + name: "CSSPaintAPIArguments", + status: "experimental", + }, + { + // Ignore the stylesheet encoding when parsing URLs, always using UTF-8. + // See crbug.com/1485525. + name: "CSSParserIgnoreCharsetForURLs", + }, + { + name: "CSSPositionStickyStaticScrollPosition", + status: "test", + }, + { + // Support the position-try-order property. + // https://drafts.csswg.org/css-anchor-position-1/#position-try-order-property + name: "CSSPositionTryOrder", + implied_by: ["CSSAnchorPositioning"], + }, + { + // Support the position-visibility property for anchor positioning. + // https://drafts.csswg.org/css-anchor-position-1/#position-visibility + // TODO(crbug.com/332933527): Support anchors-valid and no-overflow. For + // now, this only supports always and anchors-visible. + name: "CSSPositionVisibility", + implied_by: ["CSSAnchorPositioning"], + }, + // https://drafts.csswg.org/css-values-5/#progress + // progress(), media-progress(), container-progress() + { + name: "CSSProgressNotation", + status: "experimental", + }, + { + // Enables the :open and :closed pseudo-selectors. + // https://chromestatus.com/feature/5085419215781888 + name: "CSSPseudoOpenClosed", + status: "experimental", + }, + { + // When an audio, video, or similar resource is "playing" + // or "paused". + // https://www.w3.org/TR/selectors-4/#video-state + name: "CSSPseudoPlayingPaused", + status: "test", + }, + { + // For scroll-markers pseudo elements for Carousel. + // https://github.com/flackr/carousel/tree/main/scroll-marker + name: "CSSPseudoScrollMarkers", + status: "experimental", + }, + { + // TODO(crbug.com/40932006): Non-standard 'reading-order-items' keyword + // for CSS reading of grid and flex layout. + // https://drafts.csswg.org/css-display-4/#reading-order-items + name: "CSSReadingOrderItems", + status: "experimental", + }, + { + // https://drafts.csswg.org/css-color-5/#relative-colors + name: "CSSRelativeColor", + status: "stable", + }, + { + // Non-standard 'auto' keyword for the CSS resize property. Used for + // selectively enable resize corner for textarea via UA stylesheet, but + // unintentionally exposed to author sheets. UA rule is now using + // -internal-textarea-auto instead. + name: "CSSResizeAuto", + status: "stable", + }, + { + // crbug.com/40249572 + name: "CssRubyAlign", + status: "experimental", + depends_on: ["RubyLineBreakable"], + }, + { + // https://drafts.csswg.org/css-scroll-snap-2/#scrollsnapchange + name: "CSSScrollSnapChangeEvent", + status: "experimental", + }, + { + // https://drafts.csswg.org/css-scroll-snap-2/#scrollsnapchanging + name: "CSSScrollSnapChangingEvent", + status: "experimental", + }, + { + // https://drafts.csswg.org/css-scroll-snap-2/#snap-events + name: "CSSScrollSnapEvents", + status: "experimental", + implied_by: ["CSSScrollSnapChangeEvent", "CSSScrollSnapChangingEvent"], + }, + { + // https://drafts.csswg.org/css-scroll-snap-2#scroll-start + name: "CSSScrollStart", + status: "test", + }, + { + // https://drafts.csswg.org/css-scroll-snap-2#scroll-start-target + name: "CSSScrollStartTarget", + status: "experimental", + }, + { + // Flag for supporting scroll-state() and container-type: scroll-state + // Implied by supporting at least one of the scroll-state query features. + name: "CSSScrollStateContainerQueries", + implied_by: ["CSSStickyContainerQueries", "CSSSnapContainerQueries"], + }, + { + name: "CSSSelectorFragmentAnchor", + status: "experimental", + base_feature: "CssSelectorFragmentAnchor", + }, + { + name: "CSSSignRelatedFunctions", + status: "experimental", + }, + { + // A separate feature for testing compatibility, related to the work on + // https://chromestatus.com/feature/5196713071738880 + name: "CSSSizingKeywordAnimation", + }, + { + name: "CSSSnapContainerQueries", + status: "experimental", + }, + { + // Explainer: https://drafts.csswg.org/css-values/#round-func + name: "CSSSteppedValueFunctions", + status: "stable", + }, + { + name: "CSSStickyContainerQueries", + status: "experimental", + }, + { + name: "CSSSupportsForImportRules", + status: "stable", + }, + { + // The AccentColor And AccentColorText CSS system color keywords + name: "CSSSystemAccentColor", + status: "experimental", + }, + { + // crbug.com/1463890: CSS `text-autospace` property + name: "CSSTextAutoSpace", + status: "experimental", + }, + { + // TODO(https://crbug.com/1411581): + // https://w3c.github.io/csswg-drafts/css-inline-3/#propdef-leading-trim + name: "CSSTextBoxTrim", + status: "test", + }, + { + // crbug.com/1463890, crbug.com/1463891: CSS `text-spacing` shorthand + name: "CSSTextSpacing", + depends_on: ["CSSTextAutoSpace"], + }, + { + // Makes the transition shorthand omit longhands which have initial + // values as per a standards discussion. + // Shipped in M127, should be safe to remove in M132. + // https://issues.chromium.org/issues/41487057 + // https://github.com/web-platform-tests/wpt/issues/43574 + name: "CSSTransitionShorterSerialization", + status: "stable", + }, + { + // Support for tree-scoped [1] timeline names (e.g. produced by + // scroll-timeline). + // + // [1] https://drafts.csswg.org/css-scoping-1/#shadow-names + name: "CSSTreeScopedTimelines", + }, + { + // Container query selectors containing uknown or unsupported queries + // never selects a container with this feature enabled. + // For instance, "@container (width > 0px) or (foo: bar)" will never + // select or match any containers. + name: "CSSUnknownContainerQueriesNoSelection", + status: "stable", + }, + // Support for `user-select:contain`. + { + name: "CSSUserSelectContain", + status: "test", + }, + { + name: "CSSVideoDynamicRangeMediaQueries", + status: "experimental", + }, + { + // https://chromestatus.com/feature/5064894363992064 + name: "CSSViewTransitionClass", + status: "stable" + }, + { + name: "CursorAnchorInfoMojoPipe", + // No status as this will be controlled by the matching Chromium feature. + }, + { + // https://html.spec.whatwg.org/#dom-customelementregistry-getname + name: "CustomElementsGetName", + status: "stable", + }, + { + name: "Database", + public: true, + status: "experimental", + base_feature: "none", + origin_trial_feature_name: "WebSQL", + origin_trial_allows_third_party: true, + origin_trial_type: "deprecation", + }, + // This allows pages to opt out of the unload deprecation. Enabling this + // allows unload event handers to be used in the frame regardless of any + // Permissions-Policy setting. + // https://crbug.com/1432116 + { + name: "DeprecateUnloadOptOut", + origin_trial_feature_name: "DeprecateUnloadOptOut", + origin_trial_type: "deprecation", + origin_trial_allows_third_party: true, + origin_trial_allows_insecure: true, + }, + { + name: "DesktopCaptureDisableLocalEchoControl", + status: "experimental", + }, + { + name: "DesktopPWAsAdditionalWindowingControls", + status: "test", + }, + { + name: "DesktopPWAsSubApps", + status: "test", + }, + { + name: "DetailsStyling", + status: "experimental", + }, + { + name: "DeviceAttributes", + status: { + "ChromeOS_Ash": "stable", + "ChromeOS_Lacros": "stable", + "default": "experimental", + }, + }, + { + name: "DeviceOrientationRequestPermission", + status: "experimental", + }, + { + name: "DevicePosture", + public: true, + status: "experimental", + base_feature_status: "enabled", + copied_from_base_feature_if: "overridden", + origin_trial_feature_name: "FoldableAPIs", + }, + { + // This feature makes the element close properly when its "open" + // attribute is removed. https://github.com/whatwg/html/issues/5802 + name: "DialogCloseWhenOpenRemoved", + status: "experimental", + }, + { + name: "DialogNewFocusBehavior", + status: "experimental", + depends_on: ["NewGetFocusableAreaBehavior"], + }, + { + name: "DigitalGoods", + origin_trial_feature_name: "DigitalGoodsV2", + origin_trial_os: ["android", "chromeos"], + public: true, + status: { + "Android": "stable", + "ChromeOS_Ash": "stable", + "ChromeOS_Lacros": "stable", + // crbug.com/1143079: Web tests cannot differentiate ChromeOS and Linux, + // so enable the API on all platforms for testing. + "default": "test" + }, + base_feature: "none", + }, + { + name: "DigitalGoodsV2_1", + status: { + "Android": "stable", + "ChromeOS_Ash": "stable", + "ChromeOS_Lacros": "stable", + // crbug.com/1143079: Web tests cannot differentiate ChromeOS and Linux, + // so enable the API on all platforms for testing. + "default": "test" + }, + }, + { + name: "DirectSockets", + public: true, + status: "experimental", + }, + { + // Shipping in M121. Flag should be removed after M121 has been + // shipping to stable for a few weeks. + name: "DirnameMoreInputTypes", + status: "stable", + }, + { + // Disables anti-aliasing for the Ahem font. Anti-aliasing this font breaks a + // significant amount of WPT test expectations. + name: "DisableAhemAntialias", + }, + { + name: "DisableDifferentOriginSubframeDialogSuppression", + base_feature: "none", + origin_trial_feature_name: "DisableDifferentOriginSubframeDialogSuppression", + origin_trial_type: "deprecation", + origin_trial_allows_insecure: true, + }, + { + name: "DisableHardwareNoiseSuppression", + origin_trial_feature_name: "DisableHardwareNoiseSuppression", + status: "experimental", + base_feature: "none", + }, + { + name: "DisableSelectAllForEmptyText", + status: "stable", + }, + // This feature will represent the extension of a deprecation trial that + // allows first parties to temporarily use unpartitioned storage in embeds + // loaded on their site. It replaces an old DT named + // DisableThirdPartyStoragePartitioning which expired in M126. + { + name: "DisableThirdPartyStoragePartitioning2", + origin_trial_feature_name: "DisableThirdPartyStoragePartitioning2", + origin_trial_type: "deprecation", + origin_trial_allows_insecure: true, + origin_trial_allows_third_party: true, + status: "experimental", + base_feature: "none", + browser_process_read_write_access: true, + }, + { + // Dispatch beforeinput event for number input according to the spec: + // https://w3c.github.io/uievents/#event-type-beforeinput + // + // This is landing in M127, and can be removed in M129. + // + // When disabled, beforeinput event will not be fired when spin button + // interactions like ArrowUp, ArrowDown and mouse click on spin button + // are made on number input. + name: "DispatchBeforeInputForSpinButtonInteractions", + 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, + }, + { + // Makes document's fallback base URL use about:blank instead of the base + // URL of whatever execution context created it in order to match the + // HTML spec and the behavior already shipped in all other browsers. This + // behavior is reflected by document.baseURI. + name: "DocumentBaseURIFix", + status: "stable", + }, + { + name: "DocumentCookie", + }, + { + name: "DocumentDomain", + }, + { + // This is a performance fix for + // and which replace the default + // button and listbox respectively. + name: "StylableSelect", + status: "experimental", + // :open is used in the UA stylesheet for StylableSelect, so this feature + // will not work properly without CSSPseudoOpenClosed. + depends_on: ["CSSPseudoOpenClosed"], + }, + { + name: "StylusHandwriting", + base_feature: "none", + }, + { + name: "SvgContextPaint", + status: "stable", + }, + { + name: "SvgCrossOriginAttribute", + status: "stable", + }, + { + name: "SvgFilterUserSpaceViewportForNonSvg", + status: "stable", + }, + { + name: "SvgNoPixelSnappingScaleAdjustment", + status: "stable", + }, + { + name: "SynthesizedKeyboardEventsForAccessibilityActions", + status: "experimental", + }, + { + name: "SystemWakeLock", + status: "experimental", + }, + // 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", + }, + // 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/331680200 + name: "TextAlignJustifyBidiIsolate", + status: "stable", + }, + { + // crbug.com/331729346 + name: "TextAlignLastJustifyNewLine", + status: "stable", + }, + { + // This is a kill switch for the fix to crbug.com/333940413. It landed + // in M126, and can be removed if all is well by M128. + name: "TextAreaChildrenChangedStillValidates", + status: "stable", + }, + { + // crbug.com/1008951 + name: "TextDecoratingBox", + status: "stable", + }, + { + name: "TextDetector", + status: "experimental", + }, + { + // crbug.com/325517313 + name: "TextDiffSplitFix", + 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", + }, + { + // New implementation of text-size-adjust that applies during style rather + // than via the text autosizer. This also includes changes such as + // directly using percentage values without heuristics, and fully + // disabling automatic size adjustments when non-auto values are used. + // See: https://crbug.com/340389272. + name: "TextSizeAdjustImprovements", + status: "experimental", + }, + { + // Support for the timeline-scope property. + // + // https://drafts.csswg.org/scroll-animations-1/#timeline-scope + name: "TimelineScope", + status: "stable", + depends_on: ["ScrollTimeline"] + }, + { + name: "TimerThrottlingForBackgroundTabs", + public: true, + status: "stable", + base_feature: "none", + }, + { + name: "TimeZoneChangeEvent", + status: "experimental", + }, + { + name: "TopicsAPI", + base_feature: "none", + origin_trial_feature_name: "PrivacySandboxAdsAPIs", + origin_trial_allows_third_party: true, + public: true, + }, + { + name: "TopicsDocumentAPI", + base_feature: "none", + origin_trial_feature_name: "PrivacySandboxAdsAPIs", + origin_trial_allows_third_party: true, + public: true, + }, + { + 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). + { + name: "TouchDragAndContextMenu", + implied_by: ["TouchDragOnShortPress"], + 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. This feature assumes + // that TouchDragAndContextMenu is enabled. + { + name: "TouchDragOnShortPress", + }, + // Many websites disable mouse support when touch APIs are available. We'd + // like to enable this always but can't until more websites fix this bug. + // Chromium sets this conditionally (eg. based on the presence of a + // touchscreen) in ApplyWebPreferences. "Touch events" themselves are always + // enabled since they're a feature always supported by Chrome. + { + name: "TouchEventFeatureDetection", + origin_trial_feature_name: "ForceTouchEventFeatureDetectionForInspector", + public: true, + status: "stable", + 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", + }, + // This is conditionally set if the platform supports translation. + { + name: "TranslateService", + }, + { + name: "TranslationAPI", + status: "test", + base_feature: "EnableTranslationAPI", + }, + { + name: "TrustedTypeBeforePolicyCreationEvent", + status: "experimental", + }, + { + name: "TrustedTypesFromLiteral", + status: "experimental", + base_feature: "none", + }, + { + name: "TrustedTypesUseCodeLike", + status: "experimental", + }, + { + // Unblock queued blocking touchmove after the main thread handles the + // touchstart and the first touchmove and they didn't call + // preventDefault(), instead of waiting for the browser to send + // touchscrollstarted. + name: "UnblockTouchMoveEarlier", + status: "experimental", + }, + { + name: "UnclosedFormControlIsInvalid", + status: "experimental", + }, + { + name: "UnexposedTaskIds", + }, + { + // Skip CSS animation events on unowned CSS animations: + // https://drafts.csswg.org/css-animations-2/#event-dispatch + name: "UnownedAnimationsSkipCSSEvents", + 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: "experimental", + depends_on: ["WebUSB"], + }, + { + // This flag makes IDL reflected attributes with the "URL" IDL attribute + // return the original string of the attribute when a complete URL can't + // be created instead of an empty string. + name: "URLAttributeFix", + status: "stable", + }, + { + name: "URLParse", + status: "stable", + }, + { + name: "URLPatternCompareComponent", + status: "experimental", + }, + { + name: "URLPatternHasRegExpGroups", + status: "stable", + }, + { + // Kill switch for the regexp flag update from "u" to "v". + name: "URLPatternRegexpUnicodeSetsMode", + status: "stable", + }, + { + name: "URLPatternWildcardMoreOften", + status: "stable", + }, + { + name: "URLSearchParamsHasAndDeleteMultipleArgs", + status: "stable", + }, + { + name: "UseBeginFramePresentationFeedback", + status: { + "ChromeOS_Ash": "stable", + "ChromeOS_Lacros": "stable", + }, + }, + { + // Makes root scrollbars follow the preferred color scheme by default. + // https://chromestatus.com/feature/5089486318075904 + name: "UsedColorSchemeRootScrollbars", + status: "stable", + }, + { + name: "UserActivationSameOriginVisibility", + base_feature: "none", + public: true, + }, + { + 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: "VideoFullscreenOrientationLock", + }, + { + name: "VideoRotateToFullscreen", + }, + { + name: "VideoTrackGenerator", + status: "test", + }, + { + name: "VideoTrackGeneratorInWindow", + status: "test", + }, + { + name: "VideoTrackGeneratorInWorker", + }, + { + name: "ViewportHeightClientHintHeader", + status: "stable", + }, + { + name: "ViewportSegments", + status: "experimental", + public: true, + base_feature_status: "enabled", + copied_from_base_feature_if: "overridden", + origin_trial_feature_name: "FoldableAPIs", + }, + { + name: "ViewTransitionDisableSnapBrowserControlsOnHidden", + status: "stable", + }, + { + // If enabled, ViewTransition API is supported for navigations including + // cross-document transitions. + // See https://drafts.csswg.org/css-view-transitions-1/. + name: "ViewTransitionOnNavigation", + status: "stable", + }, + { + name: "ViewTransitionOnNavigationForIframes", + status: "stable", + }, + { + name: "ViewTransitionTreeScopedNames", + status: "stable", + }, + { + // https://chromestatus.com/feature/5089552511533056 + name: "ViewTransitionTypes", + status: "stable", + }, + { + name: "VisibilityCollapseColumn", + }, + { + name: "VisualViewportOnScrollEnd", + status: "stable", + }, + { + name: "VttCueDisplayRuby", + status: "stable", + }, + { + // The "WakeLock" feature was originally implied_by "ScreenWakeLock" and + // "SystemWakeLock". The former was removed after being promoted to + // stable, but we need to keep this feature around for code and IDLs that + // should work with both screen and system wake locks. + name: "WakeLock", + status: "stable", + implied_by: ["SystemWakeLock"], + }, + { + // When enabled, this will issue a warning to the console any time + // rendering is forced withing content-visibility subtrees (both + // content-visibility: auto and content-visibility: hidden). + name: "WarnOnContentVisibilityRenderAccess", + }, + { + name: "WebAnimationsSVG", + status: "experimental", + }, + { + name: "WebAppLaunchQueue", + // This is not going into origin trial, "origin_trial_feature_name" is + // required for using the "implied_by" behaviour. + origin_trial_feature_name: "WebAppLaunchQueue", + implied_by: ["FileHandling"], + base_feature: "none", + }, + { + name: "WebAppScopeExtensions", + origin_trial_feature_name: "WebAppScopeExtensions", + origin_trial_os: ["win", "mac", "linux", "chromeos"], + status: "experimental", + base_feature: "none", + }, + { + name:"WebAppsLockScreen", + status:"experimental", + }, + { + name: "WebAppTabStrip", + status: { + "ChromeOS_Ash": "stable", + "ChromeOS_Lacros": "stable", + "default": "experimental" + }, + base_feature: "DesktopPWAsTabStrip", + base_feature_status: "enabled", + copied_from_base_feature_if: "overridden", + }, + { + name: "WebAppTabStripCustomizations", + status: { + "ChromeOS_Ash": "stable", + "ChromeOS_Lacros": "stable", + "default": "experimental" + }, + base_feature: "DesktopPWAsTabStripCustomizations", + base_feature_status: "enabled", + copied_from_base_feature_if: "overridden", + }, + { + name: "WebAppTranslations", + status: "experimental", + base_feature: "WebAppEnableTranslations", + }, + { + // This flag enables the Manifest parser to handle URL Handlers. + // Also enabled when blink::features::kWebAppEnableUrlHandlers is + // overridden on the command line (or via chrome://flags). + name: "WebAppUrlHandling", + status: "experimental", + base_feature: "none", + origin_trial_feature_name: "WebAppUrlHandling", + origin_trial_os: ["win", "mac", "linux"], + }, + { + // 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", + }, + { + name: "WebAssemblyJSStringBuiltins", + origin_trial_feature_name: "WebAssemblyJSStringBuiltins", + status: "experimental", + base_feature: "none", + }, + // 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", + }, + // https://w3c.github.io/webauthn/#enum-hints + { + name: "WebAuthenticationHints", + status: "experimental", + }, + // https://w3c.github.io/webauthn/#dom-publickeycredential-tojson + // https://w3c.github.io/webauthn/#sctn-parseCreationOptionsFromJSON + // https://w3c.github.io/webauthn/#sctn-parseRequestOptionsFromJSON + { + name: "WebAuthenticationJSONSerialization", + status: "experimental", + }, + { + name: "WebAuthenticationLargeBlobExtension", + status: "stable", + }, + // https://w3c.github.io/webauthn/#prf-extension + { + name: "WebAuthenticationPRF", + status: "stable", + base_feature: "WebAuthenticationPRFExtension", + }, + { + 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, macOS and + // Windows. + { + name: "WebBluetooth", + public: true, + status: { + "Android": "stable", + "ChromeOS_Ash": "stable", "ChromeOS_Lacros": "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: "WebCodecsCopyToRGB", + status: "stable", + }, + { + name: "WebCodecsHBDFormats", + status: "experimental", + }, + { + name: "WebCryptoCurve25519", + status: "experimental", + }, + { + name: "WebExposedScrollOffset", + status: "stable", + }, + { + name: "WebFontResizeLCP", + status: "experimental", + }, + { + 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, + }, + { + name: "WebGPUAdapterInfoAttribute", + status: "stable", + }, + { + // WebGPU developer features are deliberately not enabled by experimental + // web platform features. + name: "WebGPUDeveloperFeatures", + base_feature: "none", + public: true, + }, + { + // WebGPU experimental features are meant for features that would + // eventually land in the WebGPU spec. + name: "WebGPUExperimentalFeatures", + status: "experimental", + public: true, + }, + { + name: "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", + origin_trial_feature_name: "WebIdentityDigitalCredentials", + origin_trial_os: ["android"], + depends_on: ["FedCm"], + public: true, + status: "test", + base_feature: "none", + }, + // Kill switch for making BigInt handling in WebIDL use ToBigInt. + { + name: "WebIDLBigIntUsesToBigInt", + status: "stable", + }, + { + name: "WebNFC", + public: true, + status: {"Android": "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"}, + }, + { + name: "WebSerialBluetooth", + status: "stable", + base_feature: "none", + }, + // WebShare is enabled by default on Android. + { + name: "WebShare", + public: true, + status: "test", + base_feature: "none", + }, + { + name: "WebSocketHTTPURL", + status: "stable", + }, + { + name: "WebSocketStream", + status: "stable", + }, + { + 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", + }, + { + 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: "WebViewXRequestedWithDeprecation", + origin_trial_feature_name: "WebViewXRequestedWithDeprecation", + origin_trial_allows_insecure: true, + origin_trial_allows_third_party: true, + origin_trial_os: ["android"], + origin_trial_type: "deprecation", + status: "experimental", + base_feature: "none", + }, + { + 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: "WebXRHandInput", + 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: "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: "WGIGamepadTriggerRumble", + status: "stable", + }, + // 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", + }, + // Allows sites to request fullscreen when the set of screens change. + { + name: "WindowPlacementFullscreenOnScreensChange", + status: "experimental", + }, + { + // Allows browser-providers writing suggestions to be turned on/off + // through the attribute. + // https://chromestatus.com/feature/5153375153029120 + name: "WritingSuggestions", + status: "stable", + }, + // Flag guard for change to XML parser to merge adjacent CDATA sections. + // See https://crrev.com/c/4790343. + { + name: "XMLParserMergeAdjacentCDataSections", + status: "stable", + }, + // Flag to guard fix for https://crbug.com/331970402. Should be removed + // after M125 is stable. + { + name: "XPathLangUseAsciiCase", + 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", + }, + ], +}