| { |
| // http://dev.chromium.org/blink/runtime-enabled-features |
| // |
| // This list is used to generate runtime_enabled_features.h/cc which contains |
| // a class that stores static enablers for all experimental features. |
| |
| parameters: { |
| // Each feature can be assigned a "status". The "status" can be either |
| // one of the values in the |valid_values| list or a dictionary of |
| // the platforms listed in |valid_keys| to |valid_values|. |
| // Use "default" as the key if you want to specify the status of |
| // the platforms other than the ones declared in the dictionary. |
| // ** Omitting "default" means the feature is not enabled on |
| // the platforms not listed in the status dictionary |
| // |
| // Definition of each status: |
| // * status=stable: Enable this in all Blink configurations. We are |
| // committed to these APIs indefinitely. |
| // * status=experimental: In-progress features, Web Developers might play |
| // with, but are not on by default in stable. |
| // * status=test: Enabled in ContentShell for testing, otherwise off. |
| // Features without a status are not enabled anywhere by default. |
| // |
| // Example of the dictionary value use: |
| // { |
| // name: "ExampleFeature", |
| // status: {"Android": "stable", "ChromeOS": "experimental"}, |
| // } |
| // "ExampleFeature" will be stable on Android, experimental on ChromeOS |
| // and not enabled on any other platform |
| // |
| // "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"] |
| }, |
| |
| // "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; |
| // * depends_on: ["feature1","feature2",...] |
| // The feature is 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 static method then allows |
| // the feature implementation to check if the trial is enabled for the |
| // current context. |
| 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", |
| }, |
| |
| // Feature policy IDL extended attribute (see crrev.com/2247923004). |
| feature_policy: { |
| }, |
| }, |
| |
| data: [ |
| { |
| name: "Accelerated2dCanvas", |
| settable_from_internals: true, |
| status: "stable", |
| }, |
| { |
| name: "AcceleratedSmallCanvases", |
| status: "stable", |
| }, |
| { |
| name: "AccessibilityExposeDisplayNone", |
| status: "test", |
| }, |
| { |
| name: "AccessibilityExposeHTMLElement", |
| }, |
| { |
| name: "AccessibilityExposeIgnoredNodes", |
| }, |
| { |
| name: "AccessibilityObjectModel", |
| status: "experimental", |
| }, |
| { |
| name: "AccessibilityUseAXPositionForDocumentMarkers", |
| status: "test", |
| }, |
| { |
| name: "AddEventListenerAbortSignal", |
| status: "experimental", |
| }, |
| { |
| name: "AddressSpace", |
| status: "experimental", |
| implied_by: ["CorsRFC1918"], |
| }, |
| { |
| name: "AdTagging", |
| status: "test", |
| }, |
| { |
| // Deprecated, see UserActivationPostMessageTransfer. |
| name: "AllowActivationDelegationAttr", |
| }, |
| { |
| name: "AllowContentInitiatedDataUrlNavigations", |
| }, |
| { |
| name: "AllowSyncXHRInPageDismissal", |
| origin_trial_feature_name: "AllowSyncXHRInPageDismissal", |
| }, |
| { |
| name: "AndroidDownloadableFontsMatching", |
| }, |
| { |
| name: "AnimationWorklet", |
| status: "experimental", |
| }, |
| { |
| name: "AOMAriaProperties", |
| status: "stable", |
| }, |
| { |
| name: "AOMAriaRelationshipProperties", |
| status: "experimental", |
| }, |
| { |
| // Force disabled if blink::features::kAppCache is disabled, and this |
| // will override any origin trial setting. |
| // Disabled if blink::features::kAppCacheRequireOriginTrial is enabled, |
| // but can be turned back on by the origin trial. |
| // Otherwise, on by default. |
| name: "AppCache", |
| status: "stable", |
| origin_trial_feature_name: "AppCache", |
| }, |
| { |
| name: "AudioOutputDevices", |
| // Android does not yet support switching of audio output devices |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "AudioVideoTracks", |
| status: "experimental", |
| }, |
| { |
| name: "AudioWorkletRealtimeThread", |
| status: "experimental", |
| }, |
| { |
| name: "AutoLazyLoadOnReloads", |
| depends_on: ["LazyFrameLoading"], |
| }, |
| { |
| name: "AutomaticLazyFrameLoading", |
| depends_on: ["LazyFrameLoading"], |
| status: "stable", |
| }, |
| { |
| name: "AutomaticLazyImageLoading", |
| depends_on: ["LazyImageLoading"], |
| status: "stable", |
| }, |
| { |
| name: "AutomationControlled", |
| settable_from_internals: true, |
| }, |
| { |
| name: "AutoPictureInPicture", |
| depends_on: ["PictureInPictureAPI"], |
| origin_trial_feature_name: "AutoPictureInPicture", |
| status: "experimental", |
| }, |
| { |
| // Flag set by the media::kAutoplayIgnoreWebAudio feature flag. |
| name: "AutoplayIgnoresWebAudio", |
| settable_from_internals: true, |
| }, |
| { |
| name: "BackForwardCache", |
| }, |
| { |
| name: "BackForwardCacheExperimentHTTPHeader", |
| origin_trial_feature_name: "BackForwardCacheExperimentHTTPHeader", |
| status: "experimental", |
| }, |
| { |
| name: "BackgroundFetch", |
| status: "stable", |
| }, |
| { |
| name: "BackgroundVideoTrackOptimization", |
| status: "stable", |
| }, |
| { |
| name: "Badging", |
| status: "stable", |
| }, |
| { |
| 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", |
| }, |
| }, |
| { |
| // https://github.com/chrishtr/battery-savings/blob/master/explainer.md |
| name: "BatterySavingsMeta", |
| origin_trial_feature_name: "BatterySavingsMeta", |
| status: "experimental", |
| }, |
| { |
| // https://github.com/WICG/display-locking/blob/master/explainer-beforematch.md |
| name: "BeforeMatchEvent", |
| origin_trial_feature_name: "BeforeMatchEvent", |
| status: "experimental", |
| }, |
| { |
| name: "BidiCaretAffinity", |
| }, |
| { |
| name: "BlinkRuntimeCallStats", |
| }, |
| { |
| name: "BlockCredentialedSubresources", |
| status: "stable", |
| }, |
| { |
| name: "BlockHTMLParserOnStyleSheets", |
| }, |
| { |
| name: "BlockingDownloadsInSandbox", |
| status: "stable", |
| }, |
| { |
| name: "BlockingFocusWithoutUserActivation", |
| status: "experimental", |
| }, |
| { |
| name: "BrowserVerifiedUserActivationKeyboard", |
| }, |
| { |
| name: "BrowserVerifiedUserActivationMouse", |
| }, |
| { |
| name: "CacheInlineScriptCode" |
| }, |
| { |
| name: "CacheStorageCodeCacheHint", |
| origin_trial_feature_name: "CacheStorageCodeCacheHint", |
| status: "experimental", |
| }, |
| { |
| name: "Canvas2dContextLostRestored", |
| status: "experimental", |
| }, |
| { |
| name: "Canvas2dImageChromium", |
| }, |
| { |
| name: "Canvas2dScrollPathIntoView", |
| status: "experimental", |
| }, |
| { |
| name: "CanvasColorManagement", |
| status: "experimental", |
| }, |
| { |
| name: "CanvasHitRegion", |
| status: "experimental", |
| }, |
| { |
| name: "CanvasImageSmoothing", |
| status: "experimental", |
| }, |
| { |
| name: "CaptureTimeInCsrc", |
| status: "stable", |
| }, |
| { |
| name: "ClickPointerEvent", |
| status: "experimental", |
| }, |
| { |
| name: "ClickPointerEventIntegerCoordinates", |
| }, |
| { |
| name: "ClickRetargetting", |
| status: "experimental", |
| }, |
| { |
| name: "ClipboardSvg", |
| status: "experimental", |
| }, |
| { |
| name: "CompositeAfterPaint", |
| }, |
| { |
| name: "CompositeBGColorAnimation", |
| }, |
| { |
| name: "CompositedSelectionUpdate", |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "CompositeRelativeKeyframes", |
| status: "experimental", |
| }, |
| { |
| name: "CompositeSVG", |
| status: "stable" |
| }, |
| { |
| name: "CompositingOptimizations", |
| status: "experimental" |
| }, |
| { |
| name: "ComputedAccessibilityInfo", |
| status: "experimental", |
| }, |
| { |
| name: "ConsolidatedMovementXY", |
| }, |
| { |
| 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: "ConversionMeasurement", |
| origin_trial_feature_name: "ConversionMeasurement", |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| depends_on: ["ConversionMeasurementInfraSupport"], |
| }, |
| { |
| // Feature to explicitly disable/enable the Conversion |
| // Measurement API when there is not browser process side infra. |
| name: "ConversionMeasurementInfraSupport", |
| }, |
| { |
| name: "CookieDeprecationMessages", |
| status: "experimental", |
| }, |
| { |
| name: "CookiesWithoutSameSiteMustBeSecure", |
| status: "test", |
| }, |
| { |
| name: "CooperativeScheduling" |
| }, |
| { |
| name: "CorsRFC1918", |
| }, |
| { |
| name: "CrossOriginIsolation", |
| status: "stable", |
| }, |
| { |
| name: "CrossOriginOpenerPolicyReporting", |
| origin_trial_feature_name: "CrossOriginOpenerPolicyReporting", |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| }, |
| { |
| name: "CSS3Text", |
| status: "experimental", |
| }, |
| { |
| name: "CSSAspectRatioProperty", |
| status: "stable", |
| }, |
| { |
| // https://drafts.csswg.org/css-counter-styles-3 |
| name: "CSSAtRuleCounterStyle", |
| status: "test", |
| }, |
| { |
| // Whether <image> values are allowed as counter style <symbol> |
| name: "CSSAtRuleCounterStyleImageSymbols", |
| depends_on: ["CSSAtRuleCounterStyle"] |
| }, |
| { |
| name: "CSSCalcAsInt", |
| status: "test", |
| }, |
| { |
| // When the color-scheme is supported via the CSS color-scheme property |
| // (CSSColorScheme) or the meta tag (MetaColorScheme), the only UA |
| // rendering change is for the canvas background and the :root element |
| // color property. Enabling this runtime flag will enable dark UA |
| // rendering for form controls, scrollbars, etc. |
| name: "CSSColorSchemeUARendering", |
| status: "stable", |
| }, |
| { |
| name: "CSSContainerQueries", |
| }, |
| { |
| // The main content-visibility feature. |
| // https://drafts.csswg.org/css-contain/#content-visibility |
| name: "CSSContentVisibility", |
| status: "stable", |
| }, |
| { |
| // The content-visibility: hidden-matchable feature. This is a planned |
| // follow-up to the main CSSContentVisibility feature, thus it is gated |
| // by a different flag. |
| // https://wicg.github.io/display-locking/ |
| name: "CSSContentVisibilityHiddenMatchable", |
| origin_trial_feature_name: "BeforeMatchEvent", |
| status: "experimental" |
| }, |
| { |
| name: "CSSFocusVisible", |
| status: "stable", |
| }, |
| { |
| name: "CSSFoldables", |
| status: "experimental", |
| }, |
| { |
| // Experimental @font-face descriptor advance-override. |
| // Not standardized yet, and subject to changes. |
| name: "CSSFontFaceAdvanceOverride", |
| status: "test", |
| depends_on: ["CSSFontMetricsOverride"], |
| }, |
| { |
| // Experimental @font-face descriptor advance-proportional-override. |
| // Not standardized yet, and subject to changes. |
| name: "CSSFontFaceAdvanceProportionalOverride", |
| status: "test", |
| depends_on: ["CSSFontMetricsOverride"], |
| }, |
| { |
| // @font-face descriptors ascent-override, descent-override and |
| // line-gap-override. |
| // https://drafts.csswg.org/css-fonts-4/#font-metrics-override-desc |
| name: "CSSFontMetricsOverride", |
| status: "stable", |
| }, |
| { |
| name: "CSSFontSizeAdjust", |
| status: "experimental", |
| }, |
| { |
| // This needs to be kept as a runtime flag as long as we need to forcibly |
| // disable it for WebView on Android versions older than P. See |
| // https://crrev.com/f311a84728272e30979432e8474089b3db3c67df |
| name: "CSSHexAlphaColor", |
| status: "stable", |
| }, |
| { |
| name: "CSSIndependentTransformProperties", |
| status: "experimental", |
| }, |
| { |
| name: "CSSLayoutAPI", |
| status: "experimental", |
| }, |
| { |
| name: "CSSLogical", |
| status: "experimental", |
| }, |
| { |
| name: "CSSLogicalOverflow", |
| status: "test", |
| }, |
| { |
| name: "CSSMarkerNestedPseudoElement", |
| status: "experimental", |
| }, |
| // Enables dependency support for the MatchedPropertiesCache. |
| { |
| name: "CSSMatchedPropertiesCacheDependencies", |
| }, |
| { |
| name: "CSSMathDepth", |
| status: "experimental", |
| implied_by: ["MathMLCore"], |
| }, |
| { |
| name: "CSSMathShift", |
| status: "experimental", |
| implied_by: ["MathMLCore"], |
| }, |
| { |
| name: "CSSMathStyle", |
| status: "experimental", |
| implied_by: ["MathMLCore"], |
| }, |
| { |
| name: "CSSMathVariant", |
| status: "experimental", |
| implied_by: ["MathMLCore"], |
| }, |
| { |
| name: "CSSModules", |
| status: "experimental", |
| }, |
| { |
| name: "CSSOffsetPathRay", |
| status: "experimental", |
| }, |
| { |
| name: "CSSOffsetPathRayContain", |
| status: "experimental", |
| }, |
| { |
| name: "CSSOffsetPositionAnchor", |
| status: "experimental", |
| }, |
| { |
| name: "CSSPaintAPIArguments", |
| status: "experimental", |
| }, |
| { |
| name: "CSSPictureInPicture", |
| status: "experimental", |
| depends_on: ["PictureInPictureAPI"], |
| }, |
| { |
| name: "CSSPseudoDir", |
| status: "experimental", |
| }, |
| { |
| name: "CSSPseudoIs", |
| status: "stable", |
| }, |
| { |
| name: "CSSPseudoWhere", |
| status: "stable", |
| }, |
| // Scrollbar styling. |
| // https://drafts.csswg.org/css-scrollbars/ |
| { |
| name: "CSSScrollbars", |
| status: "test", |
| }, |
| // Support for declarative parts of scroll-animations-1, i.e. |
| // the animation-timeline property and the @scroll-timeline rule. |
| // |
| // https://drafts.csswg.org/scroll-animations-1/#animation-timeline |
| // https://drafts.csswg.org/scroll-animations-1/#scroll-timeline-at-rule |
| { |
| name: "CSSScrollTimeline", |
| status: "experimental", |
| }, |
| { |
| name: "CSSSnapSize", |
| status: "experimental", |
| }, |
| { |
| // Support for CSS ::spelling-error, ::grammar-error, and the |
| // spelling-error and grammar-error values in text-decoration-line. |
| // |
| // https://drafts.csswg.org/css-pseudo-4/#selectordef-spelling-error |
| // https://drafts.csswg.org/css-pseudo-4/#selectordef-grammar-error |
| // https://drafts.csswg.org/css-text-decor-4/#valdef-text-decoration-line-spelling-error |
| // https://drafts.csswg.org/css-text-decor-4/#valdef-text-decoration-line-grammar-error |
| name: "CSSSpellingGrammarErrors", |
| status: "test", |
| }, |
| // Make system color keywords compute to themselves. |
| // https://github.com/w3c/csswg-drafts/issues/3847 |
| { |
| name: "CSSSystemColorComputeToSelf", |
| status: "experimental", |
| }, |
| { |
| // Support for ::target-text pseudo element as specified in |
| // https://drafts.csswg.org/css-pseudo/#selectordef-target-text |
| name: "CSSTargetTextPseudoElement", |
| status: "stable", |
| }, |
| // Support for @property rules. |
| { |
| name: "CSSVariables2AtProperty", |
| status: "stable", |
| }, |
| // Support for registered custom properties with <image> syntax. |
| { |
| name: "CSSVariables2ImageValues", |
| status: "test", |
| }, |
| // Support for registered custom properties with <transform-list> and |
| // <transform-function> syntax. |
| { |
| name: "CSSVariables2TransformValues", |
| status: "test", |
| }, |
| { |
| name: "CustomElementDefaultStyle", |
| status: "experimental", |
| }, |
| // TODO(937746): Web Components v0 is disabled by default, and will be |
| // removed after M87. |
| { |
| name: "CustomElementsV0", |
| status: "test", |
| }, |
| { |
| name: "CustomStatePseudoClass", |
| status: "experimental", |
| }, |
| { |
| name: "Database", |
| status: "stable", |
| }, |
| { |
| name: "DeclarativeShadowDOM", |
| origin_trial_feature_name: "DeclarativeShadowDOM", |
| status: "experimental", |
| }, |
| { |
| name: "DecodeJpeg420ImagesToYUV", |
| status: "stable", |
| }, |
| { |
| name: "DecodeLossyWebPImagesToYUV", |
| status: "stable", |
| }, |
| { |
| name: "DelayAsyncScriptExecutionUntilFinishedParsing", |
| }, |
| { |
| name: "DelayAsyncScriptExecutionUntilFirstPaintOrFinishedParsing", |
| }, |
| { |
| name: "DelegatedInkTrails", |
| status: "experimental", |
| }, |
| { |
| name: "DesktopCaptureDisableLocalEchoControl", |
| status: "experimental", |
| }, |
| { |
| name: "DeviceInterface", |
| status: "experimental", |
| }, |
| { |
| name: "DigitalGoods", |
| origin_trial_feature_name: "DigitalGoods", |
| origin_trial_os: ["android", "chromeos"], |
| status: { |
| "Android": "experimental", |
| "ChromeOS": "experimental", |
| // crbug.com/1143079: Web tests cannot differentiate ChromeOS and Linux, |
| // so enable the API on all platforms for testing. |
| "default": "test" |
| }, |
| }, |
| { |
| name: "DirectSockets", |
| status: "test", |
| }, |
| { |
| name: "DisableHardwareNoiseSuppression", |
| origin_trial_feature_name: "DisableHardwareNoiseSuppression", |
| status: "experimental", |
| }, |
| { |
| // Disable composited layer squashing in pre-CompositeAfterPaint for |
| // testing. |
| name: "DisableLayerSquashing", |
| }, |
| { |
| name: "DisallowDocumentAccess", |
| status: "experimental", |
| }, |
| { |
| name: "DisplayCapturePermissionPolicy", |
| implied_by: ["GetCurrentBrowsingContextMedia"], |
| // TODO(crbug.com/1150788): Implement for Android when this is applied |
| // to getDisplayMedia. |
| status: {"Android": "", "default": "test"}, |
| }, |
| { |
| name: "DisplayCutoutAPI", |
| settable_from_internals: true, |
| }, |
| { |
| name: "DocumentCookie", |
| }, |
| { |
| name: "DocumentDomain", |
| }, |
| { |
| name: "DocumentPolicy", |
| status: "stable", |
| }, |
| { |
| name: "DocumentPolicyNegotiation", |
| origin_trial_feature_name: "DocumentPolicyNegotiation", |
| status: "experimental", |
| depends_on: ['DocumentPolicy'] |
| }, |
| // Enables the ability to use Document Policy header to control feature |
| // SyncXHR. |
| { |
| name: "DocumentPolicySyncXHR", |
| status: "experimental", |
| depends_on: ["DocumentPolicy"], |
| }, |
| { |
| // Document transitions, including shared element transitions. |
| // See https://github.com/WICG/proposals/issues/12. |
| name: "DocumentTransition" |
| }, |
| { |
| name: "DocumentWrite", |
| }, |
| { |
| name: "EditContext", |
| settable_from_internals: true, |
| status: "test", |
| }, |
| { |
| // http://crbug.com/707656 content editable in LayoutNG. |
| name: "EditingNG", |
| status: "stable", |
| }, |
| { |
| name: "EncryptedMediaEncryptionSchemeQuery", |
| status: "stable", |
| }, |
| { |
| name: "EncryptedMediaHdcpPolicyCheck", |
| status: "stable", |
| }, |
| { |
| name: "EncryptedMediaPersistentUsageRecordSession", |
| status: "stable", |
| }, |
| { |
| name: "EnterKeyHintAttribute", |
| status: "stable", |
| }, |
| { |
| name: "EventTiming", |
| status: "stable", |
| }, |
| { |
| name: "ExecCommandInJavaScript", |
| status: "test", |
| }, |
| { |
| name: "ExpensiveBackgroundTimerThrottling", |
| status: "stable", |
| }, |
| { |
| name: "ExperimentalContentSecurityPolicyFeatures", |
| status: "experimental", |
| }, |
| // Enables navigator.scheduling.isFramePending, allowing long-running JS to |
| // be able to yield itself when a display update is scheduled. |
| { |
| name: "ExperimentalIsFramePending", |
| status: "experimental" |
| }, |
| // Enables navigator.scheduling.isInputPending, allowing long-running JS to |
| // be able to yield itself when user input is queued (crbug.com/910421). |
| { |
| name: "ExperimentalIsInputPending", |
| origin_trial_feature_name: "ExperimentalIsInputPending", |
| status: "stable" |
| }, |
| // Enables a DOM-exposed interface to profile client JS. |
| // https://github.com/WICG/js-self-profiling |
| { |
| name: "ExperimentalJSProfiler", |
| origin_trial_feature_name: "ExperimentalJSProfiler", |
| status: "experimental" |
| }, |
| { |
| name: "ExperimentalPolicies", |
| depends_on: ["DocumentPolicy"], |
| status: "experimental" |
| }, |
| { |
| name: "ExtendedTextMetrics", |
| status: "experimental", |
| }, |
| { |
| name: "ExtraWebGLVideoTextureMetadata", |
| }, |
| { |
| name: "FaceDetector", |
| status: "experimental", |
| }, |
| { |
| name: "FeaturePolicyForClientHints", |
| status: "stable", |
| }, |
| { |
| name: "FeaturePolicyReporting", |
| status: "experimental" |
| }, |
| { |
| name: "FeaturePolicyVibrateFeature" |
| }, |
| { |
| name: "FetchUploadStreaming", |
| origin_trial_feature_name: "FetchUploadStreaming", |
| status: "experimental", |
| }, |
| { |
| // Also enabled when blink::features::kFileHandlingAPI is overridden |
| // on the command line (or via chrome://flags). |
| name: "FileHandling", |
| depends_on: ["FileSystemAccess"], |
| status: {"Android": "test", "default": "experimental"}, |
| origin_trial_feature_name: "FileHandling", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| }, |
| { |
| name: "FileSystem", |
| status: "stable", |
| }, |
| { |
| name: "FileSystemAccess", |
| status: {"Android": "test", "default": "stable"}, |
| }, |
| { |
| // In-development features for the File System Access API. |
| name: "FileSystemAccessAPIExperimental", |
| status: "experimental", |
| }, |
| { |
| name: "FlexAspectRatio", |
| status: "stable", |
| }, |
| { |
| name: "FocuslessSpatialNavigation", |
| settable_from_internals: true, |
| }, |
| { |
| name: "FontAccess", |
| origin_trial_feature_name: "FontAccess", |
| // No status because this blink runtime feature doesn't work by itself. |
| // It's controlled by the corresponding Chromium feature which needs to |
| // be enabled to make the whole feature work. |
| }, |
| { |
| name: "FontAccessChooser", |
| // TODO(crbug.com/1000486): Add when the Origin Trial dependency bug is fixed. |
| // depends_on: ["FontAccess"], |
| status: "experimental", |
| }, |
| { |
| name: "FontSrcLocalMatching", |
| // No status, as the web platform runtime enabled feature is controlled by |
| // a Chromium level feature. |
| }, |
| // For simulating Android's overlay fullscreen video in web tests on Linux. |
| { |
| name: "ForcedColors", |
| // No status because this blink runtime feature doesn't work by itself. |
| // It's controlled by the corresponding Chromium feature which needs to |
| // be enabled to make the whole feature work. |
| }, |
| { |
| name: "ForceDeferScriptIntervention", |
| }, |
| { |
| // This is used in tests to perform memory measurement without |
| // waiting for GC. |
| name:"ForceEagerMeasureMemory", |
| }, |
| { |
| name: "ForceLoadAtTop", |
| origin_trial_feature_name: "ForceLoadAtTop", |
| }, |
| { |
| name: "ForceOverlayFullscreenVideo", |
| }, |
| { |
| name: "ForceSynchronousHTMLParsing", |
| }, |
| { |
| name: "ForceTallerSelectPopup", |
| status: {"ChromeOS": "stable"}, |
| }, |
| { |
| name: "FractionalScrollOffsets", |
| status: "experimental", |
| }, |
| { |
| name: "FreezeFramesOnVisibility", |
| status: "experimental", |
| }, |
| { |
| name: "GamepadButtonAxisEvents", |
| status: "experimental", |
| }, |
| { |
| name: "GetCurrentBrowsingContextMedia", |
| depends_on: ["GetDisplayMedia"], |
| status: {"Android": "", "default": "test"}, |
| }, |
| { |
| name: "GetDisplayMedia", |
| status: { |
| "Android": "experimental", |
| "default": "stable", |
| }, |
| }, |
| { |
| name: "GroupEffect", |
| status: "test", |
| }, |
| { |
| name: "HrefTranslate", |
| depends_on: ["TranslateService"], |
| origin_trial_feature_name: "HrefTranslate", |
| status: "stable", |
| }, |
| // TODO(937746): Web Components v0 is disabled by default, and will be |
| // removed after M87. |
| { |
| name: "HTMLImports", |
| status: "test", |
| }, |
| { |
| name: "IDBObserver", |
| status: "experimental", |
| }, |
| { |
| name: "IDBPutAll", |
| status: "experimental", |
| }, |
| { |
| name: "IDBRelaxedDurability", |
| status: "stable", |
| }, |
| { |
| name: "IdleDetection", |
| origin_trial_feature_name: "IdleDetection", |
| status: "experimental", |
| }, |
| { |
| name: "IgnoreCrossOriginWindowWhenNamedAccessOnWindow", |
| status: "experimental", |
| }, |
| { |
| name: "ImageOrientation", |
| status: "stable", |
| }, |
| { |
| name: "ImplicitRootScroller", |
| settable_from_internals: true, |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "ImportMaps", |
| status: "stable" |
| }, |
| { |
| name: "InertAttribute", |
| status: "experimental", |
| }, |
| { |
| name: "InputMultipleFieldsUI", |
| // No plan to support complex UI for date/time INPUT types on Android. |
| status: {"Android": "test", "default": "stable"}, |
| }, |
| { |
| name: "InstalledApp", |
| status: "stable", |
| }, |
| { |
| name: "InterestCohortAPI", |
| origin_trial_feature_name: "InterestCohortAPI", |
| }, |
| { |
| name: "IntersectionObserverDocumentScrollingElementRoot", |
| status: "stable", |
| }, |
| { |
| // Launched by default. TODO(mythria): cleanup virtual tests and |
| // other hooks in blink. |
| name: "IsolatedCodeCache", |
| status: "stable", |
| }, |
| { |
| name: "KeyboardFocusableScrollers", |
| status: "experimental", |
| }, |
| { |
| name: "LangAttributeAwareFormControlUI", |
| }, |
| { |
| name: "LangClientHintHeader", |
| status: "experimental", |
| }, |
| { |
| // LayoutNG has been enabled in M76, but we still keep this flag for |
| // testing. See web_tests/FlagExpectations/disable-layout-ng for more |
| // details about running web tests with LayoutNG disabled. This flag also |
| // provides a convenient way for testing legacy layout code path in blink |
| // unit tests. |
| name: "LayoutNG", |
| implied_by: ["LayoutNGGrid", "BidiCaretAffinity"], |
| status: "stable", |
| }, |
| { |
| name: "LayoutNGBlockFragmentation", |
| implied_by: ["LayoutNGPrinting"], |
| }, |
| { |
| name: "LayoutNGFieldset", |
| depends_on: ["LayoutNG"], |
| status: "stable", |
| }, |
| { |
| name: "LayoutNGForControls", |
| depends_on: ["LayoutNG"], |
| status: "stable", |
| }, |
| { |
| name: "LayoutNGFragmentItem", |
| implied_by: ["LayoutNGBlockFragmentation", "LayoutNGFragmentTraversal", "EditingNG"], |
| status: "stable", |
| }, |
| { |
| // Traverse the fragment tree when painting and hit-testing, instead of |
| // the layout object tree. |
| name: "LayoutNGFragmentTraversal", |
| implied_by: ["LayoutNGBlockFragmentation"], |
| }, |
| { |
| // Full support for PositionForPoint in NGPhysicalFragment. Without this |
| // enabled, we'll typically fall back to legacy code for block children. |
| name: "LayoutNGFullPositionForPoint", |
| implied_by: ["LayoutNGBlockFragmentation", "LayoutNGFragmentTraversal"], |
| }, |
| { |
| name: "LayoutNGGrid", |
| }, |
| { |
| name: "LayoutNGLayoutOverflow", |
| depends_on: ["LayoutNG", "LayoutNGFragmentItem"], |
| status: "stable", |
| }, |
| { |
| name: "LayoutNGPrinting", |
| }, |
| { |
| name: "LayoutNGReplaced", |
| depends_on: ["LayoutNG"] |
| }, |
| { |
| name: "LayoutNGTable", |
| depends_on: ["LayoutNG"] |
| }, |
| { |
| name: "LayoutNGTextControl", |
| depends_on: ["EditingNG"], |
| // In Chrome, the flag is managed by Finch. |
| status: "test", |
| }, |
| { |
| name: "LayoutNGWebkitBox", |
| status: "stable", |
| }, |
| { |
| name: "LazyFrameLoading", |
| status: "stable", |
| }, |
| { |
| name: "LazyFrameVisibleLoadTimeMetrics", |
| }, |
| { |
| name: "LazyImageLoading", |
| status: "stable", |
| }, |
| { |
| name: "LazyImageVisibleLoadTimeMetrics", |
| }, |
| { |
| name: "LazyInitializeMediaControls", |
| // This is enabled by features::kLazyInitializeMediaControls. |
| }, |
| { |
| name: "LegacyWindowsDWriteFontFallback", |
| // Enabled by features::kLegacyWindowsDWriteFontFallback; |
| }, |
| { |
| // TODO(crbug.com/1087043): Remove this once the feature has |
| // landed and no compat issues are reported. |
| name: "LinkDisabledNewSpecBehavior", |
| status: "stable", |
| }, |
| { |
| name:"ManualSlotting", |
| status:"stable", |
| }, |
| { |
| name: "MathMLCore", |
| status:"experimental", |
| depends_on: ["LayoutNG"], |
| }, |
| { |
| name:"MeasureMemory", |
| origin_trial_feature_name: "MeasureMemory", |
| status:"experimental", |
| }, |
| { |
| name: "MediaCapabilitiesDynamicRange", |
| status: "test", |
| }, |
| { |
| name: "MediaCapabilitiesEncodingInfo", |
| status: "experimental", |
| }, |
| { |
| name: "MediaCapabilitiesEncryptedMedia", |
| status: "stable", |
| }, |
| { |
| name: "MediaCapabilitiesSpatialAudio", |
| status: "test", |
| }, |
| { |
| name: "MediaCapture", |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "MediaCaptureDepthVideoKind", |
| status: "experimental", |
| }, |
| // Set to reflect the MediaCastOverlayButton feature. |
| { |
| name: "MediaCastOverlayButton", |
| }, |
| { |
| name: "MediaControlsExpandGesture" |
| }, |
| { |
| name: "MediaControlsOverlayPlayButton", |
| settable_from_internals: true, |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "MediaControlsUseCutOutByDefault", |
| status: "stable", |
| }, |
| { |
| name: "MediaDocumentDownloadButton", |
| }, |
| { |
| name: "MediaElementVolumeGreaterThanOne", |
| }, |
| // Set to reflect the kMediaEngagementBypassAutoplayPolicies feature. |
| { |
| name: "MediaEngagementBypassAutoplayPolicies", |
| }, |
| // Media Feeds: https://wicg.github.io/media-feeds/ |
| // Set to reflect the kMediaFeeds feature. |
| { |
| name: "MediaFeeds", |
| status: "experimental", |
| }, |
| { |
| name: "MediaLatencyHint", |
| status: "test", |
| }, |
| { |
| name: "MediaPreservesPitch", |
| status: "stable", |
| }, |
| { |
| name: "MediaQueryNavigationControls", |
| }, |
| { |
| name: "MediaSession", |
| status: "stable", |
| }, |
| { |
| name: "MediaSessionPosition", |
| status: "stable", |
| }, |
| { |
| name: "MediaSourceExperimental", |
| status: "experimental", |
| }, |
| { |
| name: "MediaSourceExtensionsForWebCodecs", |
| status: "experimental", |
| }, |
| { |
| name: "MediaSourceInWorkers", |
| status: "experimental", |
| }, |
| { |
| name: "MediaSourceNewAbortAndDuration", |
| status: "experimental", |
| }, |
| { |
| // This is used in cases of mixed specification of stable and |
| // experimental MediaSource features, such as in the IDL for an interface |
| // constructor where exposure of the constructor in Window vs other |
| // contexts can vary in stable vs experimental. |
| name: "MediaSourceStable", |
| status: "stable", |
| }, |
| { |
| name: "MediaStreamInsertableStreams", |
| status: "experimental", |
| }, |
| // This is enabled by default on Windows only. The only part that's |
| // "experimental" is the support on other platforms. |
| { |
| name: "MiddleClickAutoscroll", |
| status: "test", |
| }, |
| { |
| |
| name: "MobileLayoutTheme", |
| }, |
| { |
| name: "ModuleServiceWorker", |
| status: "test", |
| }, |
| { |
| name: "ModuleSharedWorker", |
| status: "stable", |
| }, |
| { |
| name: "MojoJS", |
| status: "test", |
| }, |
| // MojoJSTest is used exclusively in testing environments, whereas MojoJS |
| // may also be used elsewhere. |
| { |
| name: "MojoJSTest", |
| status: "test", |
| }, |
| { |
| // When enabled, iframes are not capturing mouse events by default. |
| name: "MouseSubframeNoImplicitCapture", |
| }, |
| { |
| // Named pages for pagination (the "page" CSS property). |
| name: "NamedPages", |
| status: "stable", |
| }, |
| { |
| name: "NativeIO", |
| status: "experimental", |
| }, |
| { |
| name: "NavigatorContentUtils", |
| // Android does not yet support NavigatorContentUtils. |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| // Allows the navigator.language and navigator.languages APIs in insecure |
| // contexts, which https://github.com/WICG/lang-client-hint proposes that |
| // we deprecate. |
| name: "NavigatorLanguageInInsecureContext", |
| settable_from_internals: true, |
| status: "stable", |
| }, |
| { |
| name: "NetInfoDownlinkMax", |
| // Only Android, ChromeOS support NetInfo downlinkMax, type and ontypechange now |
| status: {"Android": "stable", "ChromeOS": "stable", "default": "experimental"}, |
| }, |
| { |
| name: "NeverSlowMode", |
| }, |
| { |
| name: "NewCanvas2DAPI", |
| status: "experimental", |
| }, |
| // Not a web exposed feature, enabled from the command line. |
| { |
| name: "NewRemotePlaybackPipeline", |
| }, |
| { |
| name: "NoIdleEncodingForWebTests", |
| status: "test", |
| }, |
| { |
| name: "NotificationConstructor", |
| // Android won't be able to reliably support non-persistent notifications, the |
| // intended behavior for which is in flux by itself. |
| status: {"Android": "", "default": "stable"}, |
| }, |
| // NotificationContentImage is not available in all platforms |
| // The Notification Center on Mac OS X does not support content images. |
| { |
| name: "NotificationContentImage", |
| status: {"Mac": "test", "default": "stable"}, |
| }, |
| { |
| name: "Notifications", |
| status: "stable", |
| }, |
| { |
| name: "NotificationTriggers", |
| origin_trial_feature_name: "NotificationTriggers", |
| status: "experimental", |
| }, |
| { |
| name: "OffMainThreadCSSPaint", |
| status: "stable", |
| }, |
| { |
| name: "OffscreenCanvasCommit", |
| status: "experimental", |
| }, |
| { |
| name: "OnDeviceChange", |
| // Android does not yet support SystemMonitor. |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "OrientationEvent", |
| status: {"Android": "stable"}, |
| }, |
| { |
| name: "OriginIsolationHeader", |
| status: "experimental", |
| }, |
| { |
| name: "OriginPolicy", |
| status: "experimental", |
| }, |
| |
| // Define a sample API for testing integration with the Origin Trials |
| // Framework. The sample API is used in both unit and web tests for the |
| // Origin Trials Framework. Do not change this flag to stable, as it exists |
| // solely to generate code used by the sample API implementation. |
| { |
| name: "OriginTrialsSampleAPI", |
| origin_trial_feature_name: "Frobulate", |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| // TODO(yashard): Add tests for this feature. |
| { |
| name: "OriginTrialsSampleAPIDependent", |
| depends_on: ["OriginTrialsSampleAPI"], |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| { |
| name: "OriginTrialsSampleAPIDeprecation", |
| origin_trial_feature_name: "FrobulateDeprecation", |
| origin_trial_type: "deprecation", |
| origin_trial_allows_insecure: true, |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| { |
| name: "OriginTrialsSampleAPIImplied", |
| origin_trial_feature_name: "FrobulateImplied", |
| implied_by: ["OriginTrialsSampleAPI", "OriginTrialsSampleAPIInvalidOS"], |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| { |
| name: "OriginTrialsSampleAPIInvalidOS", |
| origin_trial_feature_name: "FrobulateInvalidOS", |
| origin_trial_os: ["invalid"], |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| { |
| name: "OriginTrialsSampleAPINavigation", |
| origin_trial_feature_name: "FrobulateNavigation", |
| }, |
| // As above. Do not change this flag to stable, as it exists solely to |
| // generate code used by the origin trials sample API implementation. |
| { |
| name: "OriginTrialsSampleAPIThirdParty", |
| origin_trial_feature_name: "FrobulateThirdParty", |
| origin_trial_allows_third_party: true, |
| }, |
| { |
| name: "OverflowClip", |
| status: "test", |
| }, |
| { |
| name: "OverscrollCustomization", |
| settable_from_internals: true, |
| status: "experimental", |
| }, |
| // The following are developer opt-outs and opt-ins for page freezing. If |
| // neither is specified then heuristics will be applied to determine whether |
| // the page is eligible. |
| { |
| name: "PageFreezeOptIn", |
| origin_trial_feature_name: "PageFreezeOptIn", |
| }, |
| { |
| name: "PageFreezeOptOut", |
| origin_trial_feature_name: "PageFreezeOptOut", |
| }, |
| { |
| name: "PagePopup", |
| // Android does not have support for PagePopup |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "PaintUnderInvalidationChecking", |
| settable_from_internals: true, |
| }, |
| { |
| name: "ParentNodeReplaceChildren", |
| status: "stable", |
| }, |
| { |
| // This flag enables the Manifest parser to handle URL Protocols. |
| name: "ParseUrlProtocolHandler", |
| status: "test", |
| }, |
| { |
| name: "PassPaintVisualRectToCompositor", |
| }, |
| // This is to add an option to enable the Reveal button on password inputs while waiting ::reveal gets standardized. |
| { |
| name: "PasswordReveal", |
| }, |
| { |
| name: "PaymentApp", |
| status: "experimental", |
| }, |
| { |
| name: "PaymentHandlerChangePaymentMethod", |
| status: "stable", |
| }, |
| { |
| name: "PaymentHandlerHandlesShippingAndContact", |
| status: "stable", |
| }, |
| { |
| name: "PaymentHandlerMinimalUI", |
| status: "experimental", |
| }, |
| { |
| name: "PaymentMethodChangeEvent", |
| status: "stable", |
| }, |
| // PaymentRequest is enabled by default on Android |
| { |
| name: "PaymentRequest", |
| status: "experimental", |
| }, |
| { |
| name: "PaymentRequestMerchantValidationEvent", |
| status: "experimental", |
| }, |
| // Enables the correct behavior for show(): crbug.com/825270 |
| { |
| name: "PaymentRequestShowConsumesUserActivation", |
| }, |
| { |
| name: "PaymentRetry", |
| status: "stable", |
| }, |
| { |
| name: "PercentBasedScrolling", |
| settable_from_internals: true, |
| }, |
| { |
| name: "PerformanceManagerInstrumentation", |
| }, |
| { |
| name: "PeriodicBackgroundSync", |
| status: "stable", |
| }, |
| { |
| name: "PerMethodCanMakePaymentQuota", |
| origin_trial_feature_name: "PerMethodCanMakePaymentQuota", |
| status: "experimental", |
| }, |
| { |
| name: "PermissionDelegation", |
| status: "test", |
| }, |
| { |
| name: "Permissions", |
| status: "stable", |
| }, |
| { |
| name: "PermissionsPolicyHeader", |
| status: "stable" |
| }, |
| { |
| name: "PermissionsRequestRevoke", |
| status: "experimental", |
| }, |
| { |
| name: "PictureInPicture", |
| settable_from_internals: true, |
| }, |
| // Picture-in-Picture API is disabled by default on Android. |
| { |
| name: "PictureInPictureAPI", |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "PictureInPictureV2", |
| depends_on: ["PictureInPictureAPI"], |
| settable_from_internals: true, |
| }, |
| // This is a reverse OT used for a phased deprecation. |
| // https://crbug.com/918374 |
| { |
| name: "PNaCl", |
| origin_trial_feature_name: "PNaCl", |
| }, |
| { |
| name: "PointerLockOptions", |
| origin_trial_feature_name: "PointerLockOptions", |
| status: 'experimental', |
| }, |
| { |
| name: "PointerRawUpdate", |
| status: "stable", |
| }, |
| { |
| name: "Portals", |
| // Portals must be enabled by blink::features::kPortals as we require the |
| // support of the browser process to enable the feature. Enabling this |
| // feature specifically within blink has no effect. An experimental/test |
| // status can only be set here if the default of blink::features::kPortals |
| // allows for it. |
| status: {"Android": "experimental"}, |
| origin_trial_feature_name: "Portals", |
| origin_trial_os: ["android"], |
| }, |
| { |
| name: "PreciseMemoryInfo", |
| }, |
| // 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: "PrefersContrast", |
| depends_on: ["ForcedColors"], |
| }, |
| { |
| name: 'PrefersReducedData', |
| status: 'experimental', |
| }, |
| // This feature is deprecated and we are evangelizing affected sites. |
| // See https://crbug.com/346236 for current status. |
| { |
| name: "PrefixedVideoFullscreen", |
| status: "stable", |
| }, |
| { |
| name: "Presentation", |
| status: "stable", |
| }, |
| { |
| name: "PriorityHints", |
| origin_trial_feature_name: "PriorityHints", |
| status: "experimental", |
| }, |
| { |
| name: "PushMessaging", |
| status: "stable", |
| }, |
| { |
| name: "PushMessagingSubscriptionChange", |
| status: "experimental", |
| }, |
| { |
| name: "QuicTransport", |
| origin_trial_feature_name: "QuicTransport", |
| status: "experimental", |
| }, |
| { |
| name: "QuotaChange", |
| status: "experimental", |
| }, |
| { |
| // Enabled when blink::features::kRawClipboard is enabled. |
| name: "RawClipboard", |
| }, |
| { |
| name: "ReadableByteStream", |
| status: "stable", |
| }, |
| { |
| name: "RemotePlayback", |
| status: "stable", |
| }, |
| { |
| name: "RemotePlaybackBackend", |
| settable_from_internals: true, |
| // Tracking bug for the implementation: https://crbug.com/728609 |
| status: {"Android": "stable", "default": ""}, |
| }, |
| { |
| // See https://crbug.com/1012063 |
| name: "RequestVideoFrameCallback", |
| status: "stable", |
| }, |
| { |
| name: "ResizeObserverUpdates", |
| status: "stable", |
| }, |
| { |
| name: "RestrictAutomaticLazyFrameLoadingToDataSaver", |
| depends_on: ["AutomaticLazyFrameLoading"], |
| status: "stable", |
| }, |
| { |
| name: "RestrictAutomaticLazyImageLoadingToDataSaver", |
| depends_on: ["AutomaticLazyImageLoading"], |
| status: "stable", |
| }, |
| { |
| name: "RestrictGamepadAccess", |
| status: "experimental", |
| }, |
| { |
| name: "RTCAdaptivePtime", |
| origin_trial_feature_name: "RTCAdaptivePtime", |
| status: "experimental", |
| }, |
| { |
| name: "RtcAudioJitterBufferMaxPackets", |
| origin_trial_feature_name: "RtcAudioJitterBufferMaxPackets", |
| status: "experimental", |
| }, |
| { |
| name: "RtcAudioJitterBufferRtxHandling", |
| origin_trial_feature_name: "RtcAudioJitterBufferRtxHandling", |
| status: "experimental", |
| }, |
| // Enables the use of the RTCIceTransport with extensions. |
| { |
| name: "RTCIceTransportExtension", |
| origin_trial_feature_name: "RTCQuicTransport", |
| status: "experimental", |
| }, |
| // Enables the use of the Insertable Streams legacy API. |
| // TODO(https://crbug.com/1119801): Remove when the origin trial ends. |
| { |
| name: "RTCInsertableStreams", |
| origin_trial_feature_name: "RTCInsertableStreams", |
| status: "experimental", |
| }, |
| // Enables the use of the RTCQuicTransport object. |
| { |
| name: "RTCQuicTransport", |
| origin_trial_feature_name: "RTCQuicTransport", |
| status: "experimental", |
| }, |
| // Enables the use of |RTCRtpTransceiver::stop()| |
| { |
| name: "RTCRtpTransceiverStop", |
| status: "stable", |
| }, |
| { |
| name: "RTCStatsRelativePacketArrivalDelay", |
| origin_trial_feature_name: "RTCStatsRelativePacketArrivalDelay", |
| status: "experimental", |
| }, |
| // Enables the use of SVC scalability mode in WebRTC. |
| // Spec: https://w3c.github.io/webrtc-svc/ |
| { |
| name: "RTCSvcScalabilityMode", |
| status: "experimental", |
| }, |
| // Enables the use of |RTCConfiguration::sdpSemantics| to override the |
| // default SDP semantics at RTCPeerConnection construction. |
| { |
| name: "RTCUnifiedPlan", |
| status: "stable", |
| }, |
| // Overrides the default SDP semantics to be Unified Plan at |
| // RTCPeerConnection construction (unless otherwise specified). |
| { |
| name: "RTCUnifiedPlanByDefault", |
| }, |
| { |
| name: "SameSiteByDefaultCookies", |
| status: "test", |
| }, |
| { |
| name: "SanitizerAPI", |
| status: "test", |
| }, |
| { |
| name: "ScreenFold", |
| status: "experimental", |
| }, |
| { |
| name: "ScreenWakeLock", |
| status: "stable", |
| }, |
| // WebSpeech API with both speech recognition and synthesis functionality |
| // is not fully enabled on all platforms. |
| { |
| name: "ScriptedSpeechRecognition", |
| status: "stable", |
| }, |
| { |
| name: "ScriptedSpeechSynthesis", |
| status: "stable", |
| }, |
| { |
| name: "ScrollbarGutter", |
| status: "experimental", |
| }, |
| { |
| name: "ScrollbarWidth", |
| status: "test", |
| }, |
| { |
| name: "ScrollCustomization", |
| }, |
| { |
| name: "ScrollSnapAfterLayout", |
| status: "stable", |
| }, |
| { |
| name: "ScrollTimeline", |
| status: "experimental", |
| implied_by: ['AnimationWorklet', 'CSSScrollTimeline'] |
| }, |
| // Implements documentElement.scrollTop/Left and bodyElement.scrollTop/Left |
| // as per the spec, matching other Web engines. |
| { |
| name: "ScrollTopLeftInterop", |
| status: "stable", |
| }, |
| { |
| name: "ScrollUnification", |
| }, |
| { |
| name: "SecurePaymentConfirmation", |
| origin_trial_feature_name: "SecurePaymentConfirmation", |
| origin_trial_os: ["mac"], |
| status: "experimental", |
| }, |
| { |
| name: "SecurePaymentConfirmationDebug", |
| }, |
| { |
| name: "SendBeaconThrowForBlobWithNonSimpleType", |
| status: "stable", |
| }, |
| { |
| name: "SendMouseEventsDisabledFormControls", |
| status: "experimental", |
| }, |
| { |
| name: "SensorExtraClasses", |
| status: "experimental", |
| }, |
| { |
| name: "Serial", |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "ServiceWorkerClientLifecycleState", |
| status: "experimental", |
| }, |
| { |
| name: "ServiceWorkerFetchEventWorkerTiming", |
| status: "experimental", |
| }, |
| // TODO(937746): Web Components v0 is disabled by default, and will be |
| // removed after M87. |
| { |
| name: "ShadowDOMV0", |
| status: "test", |
| }, |
| { |
| name: "SharedArrayBuffer", |
| status: "stable", |
| }, |
| { |
| name: "SharedWorker", |
| // Android does not yet support SharedWorker. crbug.com/154571 |
| status: {"Android": "", "default": "stable"}, |
| }, |
| { |
| name: "SignatureBasedIntegrity", |
| origin_trial_feature_name: "SignatureBasedIntegrity", |
| status: "experimental", |
| }, |
| { |
| name: "SignedExchangePrefetchCacheForNavigations", |
| status: "experimental", |
| }, |
| { |
| name: "SignedExchangeSubresourcePrefetch", |
| origin_trial_feature_name: "SignedExchangeSubresourcePrefetch", |
| status: "experimental", |
| }, |
| { |
| name: "SkipAd", |
| depends_on: ["MediaSession"], |
| origin_trial_feature_name: "SkipAd", |
| status: "experimental", |
| }, |
| { |
| name: "SkipTouchEventFilter", |
| settable_from_internals: true, |
| }, |
| { |
| name: "SrcsetMaxDensity", |
| }, |
| // Used as argument in attribute of stable-release functions/interfaces |
| // where a runtime-enabled feature name is required for correct IDL syntax. |
| // This is a global flag; do not change its status. |
| { |
| name: "StableBlinkFeatures", |
| status: "stable", |
| }, |
| { |
| // Enabled when blink::features::kStorageAccessAPI is enabled. |
| name: "StorageAccessAPI", |
| status: "test", |
| }, |
| { |
| name: "StorageBuckets", |
| status: "experimental", |
| }, |
| { |
| name: "StrictMimeTypesForWorkers", |
| status: "experimental" |
| }, |
| { |
| name: "SubresourceWebBundles", |
| origin_trial_feature_name: "SubresourceWebBundles", |
| origin_trial_allows_third_party: true, |
| status: "test" |
| }, |
| { |
| name: "SummaryListItem", |
| status: "stable", |
| }, |
| { |
| name: "SurfaceEmbeddingFeatures", |
| status: "stable", |
| }, |
| { |
| name: "SystemWakeLock", |
| status: "experimental", |
| }, |
| { |
| name: "TableCellNewPercents", |
| depends_on: ["LayoutNG"], |
| status: "stable", |
| }, |
| { |
| // TODO(crbug.com/898942): Remove this in Chrome 95. |
| name: "TargetBlankImpliesNoOpener", |
| status: "stable", |
| }, |
| // For unit tests. |
| { |
| name: "TestFeature", |
| }, |
| // For unit tests. |
| { |
| name: "TestFeatureDependent", |
| depends_on: ["TestFeatureImplied"], |
| }, |
| // For unit tests. |
| { |
| name: "TestFeatureImplied", |
| implied_by: ["TestFeature"], |
| }, |
| { |
| name: "TextDetector", |
| status: "experimental", |
| }, |
| { |
| name: "TextFragmentIdentifiers", |
| origin_trial_feature_name: "TextFragmentIdentifiers", |
| status: "stable", |
| }, |
| { |
| name: "ThirdPartyOriginTrials", |
| status: "stable", |
| }, |
| { |
| name: "TimerThrottlingForBackgroundTabs", |
| status: "stable", |
| }, |
| { |
| name: "TimerThrottlingForHiddenFrames", |
| status: "stable", |
| }, |
| { |
| name: "TimeZoneChangeEvent", |
| status: "experimental", |
| }, |
| // 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", |
| status: "stable", |
| }, |
| { |
| name: "TransferableStreams", |
| status: "stable", |
| origin_trial_feature_name: "RTCInsertableStreams", |
| implied_by: ["RTCInsertableStreams"], |
| }, |
| // When enabled, enforces new interoperable semantics for 3D transforms. |
| // See crbug.com/1008483. |
| { |
| name: "TransformInterop", |
| }, |
| // This is conditionally set if the platform supports translation. |
| { |
| name: "TranslateService" |
| }, |
| { |
| name: "TrustedDOMTypes", |
| status: "stable", |
| }, |
| { |
| name: "TrustedTypeBeforePolicyCreationEvent", |
| status: "experimental", |
| }, |
| { |
| name: "TrustedTypesUseCodeLike", |
| status: "experimental", |
| }, |
| { |
| name: "TrustTokens", |
| origin_trial_feature_name: "TrustTokens", |
| origin_trial_allows_third_party: true, |
| status: "test", |
| }, |
| { |
| // Always allow trust token issuance (so long as the base::Feature |
| // is enabled). Used for testing; circumvents a runtime check that, |
| // if this RuntimeEnabledFeature is not present, guarantees the origin |
| // trial is enabled. |
| name: "TrustTokensAlwaysAllowIssuance", |
| status: "test", |
| }, |
| { |
| name: "UnclosedFormControlIsInvalid", |
| status: "experimental", |
| }, |
| { |
| name: "UnderlineOffsetThickness", |
| status: "stable", |
| }, |
| { |
| name: "URLPattern", |
| status: "experimental", |
| }, |
| { |
| name: "UserActivationSameOriginVisibility", |
| }, |
| { |
| name: "UserAgentClientHint", |
| status: "experimental", |
| }, |
| { |
| name: "V8IdleTasks", |
| }, |
| { |
| // Whether a video element should automatically play fullscreen unless |
| // 'playsinline' is set. |
| name: "VideoAutoFullscreen", |
| settable_from_internals: true, |
| }, |
| { |
| name: "VideoFullscreenOrientationLock", |
| }, |
| { |
| name: "VideoPlaybackQuality", |
| status: "stable", |
| }, |
| { |
| name: "VideoRotateToFullscreen", |
| }, |
| { |
| name: "VideoWakeLockOptimisationHiddenMuted", |
| status: "stable", |
| }, |
| { |
| name: "VirtualKeyboard", |
| status: "test", |
| }, |
| { |
| name: "VisibilityCollapseColumn", |
| }, |
| { |
| name: "VisibilityStateEntry", |
| status: "experimental", |
| }, |
| { |
| name: "WakeLock", |
| origin_trial_feature_name: "WakeLock", |
| implied_by: ['ScreenWakeLock', 'SystemWakeLock'], |
| }, |
| { |
| name: "WebAnimationsAPI", |
| status: "stable", |
| implied_by: ['AnimationWorklet'] |
| }, |
| { |
| name: "WebAnimationsSVG", |
| status: "experimental", |
| }, |
| { |
| name: "WebAppManifestDisplayOverride", |
| }, |
| { |
| name: "WebAppWindowControlsOverlay", |
| }, |
| { |
| name: "WebAssemblySimd", |
| origin_trial_feature_name: "WebAssemblySimd", |
| status: "test", |
| }, |
| { |
| name: "WebAssemblyThreads", |
| origin_trial_feature_name: "WebAssemblyThreads", |
| status: "test", |
| }, |
| // WebAuth is disabled on Android versions prior to N (7.0) due to lack of |
| // supporting APIs, see runtime_features.cc. |
| { |
| name: "WebAuth", |
| status: "stable", |
| }, |
| { |
| name: "WebAuthenticationGetAssertionFeaturePolicy", |
| status: "experimental", |
| }, |
| { |
| name: "WebAuthenticationLargeBlobExtension", |
| status: "experimental", |
| }, |
| { |
| name: "WebAuthenticationResidentKeyRequirement", |
| status: "experimental", |
| }, |
| // WebBluetooth is enabled by default on Android, ChromeOS and Mac. |
| // It is also supported in Windows 10 which is handled in runtime_features.cc |
| { |
| name: "WebBluetooth", |
| status: { |
| "Android": "stable", |
| "ChromeOS": "stable", |
| "Mac": "stable", |
| "default": "experimental", |
| }, |
| }, |
| { |
| name: "WebBluetoothGetDevices", |
| status: "experimental", |
| }, |
| { |
| name: "WebBluetoothRemoteCharacteristicNewWriteValue", |
| status: { |
| "Android": "stable", |
| "ChromeOS": "stable", |
| "Mac": "stable", |
| "default": "experimental", |
| }, |
| }, |
| { |
| name: "WebBluetoothScanning", |
| status: "experimental", |
| }, |
| { |
| name: "WebBluetoothWatchAdvertisements", |
| status: "experimental", |
| }, |
| { |
| name: "WebCodecs", |
| status: "experimental", |
| origin_trial_feature_name: "WebCodecs" |
| }, |
| { |
| name: "WebCryptoCurve25519", |
| status: "experimental", |
| }, |
| { |
| name: "WebGLDraftExtensions", |
| status: "experimental", |
| }, |
| { |
| name: "WebGLImageChromium", |
| }, |
| // WebGPU adds a large attack surface area to the GPU process and allows |
| // running arbitrary programs on the GPU (compute shaders), which may |
| // perform arbitrary read/writes of GPU memory if not properly sandboxed. |
| // That's why it is not enabled as part of the |
| // --enable-experimental-web-platform-features flag. |
| { |
| name: "WebGPU", |
| }, |
| { |
| name: "WebHID", |
| origin_trial_feature_name: "WebHID", |
| status: {"Android": "", "default": "experimental"}, |
| }, |
| { |
| name: "WebID", |
| }, |
| { |
| name: "WebNFC", |
| status: "experimental", |
| }, |
| { |
| name: "WebOTP", |
| status: {"default": "experimental", "Android": "stable"}, |
| }, |
| { |
| name: "WebOTPAssertionFeaturePolicy", |
| status: "experimental", |
| depends_on: ["WebOTP"], |
| }, |
| { |
| name: "WebScheduler", |
| origin_trial_feature_name: "WebScheduler", |
| status: "experimental", |
| }, |
| // WebShare is enabled by default on Android. |
| { |
| name: "WebShare", |
| status: "test", |
| }, |
| { |
| name: "WebSocketStream", |
| status: "experimental", |
| }, |
| { |
| name: "WebUSB", |
| status: "stable", |
| }, |
| { |
| name: "WebUSBOnDedicatedWorkers", |
| status: "stable", |
| depends_on: ["WebUSB"], |
| }, |
| { |
| name: "WebVTTRegions", |
| status: "experimental", |
| }, |
| { |
| name: "WebXR", |
| status: "stable", |
| }, |
| { |
| name: "WebXRAnchors", |
| depends_on: ["WebXRARModule", "WebXRHitTest"], |
| status: "stable" |
| }, |
| { |
| name: "WebXRARModule", |
| depends_on: ["WebXR"], |
| status: "stable", |
| }, |
| { |
| name: "WebXRCameraAccess", |
| depends_on: ["WebXRARModule"], |
| status: "experimental", |
| }, |
| { |
| name: "WebXRDepth", |
| origin_trial_feature_name: "WebXRDepth", |
| depends_on: ["WebXRARModule"], |
| status: "experimental", |
| }, |
| { |
| name: "WebXRHitTest", |
| depends_on: ["WebXRARModule"], |
| status: "stable", |
| }, |
| { |
| name: "WebXRHitTestEntityTypes", |
| depends_on: ["WebXRHitTest"], |
| status: "experimental" |
| }, |
| { |
| name: "WebXRImageTracking", |
| depends_on: ["WebXRARModule"], |
| status: "experimental", |
| }, |
| { |
| name: "WebXRLightEstimation", |
| origin_trial_feature_name: "WebXRLightEstimation", |
| depends_on: ["WebXRARModule"], |
| status: "experimental", |
| }, |
| { |
| name: "WebXRMultiGpu", |
| depends_on: ["WebXR"], |
| // Enabled when blink::features::kWebXrMultiGpu is enabled. |
| status: "stable", |
| }, |
| { |
| name: "WebXRPlaneDetection", |
| depends_on: ["WebXRARModule"], |
| status: "experimental", |
| }, |
| { |
| name: "WebXRViewportScale", |
| depends_on: ["WebXRARModule"], |
| status: "experimental", |
| }, |
| { |
| name: "WheelEventRegions", |
| }, |
| // Extends window placement functionality for multi-screen devices. Also |
| // exposes requisite information about displays connected to the device. |
| { |
| name: "WindowPlacement", |
| origin_trial_feature_name: "WindowPlacement", |
| status: "experimental", |
| }, |
| { |
| name: "WindowSegments", |
| status: "experimental", |
| }, |
| { |
| name: "XSLT", |
| status: "stable", |
| }, |
| ], |
| } |