| { | |
| // See third_party/blink/renderer/platform/RuntimeEnabledFeatures.md | |
| // | |
| // This list is used to generate runtime_enabled_features.h/cc which contains | |
| // a class that stores static enablers for all experimental features. | |
| parameters: { | |
| // Each feature can be assigned a "status". The "status" can be either | |
| // one of the values in the |valid_values| list or a dictionary of | |
| // the platforms listed in |valid_keys| to |valid_values|. | |
| // Use "default" as the key if you want to specify the status of | |
| // the platforms other than the ones declared in the dictionary. | |
| // ** Omitting "default" means the feature is not enabled on | |
| // the platforms not listed in the status dictionary | |
| // | |
| // Definition of each status: | |
| // * status=stable: Enable this in all Blink configurations. We are | |
| // committed to these APIs indefinitely. | |
| // * status=experimental: In-progress features, Web Developers might play | |
| // with, but are not on by default in stable. These features may be | |
| // turned on using the "Experimental Web Platform features" flag in | |
| // chrome://flags/#enable-experimental-web-platform-features. | |
| // * status=test: Enabled in ContentShell for testing, otherwise off. | |
| // Features without a status are not enabled anywhere by default. | |
| // | |
| // Example of the dictionary value use: | |
| // { | |
| // name: "ExampleFeature", | |
| // status: {"Android": "stable", "Win": "experimental"}, | |
| // } | |
| // "ExampleFeature" will be stable on Android/WebView, experimental | |
| // on Windows and not enabled on any other platform. | |
| // | |
| // Note that the Android status key implies Chrome for Android and WebView. | |
| // | |
| // "stable" features listed here should be rare, as anything which we've | |
| // shipped stable can have its runtime flag removed soon after. | |
| status: { | |
| valid_values: ["stable", "experimental", "test"], | |
| valid_keys: ["Android", "Win", "ChromeOS", "Mac", "Linux", "iOS", "Fuchsia"] | |
| }, | |
| // "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 works only if base_feature is not "none". | |
| // | |
| // * "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, we require the base::Feature to be enabled | |
| // by default, but we don't want the default enabled status to affect the | |
| // Blink feature. See RuntimeEnabledFeatures.md for a detailed explanation | |
| // of how this works. See also https://crbug.com/1048656#c10. | |
| // This can also be used for features that are enabled by default in | |
| // Chromium but not in Blink on all platforms and we want to use the Blink | |
| // status. However, we would prefer consistent Chromium and Blink status | |
| // to this. | |
| copied_from_base_feature_if: { | |
| valid_type: "str", | |
| valid_values: ["enabled_or_overridden", "overridden"], | |
| default: "enabled_or_overridden", | |
| }, | |
| // browser_process_read_access indicates the runtime feature state should be | |
| // readable in the browserprocess via RuntimeFeatureStateReadContext. | |
| // TODO(crbug.com/1377000): this feature does not support origin trial | |
| // tokens provided in HTTP headers. Any tokens provided via HTTP header will | |
| // be dropped. Please inform developers they must embed the token in HTML. | |
| browser_process_read_access: { | |
| default: false, | |
| value_type: "bool", | |
| }, | |
| // browser_process_read_write_access indicates the runtime feature state | |
| // should be writable in the browserprocess via RuntimeFeatureStateContext. | |
| // TODO(crbug.com/1377000): this feature does not support origin trial | |
| // tokens provided in HTTP headers. Any tokens provided via HTTP header will | |
| // be dropped. Please inform developers they must embed the token in HTML. | |
| browser_process_read_write_access: { | |
| default: false, | |
| value_type: "bool", | |
| }, | |
| // `custom_enable_check` declares a method on `RuntimeEnabledFeaturesBase`; | |
| // authors must provide a corresponding definition of the method in | |
| // runtime_enabled_feature_checks.cc. Typically used to guard powerful or | |
| // security-sensitive features; failing the check may, but is not required, | |
| // be fatal. | |
| // | |
| // Some caveats: | |
| // Whatever state a check consults is outside the standard feature flags | |
| // that RuntimeEnabledFeatures::Backup saves and restores, so a guarded | |
| // feature should also typically provide a scoper for tests that need to | |
| // manipulate it. | |
| // | |
| // This option is mutually exclusive with: | |
| // - `browser_process_read_access` | |
| // - `browser_process_read_write_access` | |
| // - `origin_trial_feature_name` | |
| // - `public` | |
| // - `settable_from_internals` | |
| // as these provide a way of reading or writing the feature state that would | |
| // likely bypass the coordination required with a custom enable check. | |
| // | |
| // It is also mutually exclusive with: | |
| // - `depends_on` | |
| // - `implied_by` | |
| // as these make the feature depend on the state of other features. | |
| custom_enable_check: { | |
| default: "", | |
| valid_type: "str", | |
| } | |
| }, | |
| data: [ | |
| { | |
| // This flag changes about:blank to dark in dark mode on user action. | |
| name: "AboutBlankPageRespectsDarkModeOnUserAction", | |
| status: "stable", | |
| }, | |
| { | |
| name: "Accelerated2dCanvas", | |
| settable_from_internals: true, | |
| status: "stable", | |
| }, | |
| { | |
| name: "AcceleratedSmallCanvases", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/409809747 | |
| name: "AccessibilityCheckIfcInPreviousTextOnLine", | |
| status: "stable", | |
| }, | |
| { | |
| name: "AccessibilityCustomElementRoleNone", | |
| public: true, | |
| status: "test", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "AccessibilityExposeDisplayNone", | |
| status: "test", | |
| }, | |
| { | |
| // If the author did not define aria-actions, surface button and link | |
| // children inside option and menuitem elements as implicit actions. | |
| name: "AccessibilityImplicitActions", | |
| status: "experimental", | |
| }, | |
| { | |
| // Use a minimum role of group on elements that are keyboard-focusable. | |
| // See https://w3c.github.io/html-aam/#minimum-role. | |
| name: "AccessibilityMinRoleTabbable", | |
| }, | |
| { | |
| name: "AccessibilityOSLevelBoldText", | |
| status: "experimental", | |
| public: true, | |
| }, | |
| { | |
| // Enforce no accessible name on objects that have a role where names are | |
| // prohibited (listed in https://w3c.github.io/aria/#namefromprohibited): | |
| // log a friendly error in the developer console, and trigger a DCHECK(). | |
| // The incorrect markup situation will be repaired, and the name will | |
| // be exposed as a description instead. | |
| // TODO(crbug.com/350528330, | |
| // https://github.com/web-platform-tests/interop-accessibility/issues/133, | |
| // https://github.com/w3c/accname/issues/240, | |
| // https://github.com/w3c/accname/issues/241): If community feedback is | |
| // positive, and WPT + accname testable statements are updated to allow | |
| // this, then add status: test. | |
| name: "AccessibilityProhibitedNames", | |
| }, | |
| { | |
| name: "AccessibilitySerializationSizeMetrics", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "AccessibilityUseAXPositionForDocumentMarkers", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| // https://chromestatus.com/feature/5113389252739072 | |
| // https://issues.chromium.org/issues/41119923 | |
| name: "AccessKeyLabel", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "AddressSpace", | |
| status: "experimental", | |
| implied_by: ["CorsRFC1918"], | |
| }, | |
| // 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: "AIDecisionModelAPI", | |
| status: { | |
| "Win": "experimental", | |
| "Mac": "experimental", | |
| "Linux": "experimental", | |
| "ChromeOS": "experimental", | |
| "default": "", | |
| }, | |
| }, | |
| { | |
| name: "AIDecisionModelAPIForWorkers", | |
| status: "test", | |
| }, | |
| { | |
| name: "AIEmbeddingsAPI", | |
| status: "test", | |
| }, | |
| { | |
| name: "AIEmbeddingsAPIForWorkers", | |
| status: "test", | |
| }, | |
| // Strip actionability from content that is positioned offscreen | |
| // via position:fixed and cannot be reached by scrolling. | |
| { | |
| name: "AIPageContentAnchoredFixedOffscreenNonActionability", | |
| status: "stable", | |
| }, | |
| // Strip actionability from content that is positioned offscreen via | |
| // absolute/relative/static positioning and cannot be reached by scrolling. | |
| { | |
| name: "AIPageContentAnchoredNonFixedOffscreenNonActionability", | |
| status: "stable", | |
| }, | |
| // Whether to automatically build an APC content_extraction tree on load. | |
| { | |
| name: "AIPageContentBuildOnLoadForTesting", | |
| }, | |
| // Whether to enforce geometry invariants in AIPageContentAgent. | |
| // Only supported for DCHECK-enabled builds. | |
| { | |
| name: "AIPageContentCheckGeometry", | |
| status: "test" | |
| }, | |
| // Ensures that text content extracted from DOM nodes are valid UTF-8 Before | |
| // providing them to consumers of AIPageContent. | |
| { | |
| name: "AIPageContentConvertNodeTextToUtf8", | |
| status: "stable" | |
| }, | |
| // When enabled, redact elements with --webkit-text-security. | |
| { | |
| name: "AIPageContentElementCSSRedaction", | |
| status: "stable", | |
| }, | |
| { | |
| name: "AIPageContentIncludeMathML", | |
| status: "stable", | |
| }, | |
| { | |
| name: "AIPageContentIncludeSVGSubtree", | |
| status: "stable" | |
| }, | |
| // Add label sources in actionable APC. | |
| { | |
| name: "AIPageContentLabelExpandFallbackSources", | |
| status: "stable", | |
| }, | |
| // Remove labels that duplicate extracted text in any node in its subtree | |
| // or its image caption. Remove SVG root text when extracted child nodes | |
| // already contain it. | |
| { | |
| name: "AIPageContentLabelRemoveRedundant", | |
| }, | |
| // Match labels to whole words or phrases in extracted text in any node in | |
| // its subtree or its image caption, ignoring case. For example: | |
| // - "Password" matches "Enter your password". | |
| // - "lock" does not match "unlock". | |
| // Exact matching still occurs when this is disabled, provided | |
| // AIPageContentLabelRemoveRedundant is enabled. | |
| { | |
| name: "AIPageContentLabelRemoveRedundantWholeWordMatching", | |
| depends_on: ["AIPageContentLabelRemoveRedundant"], | |
| }, | |
| // Use MapToVisualRectInAncestorSpace for outer bounding boxes, for | |
| // math consistent with visual bounding boxes. | |
| { | |
| name: "AIPageContentOuterBoxMapToAncestorSpace", | |
| status: "stable", | |
| }, | |
| { | |
| name: "AIPageContentPaidContentAnnotation", | |
| status: "stable" | |
| }, | |
| // Let fixed wrappers with pointer-events: none use normal APC container | |
| // skipping instead of preserving them automatically. | |
| { | |
| name: "AIPageContentSkipUnclickableFixedOverlays", | |
| status: "stable", | |
| }, | |
| // When enabled, iframe element coordinates will be tracked using the | |
| // Element::SetTrackedElementSubRect() method. | |
| { | |
| name: "AIPageContentTrackedElementsIframe", | |
| status: "stable" | |
| }, | |
| // When enabled, native or heuristics password element coordinates will be | |
| // tracked using the Element::SetTrackedElementSubRect() method. | |
| { | |
| name: "AIPageContentTrackedElementsPassword", | |
| status: "stable" | |
| }, | |
| // Clamp AIPageContent visible bounding boxes to the local-root viewport | |
| // after visual-viewport mapping to normalize viewport-relative geometry. | |
| { | |
| name: "AIPageContentVisualViewportClamp", | |
| status: "stable", | |
| implied_by: ["AIPageContentBuildOnLoadForTesting"], | |
| }, | |
| { | |
| name: "AIPromptAPI", | |
| public: true, | |
| status: { | |
| "Win": "stable", | |
| "Mac": "stable", | |
| "Linux": "stable", | |
| "ChromeOS": "stable", | |
| "default": "", | |
| }, | |
| }, | |
| { | |
| name: "AIPromptAPIForWorkers", | |
| public: true, | |
| }, | |
| { | |
| // Gates access to legacy aliases of renamed "AIPromptAPI" identifiers. | |
| // TODO(crbug.com/498228550): Remove after extension context usage drops. | |
| name: "AIPromptAPILegacyIdentifiers", | |
| public: true, | |
| }, | |
| { | |
| // Gates access to legacy sampling parameter surfaces for "AIPromptAPI". | |
| // Enabled in extension contexts. | |
| name: "AIPromptAPILegacyParams", | |
| public: true, | |
| }, | |
| { | |
| name: "AIPromptAPIMultimodalInput", | |
| status: { | |
| "Win": "stable", | |
| "Mac": "stable", | |
| "Linux": "stable", | |
| "ChromeOS": "stable", | |
| "default": "", | |
| }, | |
| }, | |
| { | |
| // Gates access to inference parameter enhancements for "AIPromptAPI". | |
| // This feature alone does not expose any "AIPromptAPI" feature access. | |
| name: "AIPromptAPIParams", | |
| status: { | |
| "Win": "experimental", | |
| "Mac": "experimental", | |
| "Linux": "experimental", | |
| "ChromeOS": "experimental", | |
| "default": "", | |
| }, | |
| origin_trial_feature_name: "AIPromptAPIParams", | |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], | |
| origin_trial_allows_third_party: true, | |
| }, | |
| { | |
| // Gates access to the responseConstraint enhancement for "AIPromptAPI". | |
| // This feature alone does not expose any "AIPromptAPI" feature access. | |
| name: "AIPromptAPIStructuredOutput", | |
| status: "stable", | |
| }, | |
| { | |
| // Gates access to the tool use (function calling) enhancement for | |
| // "AIPromptAPI". This feature alone does not expose any "AIPromptAPI" | |
| // feature access. | |
| name: "AIPromptAPIToolUse", | |
| status: { | |
| "Win": "experimental", | |
| "Mac": "experimental", | |
| "Linux": "experimental", | |
| "ChromeOS": "experimental", | |
| "default": "", | |
| }, | |
| }, | |
| { | |
| name: "AIProofreadingAPI", | |
| status: { | |
| "Win": "experimental", | |
| "Mac": "experimental", | |
| "Linux": "experimental", | |
| "ChromeOS": "experimental", | |
| "default": "", | |
| }, | |
| origin_trial_feature_name: "AIProofreaderAPI", | |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], | |
| origin_trial_allows_third_party: true, | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| }, | |
| { | |
| name: "AIRewriterAPI", | |
| status: { | |
| "Win": "experimental", | |
| "Mac": "experimental", | |
| "Linux": "experimental", | |
| "ChromeOS": "experimental", | |
| "default": "", | |
| }, | |
| origin_trial_feature_name: "AIRewriterAPI", | |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], | |
| origin_trial_allows_third_party: true, | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| }, | |
| { | |
| name: "AIRewriterAPIForWorkers", | |
| public: true, | |
| }, | |
| { | |
| name: "AISummarizationAPI", | |
| status: { | |
| "Win": "stable", | |
| "Mac": "stable", | |
| "Linux": "stable", | |
| "ChromeOS": "stable", | |
| "default": "", | |
| }, | |
| }, | |
| { | |
| name: "AISummarizationAPIForWorkers", | |
| public: true, | |
| }, | |
| { | |
| name: "AISummarizationPerformancePreference", | |
| status: { | |
| "Win": "experimental", | |
| "Mac": "experimental", | |
| "Linux": "experimental", | |
| "ChromeOS": "experimental", | |
| "default": "", | |
| }, | |
| }, | |
| { | |
| name: "AIWriterAPI", | |
| status: { | |
| "Win": "experimental", | |
| "Mac": "experimental", | |
| "Linux": "experimental", | |
| "ChromeOS": "experimental", | |
| "default": "", | |
| }, | |
| origin_trial_feature_name: "AIWriterAPI", | |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], | |
| origin_trial_allows_third_party: true, | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| }, | |
| { | |
| name: "AIWriterAPIForWorkers", | |
| public: true, | |
| }, | |
| { | |
| name: "AlignZoomToCenter", | |
| status: "stable", | |
| }, | |
| { | |
| name: "AllowContentInitiatedDataUrlNavigations", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "AllowPreloadingWithCSPMetaTag", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "AllowSvgUseToReferenceExternalDocumentRoot", | |
| status: "stable", | |
| }, | |
| { | |
| name: "AllowSyntheticTimingForCanvasCapture", | |
| base_feature: "none", | |
| status: { | |
| "Mac": "stable", | |
| "default": "" | |
| } | |
| }, | |
| { | |
| name: "AllowURNsInIframes", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Instead of creating a new DOMStringList on every access to | |
| // location.ancestorOrigins, return the ancestor origins list | |
| // stored on Document. | |
| // This was added in M147 and can be removed after M149. | |
| // https://issues.chromium.org/issues/483610021 | |
| name: "AncestorOriginsStoredOnDocument", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/415834974 which changes anchor | |
| // positioning adjustments to occur even in cases where there is no | |
| // scrollable overflow. | |
| name: "AnchorPositionAdjustmentWithoutOverflow", | |
| status: "stable", | |
| }, | |
| { | |
| name: "AndroidDownloadableFontsMatching", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| // https://chromestatus.com/feature/6046278267043840 | |
| name: "AnimationEventAnimation", | |
| status: "stable", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/5083257285378048 | |
| name: "AnimationProgressAPI", | |
| status: "stable", | |
| }, | |
| { | |
| // https://issues.chromium.org/issues/546237331 | |
| name: "AnimationRangeRejectRelativeLengths", | |
| status: "experimental", | |
| }, | |
| { | |
| // https://drafts.csswg.org/web-animations-2/#triggers | |
| name: "AnimationTrigger", | |
| status: "stable", | |
| implied_by: ["EventTrigger", "TimelineTrigger"], | |
| }, | |
| { | |
| name: "AnimationWorklet", | |
| }, | |
| { | |
| // crbug.com/538260158 | |
| name: "AnnotationSpaceForMultiCol", | |
| status: "experimental", | |
| depends_on: ["AnnotationSpaceOnStart"], | |
| }, | |
| { | |
| // crbug.com/445727139 | |
| name: "AnnotationSpaceOnStart", | |
| status: "stable", | |
| }, | |
| { | |
| name: "AnonymousIframe", | |
| status: "stable", | |
| }, | |
| { | |
| name: "AOMAriaRelationshipProperties", | |
| public: true, | |
| status: "stable", | |
| }, | |
| { | |
| name: "AOMAriaRelationshipPropertiesAriaOwns", | |
| public: true, | |
| status: "experimental", | |
| depends_on: ["AOMAriaRelationshipProperties"], | |
| }, | |
| { | |
| // appearance:base for in-page form controls. | |
| // https://drafts.csswg.org/css-forms-1/ | |
| // https://issues.chromium.org/issues/450139531 | |
| // https://chromestatus.com/feature/5104958101913600 | |
| name: "AppearanceBase", | |
| status: "experimental", | |
| }, | |
| { | |
| // Restricts the `display` adjustment in LayoutTheme::AdjustStyle() to | |
| // elements which have a native widget appearance, so that `appearance` | |
| // no longer changes `display` on other elements. | |
| // See https://crbug.com/568576344 and https://crbug.com/408002786. | |
| name: "AppearanceDisplayAdjustmentForWidgetsOnly", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ApproximateGeolocationPermission", | |
| // This feature is controlled by the kApproximateGeolocationPermission | |
| // base::Feature in the browser process. | |
| base_feature: "none", | |
| }, | |
| { | |
| // Gates the returned accuracyMode parameter upon permissions.query({name: "geolocation"}) | |
| name: "ApproximateGeolocationPermissionAccuracyMode", | |
| depends_on: ["ApproximateGeolocationPermission"], | |
| }, | |
| { | |
| // Gates the new permission "geolocation-approximate". | |
| name: "ApproximateGeolocationPermissionAPI", | |
| depends_on: ["ApproximateGeolocationPermission"], | |
| }, | |
| { | |
| name: "ApproximateGeolocationWebVisibleAPI", | |
| depends_on: ["ApproximateGeolocationPermission"], | |
| status: {"Android": "stable", "default": "experimental"}, | |
| }, | |
| { | |
| name: "AppTitle", | |
| status: "experimental", | |
| origin_trial_feature_name: "AppTitle", | |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], | |
| base_feature: "WebAppEnableAppTitle", | |
| }, | |
| { | |
| name: "AriaActions", | |
| // Not yet implemented on ChromeOS or Android, per the M151 launch | |
| // intent (https://groups.google.com/a/chromium.org/g/blink-dev/c/DNE6dB1AS0Y). | |
| // Note that omitting the "Android" key disables the feature on both | |
| // Chrome for Android and Android WebView. | |
| status: {"Win": "stable", "Mac": "stable", "Linux": "stable"}, | |
| }, | |
| { | |
| name: "AriaNotify", | |
| status: {"Android": "stable", "Win": "stable", "Mac": "stable", "Linux": "stable"}, | |
| implied_by: ["AriaNotifyV2"], | |
| }, | |
| { | |
| name: "AriaNotifyV2", | |
| status: {"Android": "test", "Win": "test", "Mac": "test", "Linux": "test"}, | |
| }, | |
| { | |
| name: "AriaRowColIndexText", | |
| status: "stable", | |
| }, | |
| { | |
| name: "AttributionReporting", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| // The transition to "running" after construction happens asynchronously. | |
| // Same for the transition to "suspended" after suspend() is called. | |
| // https://webaudio.github.io/web-audio-api/#AudioContext-constructors | |
| name: "AudioContextAsyncStateTransitions", | |
| status: "experimental", | |
| }, | |
| { | |
| // AudioContext.playbackStats interface. | |
| name: "AudioContextPlaybackStats", | |
| status: "stable", | |
| }, | |
| { | |
| name: "AudioContextSetSinkId", | |
| status: "stable", | |
| }, | |
| { | |
| name: "AudioOutputDevices", | |
| // Android support for switching audio output devices is not stable | |
| status: {"Android": "", "default": "stable"}, | |
| public: true, | |
| base_feature: "none" | |
| }, | |
| { | |
| name: "AudioVideoTracks", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "AudioWorkletProcessorErrorEventType", | |
| status: "stable", | |
| }, | |
| { | |
| // Shared MessagePort between AudioWorklet and AudioWorkletGlobalScope. | |
| // https://chromestatus.com/feature/5079784523694080 | |
| name: "AudioWorkletSharedPort", | |
| status: "experimental", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-scroll-snap | |
| name: "AuthorSpecifiedLayoutScrollSnapBehavior", | |
| status: "stable", | |
| }, | |
| { | |
| name: "AutoDarkMode", | |
| base_feature: "none", | |
| }, | |
| { | |
| // When enabled, the dark mode filter (Auto Dark / force-dark) skips | |
| // applying dark mode to images entirely; all images are kept untouched | |
| // as if they are in light mode. | |
| // P.N. `AutoDarkMode` needs to be applied separately. | |
| name: "AutoDarkModeSkipImages", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "AutoDarkModeSVGSizeThreshold", | |
| status: "stable", | |
| }, | |
| { | |
| name: "Autofill", | |
| public: true, | |
| status: "test", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "AutofillEvent", | |
| origin_trial_feature_name: "AutofillEvent", | |
| origin_trial_allows_third_party: true, | |
| status: "experimental", | |
| public: true, | |
| }, | |
| { | |
| // Pins a generic font-family on the autofill preview pseudo-elements so | |
| // an author @font-face cannot oracle the previewed text. | |
| // crbug.com/517710554. | |
| name: "AutofillPreviewGenericFontFamily", | |
| status: "stable", | |
| }, | |
| { | |
| // Makes form control elements have a hard coded font when they are in | |
| // their autofill previewed state. | |
| name: "AutofillPreviewIgnoreAuthorFont", | |
| status: "stable", | |
| }, | |
| { | |
| name: "AutomationControlled", | |
| base_feature: "none", | |
| public: true, | |
| settable_from_internals: true, | |
| }, | |
| { | |
| name: "AutoPictureInPictureVideoHeuristics", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "AutoSizeUsesScrollWidthForOverflow", | |
| status: "stable", | |
| }, | |
| { | |
| // Killswitch M156. | |
| name: "AvoidEmbeddedContentViewLocation", | |
| status: "stable", | |
| }, | |
| { | |
| // Don't use a position inside non-selectable content as a selection | |
| // boundary when it has no canonical position, which collapses the whole | |
| // selection. See https://crbug.com/553831659. | |
| name: "AvoidNonSelectableSelectionBoundary", | |
| status: "stable", | |
| }, | |
| { | |
| // Disables the synchronous focus blur behavior when a focused form control | |
| // is disabled. | |
| name: "AvoidSynchronousBlurOnDisabledAttributeChange", | |
| status: "stable", | |
| }, | |
| // When enabled, enforces new interoperable semantics for 3D transforms. | |
| // See crbug.com/1008483. | |
| { | |
| name: "BackfaceVisibilityInterop", | |
| }, | |
| { | |
| name: "BackForwardCache", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| name: "BackForwardCacheExperimentHTTPHeader", | |
| origin_trial_feature_name: "BackForwardCacheExperimentHTTPHeader", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "BackForwardCacheNotRestoredReasons", | |
| status: "stable", | |
| origin_trial_feature_name: "BackForwardCacheNotRestoredReasons", | |
| base_feature: "BackForwardCacheSendNotRestoredReasons", | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| }, | |
| { | |
| name: "BackForwardCacheRestorationPerformanceEntry", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "BackForwardCacheUpdateNotRestoredReasonsName", | |
| status: "stable", | |
| }, | |
| { | |
| name: "BackgroundClipTextDecoration", | |
| status: "stable", | |
| }, | |
| { | |
| name: "BackgroundFetch", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| // A developer opt-out for background page freezing. | |
| { | |
| name: "BackgroundPageFreezeOptOut", | |
| base_feature: "none", | |
| origin_trial_feature_name: "BackgroundPageFreezeOptOut", | |
| origin_trial_type: "deprecation", | |
| }, | |
| { | |
| name: "BarcodeDetector", | |
| status: { | |
| // Built-in barcode detection APIs are only available from some | |
| // platforms. See //services/shape_detection. | |
| "Android": "stable", | |
| "ChromeOS": "stable", | |
| "Mac": "stable", | |
| "default": "test", | |
| }, | |
| }, | |
| { | |
| // Removes special layout code from customizable select which was | |
| // preventing it from growing in the inline direction. | |
| name: "BaseAppearanceInlineSizing", | |
| status: "stable", | |
| }, | |
| { | |
| // closest-corner/farthest-corner in circle()/ellipse(). | |
| // crbug.com/361617757 | |
| name: "BasicShapeCornerRadius", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "BidiCaretAffinity", | |
| }, | |
| { | |
| // Visual caret movement in bidirectional text. When enabled, arrow | |
| // keys move the caret in the visual (screen) direction rather than | |
| // the logical (DOM/memory) order. | |
| // Requires BidiCaretAffinity to be enabled for correct caret | |
| // rendering at bidi boundaries. | |
| name: "BidiVisualOrderCaretMovement", | |
| depends_on: ["BidiCaretAffinity"], | |
| }, | |
| { | |
| name: "BlinkExtensionWebView", | |
| public: true, | |
| }, | |
| { | |
| name: "BlinkExtensionWebViewMediaIntegrity", | |
| public: true, | |
| }, | |
| // Whether MapToVisualRectInAncestorSpace() with a null ancestor can | |
| // use the geometry mapper fast path. | |
| { | |
| name: "BlinkGeometryMapperViewportFastPath", | |
| status: "stable", | |
| }, | |
| { | |
| name: "BlinkLifecycleScriptForbidden", | |
| }, | |
| { | |
| name: "BlinkRuntimeCallStats", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/4830298126417920 | |
| name: "BlobBytes", | |
| status: "stable", | |
| }, | |
| { | |
| name: "BlockingFocusWithoutUserActivation", | |
| status: "stable", | |
| origin_trial_feature_name: "BlockingFocusWithoutUserActivation", | |
| }, | |
| { | |
| // Prevents the popup document for the select element from being opened | |
| // if the corresponding OS window is not focused. Enabled in M147, can be | |
| // removed in M150. | |
| name: "BlockSelectPopupUnfocusedWindow", | |
| status: "stable", | |
| }, | |
| // https://crbug.com/415304289: Mouse and Pointer boundary event dispatch | |
| // (i.e. dispatch of enter, leave, over, out events) tracks DOM node removal | |
| // to fix event pairing on ancestor nodes. | |
| { | |
| name: "BoundaryEventDispatchTracksNodeRemoval", | |
| public: true, | |
| status: "stable", | |
| }, | |
| { | |
| name: "BoxDecorationBreakCloneLineBreaking", | |
| status: "test", | |
| }, | |
| { | |
| name: "BrowserInitiatedAutomaticPictureInPicture", | |
| public: true, | |
| status: "experimental", | |
| }, | |
| { | |
| name: "BufferedBytesConsumerLimitSize", | |
| status: "stable", | |
| }, | |
| { | |
| // Bypasses the enforcement of the Page Embedded Permission Control | |
| // security checks. This flag is disabled by default and should only be | |
| // enabled in automated tests in order to allow them to avoid needing to | |
| // wait until the PEPC is validated and also to use JS-initiated clicks. | |
| name: "BypassPepcSecurityForTesting", | |
| }, | |
| { | |
| // Enables RFC 7234-compliant Cache-Control header parsing, removing RFC | |
| // 2616 separators that are not valid in RFC 7234. | |
| // https://crbug.com/42050325 | |
| name: "CacheControlRFC7234Parsing", | |
| status: "experimental", | |
| }, | |
| { | |
| // Enables metrics collection comparing RFC 7234 vs RFC 2616 Cache-Control | |
| // parsing. Performs double parsing on every Cache-Control header to | |
| // measure behavioral differences. Can be disabled as a kill switch if | |
| // performance issues arise. | |
| // https://crbug.com/42050325 | |
| name: "CacheControlRFC7234ParsingMetrics", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "CacheStorageCodeCacheHint", | |
| origin_trial_feature_name: "CacheStorageCodeCacheHint", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| // For emergency flag flips in case we discover bad bugs. | |
| name: "CacheStyleAdjuster", | |
| status: "stable", | |
| }, | |
| { | |
| // Enables the <camera> and <microphone> HTML elements, allowing sites to | |
| // embed camera and microphone permission request controls directly in the page. | |
| // https://chromestatus.com/feature/5153829504024576 | |
| name: "CameraAndMicrophoneElements", | |
| status: "stable", | |
| public: true, | |
| }, | |
| { | |
| name: "Canvas2dCanvasFilter", | |
| status: "experimental", | |
| }, | |
| { | |
| // When enabled, avoids eagerly flushing raster draw ops in FinalizeFrame | |
| // for composited 2D canvases, deferring the flush to | |
| // PrepareTransferableResource. | |
| name: "Canvas2dDeferredFlush", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "Canvas2dLayers", | |
| }, | |
| { | |
| name: "Canvas2dLayersWithOptions", | |
| status: "experimental", | |
| depends_on: ["Canvas2dLayers"], | |
| }, | |
| { | |
| name: "Canvas2dMesh", | |
| origin_trial_feature_name: "Canvas2dMesh", | |
| origin_trial_allows_third_party: true, | |
| status: "test", | |
| }, | |
| { | |
| // https://github.com/WICG/html-in-canvas/blob/main/README.md | |
| // Note the API name has changed to `drawElementImage`. | |
| name: "CanvasDrawElement", | |
| origin_trial_feature_name: "HTMLInCanvas", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CanvasFloatingPoint", | |
| status: "stable", | |
| }, | |
| { | |
| // Canvas2D API for specifying HDR headroom for drawing operations. | |
| // https:/crbug.com/428575083, https://github.com/whatwg/html/issues/11165 | |
| name: "CanvasGlobalHDRHeadroom", | |
| status: "experimental", | |
| }, | |
| { | |
| // https://crbug.com/394052224 | |
| name: "CanvasGradientCSSColor4", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "CanvasHDR", | |
| status: "experimental", | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/385194416. Makes the canvas 2D | |
| // context's `direction` getter reflect the stored keyword (including | |
| // "inherit") instead of always resolving it to "ltr"/"rtl". | |
| name: "CanvasTextDirectionReflect", | |
| status: "stable", | |
| }, | |
| { | |
| // https://crbug.com/479240778 | |
| name: "CanvasTextMetricsPreciseBounds", | |
| status: "experimental", | |
| }, | |
| { | |
| // Canvas2D API for specifying HDR tone mapping behavior. | |
| // https:/crbug.com/448552449, https://github.com/whatwg/html/issues/11424 | |
| name: "CanvasToneMapping", | |
| status: "experimental", | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/330506337. | |
| name: "CanvasUsesArcPaintOp", | |
| status: "stable", | |
| }, | |
| { | |
| // Enables capability delegation for the Digital Credentials API (both | |
| // create and get requests). | |
| // https://crbug.com/512747131 | |
| name: "CapabilityDelegationDigitalCredentials", | |
| }, | |
| { | |
| name: "CapabilityDelegationDisplayCaptureRequest", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "CapabilityDelegationPopup", | |
| status: "experimental", | |
| }, | |
| { | |
| // Enables icon-only mode for capability elements. | |
| // https://issues.chromium.org/issues/514564817 | |
| name: "CapabilityElementIconOnlyMode", | |
| }, | |
| { | |
| // Considers the full previous code point (not one UTF-16 code unit) for | |
| // text-transform: capitalize word boundaries. Kill switch for | |
| // crbug.com/501115609. | |
| name: "CapitalizeAfterSupplementaryCharacterFix", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CaptureController", | |
| status: {"Android": "", "default": "stable"}, | |
| }, | |
| { | |
| // TODO(crbug.com/1444712): Before enabling that flag by default, | |
| // make sure MouseCursorOverlayController does not transmit mouse | |
| // events to a CaptureController that don't have any | |
| // capturedmousechange listener attached to it. | |
| // See https://github.com/screen-share/mouse-events/issues/14 | |
| name: "CapturedMouseEvents", | |
| "depends_on": ["CaptureController"], | |
| status: {"Android": "", "default": "test"}, | |
| }, | |
| { | |
| name: "CapturedSurfaceControl", | |
| status: {"Android": "", "default": "stable"} | |
| }, | |
| { | |
| name: "CapturedSurfaceResolution", | |
| status: { "Win": "stable", "Mac": "stable", "ChromeOS": "stable", "default": ""}, | |
| }, | |
| { | |
| name: "CaptureHandle", | |
| depends_on: ["GetDisplayMedia"], | |
| status: {"Android": "", "default": "stable"}, | |
| }, | |
| { | |
| // Allows automated test runners to keep focused carets visible. | |
| name: "CaretBlinking", | |
| status: "stable", | |
| }, | |
| { | |
| // Updates the sequential focus navigation starting point when moving the | |
| // caret with the keyboard during caret browsing. | |
| // https://crbug.com/567653181 | |
| name: "CaretBrowsingSequentialFocusStartingPoint", | |
| status: "stable", | |
| }, | |
| { | |
| // Keeps the caret outside an editable atomic inline - e.g. | |
| // <div contenteditable style="display:inline-block"> - for a click that | |
| // landed next to the box rather than on it. | |
| // https://crbug.com/40780191 | |
| name: "CaretOutsideEditableAtomicInline", | |
| status: "stable", | |
| }, | |
| { | |
| // Keeps the bar caret width independent of the element transform scale, | |
| // so scaling an editable down does not fade the caret away and scaling it | |
| // up does not make it fat. | |
| // https://crbug.com/353556446 | |
| name: "CaretWidthIgnoresTransform", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for changes to RenderFrameMetadataObserverImpl in connection with Engagement | |
| // Signals. See https://crrev.com/c/4544201 and https://crbug.com/1458640. | |
| name: "CCTNewRFMPushBehavior", | |
| base_feature_status: "enabled", | |
| }, | |
| { | |
| // Compression Dictionary Transport: Align handling of crossorigin | |
| // attribute on the spec. | |
| name: "CDTNewCrossOriginHandling", | |
| status: "experimental", | |
| }, | |
| { | |
| // Compression Dictionary Transport: Use "compression-dictionary" as the | |
| // destination string. | |
| name: "CDTNewDestination", | |
| status: "experimental", | |
| }, | |
| { | |
| // Compression Dictionary Transport: Align handling of referrerpolicy | |
| // attribute and referrer on the spec. | |
| name: "CDTNewReferrerAndReferrerPolicyHandling", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "CheckableInputTypeLayoutInline", | |
| status: "stable", | |
| }, | |
| { | |
| // Run the CSP "Should element's inline behavior be blocked?" check when | |
| // an event handler content attribute is set to an inline script. | |
| // See the specs: | |
| // https://html.spec.whatwg.org/multipage/webappapis.html#event-handler-content-attributes | |
| // https://w3c.github.io/webappsec-csp/#should-block-inline | |
| name: "CheckCSPOnInlineScriptAttributeSet", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/517429018 | |
| name: "ClampUnfocusedSelectionCache", | |
| status: "stable", | |
| }, | |
| { | |
| // This is a kill switch for a refactor of the way activation | |
| // behaviors are triggered. It should not affect behavior. | |
| // This flag shipped in M157 and can be removed in M160. | |
| name: "CleanUpActivationBehavior", | |
| status: "stable", | |
| }, | |
| { | |
| // Killswitch for preventing cross-origin relatedTarget on boundary | |
| // events. | |
| // https://issues.chromium.org/issues/574379564 | |
| name: "ClearCrossOriginRelatedTarget", | |
| status: "stable", | |
| }, | |
| { | |
| // Set currentTarget to null after dispatch for EventTarget. | |
| // This was added in M142 and can be removed after M144. | |
| // https://issues.chromium.org/issues/346766786 | |
| name: "ClearCurrentTargetAfterDispatch", | |
| status: "stable", | |
| }, | |
| { | |
| // Killswitch crbug.com/547894783 | |
| name: "ClearDisplayLockPrePaintFlags", | |
| status: "stable", | |
| }, | |
| { | |
| // Fixes a bug where ancestor elements retain a stale :focus-within | |
| // state if the focused element's subtree is removed during blur | |
| // or focusout events. | |
| // This was added in M147 and can be removed after M149. | |
| // https://issues.chromium.org/issues/454668198 | |
| // https://issues.chromium.org/issues/457465869 | |
| name: "ClearFocusWithinOnSubtreeRemoval", | |
| status: "stable", | |
| }, | |
| { | |
| // Determine clearing of target and relatedTarget by checking | |
| // if the top node is in shadow tree. | |
| // This was added in M142 and can be removed after M144. | |
| // https://issues.chromium.org/issues/373655918 | |
| // https://issues.chromium.org/issues/40253359 | |
| name: "ClearTargetOnlyIfInShadowTree", | |
| status: "stable", | |
| }, | |
| { | |
| // Uses ComputeContainerNode() instead of AnchorNode() for clipboard event | |
| // targeting so that kBeforeAnchor/kAfterAnchor selections correctly target | |
| // the containing parent element rather than the element itself. | |
| // See https://crbug.com/40684204 | |
| name: "ClipboardEventTargetUsesContainerNode", | |
| status: "stable", | |
| }, | |
| { | |
| // It is only enabled in extension environment. | |
| name: "ClipboardOnExtensionServiceWorker", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| // Fix middle-click paste (kSelection buffer) from leaking images on | |
| // the kStandard buffer via the image fallback in GetFragmentFromClipboard. | |
| // crbug.com/497251066 | |
| name: "ClipboardPasteImageRespectBuffer", | |
| status: "stable", | |
| }, | |
| { | |
| // TODO(crbug.com/440374239): Disabled due to https://crbug.com/440374239. | |
| name: "ClipElementVisibleBoundsInLocalRoot", | |
| }, | |
| { | |
| name: "ClipPathNestedRasterOptimization", | |
| status: "stable", | |
| }, | |
| { | |
| // Avoid queuing a task to fire a selectionchange event when there is already a task scheduled | |
| // to do that for the target according to the new spec: | |
| // https://w3c.github.io/selection-api/#scheduling-selectionhange-event | |
| name: "CoalesceSelectionchangeEvent", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CoepReflection", | |
| status: "test", | |
| }, | |
| { | |
| // Allows <input type=color> to accept any valid CSS color value | |
| // (named colors, rgb(), hsl(), system colors, etc.) in addition to | |
| // the legacy 7-character hex format (#rrggbb). | |
| // https://crbug.com/40226268 | |
| // This was added in M146 and can be removed after M148. | |
| name: "ColorInputAcceptsCSSColors", | |
| status: "stable", | |
| }, | |
| // Enable the display-p3-linear color space in CSS. | |
| // https://chromestatus.com/feature/5162372125818880 | |
| { | |
| name: "ColorSpaceDisplayP3Linear", | |
| status: "stable", | |
| }, | |
| // Enable the srgb-linear and display-p3-linear color spaces in | |
| // PredefinedColorSpace. | |
| // https://chromestatus.com/feature/5122501071994880 | |
| { | |
| name: "ColorSpacePredefinedLinearSpaces", | |
| status: "stable", | |
| }, | |
| // Enable the rec2100-linear color space in CSS and PredefinedColorSpace. | |
| // https://chromestatus.com/feature/5204024772788224 | |
| { | |
| name: "ColorSpaceRec2100Linear", | |
| status: "experimental", | |
| }, | |
| { | |
| // Return the current target from composedPath() while | |
| // dispatching. | |
| // This was added in M142 and can be removed after M144. | |
| // https://issues.chromium.org/issues/444932649 | |
| // https://issues.chromium.org/issues/346766786 | |
| name: "ComposedPathReturnTargetBeingDispatched", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CompositeClipPathAnimation", | |
| status: "stable", | |
| public: true, | |
| }, | |
| { | |
| name: "CompositedSelectionUpdate", | |
| public: true, | |
| status: { | |
| "Android": "stable", | |
| "ChromeOS": "stable", | |
| "Fuchsia": "stable", | |
| "Linux": "stable", | |
| "Win": "stable", | |
| }, | |
| base_feature: "none", | |
| }, | |
| { | |
| // Precompute :hover styles and apply hover effects on the compositor | |
| // without involving the main thread. | |
| name: "CompositeHoverStyle", | |
| }, | |
| { | |
| name: "CompositingDecisionAtAnimationPhaseBoundaries" | |
| }, | |
| { | |
| name: "CompositionForegroundMarkers", | |
| status: { | |
| "Android": "stable", | |
| "default": "", | |
| } | |
| }, | |
| { | |
| // When enabled, EventTriggers[1] will function via cc::EventTrigger | |
| // objects that live on the compositor thread. | |
| // [1] https://drafts.csswg.org/css-animations-2/#event-triggers | |
| name: "CompositorEventTrigger" | |
| }, | |
| { | |
| // When enabled, TimelineTriggers[1] will function via cc::TimelineTrigger | |
| // objects that live on the compositor thread. | |
| // [1] https://drafts.csswg.org/css-animations-2/#timeline-triggers | |
| name: "CompositorTimelineTrigger", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CompressionDictionaryTransport", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| name: "ComputedAccessibilityInfo", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "ComputePressure", | |
| status: { | |
| "Android": "", | |
| "default": "stable", | |
| } | |
| }, | |
| { | |
| // If enabled, allow concurrent animations via native paint worklets to | |
| // run on the compositor thread. | |
| name: "ConcurrentNativePaintWorklets", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "ConditionalTracingLoAF", | |
| status: "experimental", | |
| }, | |
| { | |
| // Connection-Allowlist embedded enforcement: the `connectionallowlist` | |
| // iframe attribute, by which an embedder requires a Connection-Allowlist | |
| // of the document it frames. `base_feature_status` and | |
| // `copied_from_base_feature_if` give the origin trial a Finch kill | |
| // switch. See https://github.com/WICG/connection-allowlists/issues/1. | |
| name: "ConnectionAllowlistEmbeddedEnforcement", | |
| origin_trial_feature_name: "ConnectionAllowlistEmbeddedEnforcement", | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "ConsistentFormControlPaintSnapping", | |
| // Keep checkbox/radio painted size constant regardless of sub-pixel | |
| // position. https://crbug.com/41288048 | |
| status: "stable", | |
| }, | |
| { | |
| name: "ConstructableStylesheetCache", | |
| status: "test", | |
| }, | |
| { | |
| name: "ContactsManager", | |
| status: {"Android": "stable", "default": "test"}, | |
| }, | |
| { | |
| name: "ContactsManagerExtraProperties", | |
| status: {"Android": "stable", "default": "test"}, | |
| }, | |
| { | |
| name: "ContainerTiming", | |
| origin_trial_feature_name: "ContainerTiming", | |
| origin_trial_allows_third_party: true, | |
| status: "experimental", | |
| }, | |
| { | |
| name: "ContentIndex", | |
| status: {"Android": "stable", "default": "experimental"}, | |
| }, | |
| { | |
| name: "ContextMenu", | |
| status: "experimental", | |
| }, | |
| { | |
| // Enable support for Controlled Frame, providing the Controlled | |
| // Frame tag to IWA apps and other contexts. See | |
| // https://github.com/WICG/controlled-frame/blob/main/README.md for more | |
| // info. | |
| name: "ControlledFrame", | |
| public: true, | |
| status: "stable", | |
| }, | |
| { | |
| // Enable support for requesting SecurityInfo in WebRequest API | |
| // for controlled frames. See | |
| // https://wicg.github.io/controlled-frame/#dictdef-securityinfo for more | |
| // info. | |
| name: "ControlledFrameWebRequestSecurityInfo", | |
| status: "stable", | |
| depends_on: ["ControlledFrame"], | |
| }, | |
| { | |
| // Enables setting the `maxAge` option when creating a cookie in the | |
| // Cookie Store API. | |
| name: "CookieStoreAPIMaxAge", | |
| public: true, | |
| status: "stable", | |
| }, | |
| { | |
| // Feature flag for stripping \t and space from Cookie names and values. | |
| // https://crbug.com/437345480 | |
| name: "CookieStoreAPIWhitespaceStripping", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CoopRestrictProperties", | |
| origin_trial_feature_name: "CoopRestrictProperties", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Corrects the handling of <form> elements nested within <template> tags | |
| // in HTML parsing. See https://crbug.com/352896478 for details. | |
| name: "CorrectTemplateFormParsing", | |
| status: "experimental" | |
| }, | |
| { | |
| name: "CorsRFC1918", | |
| }, | |
| { | |
| // CPU Performance API | |
| // https://chromestatus.com/feature/5189864286978048 | |
| // https://github.com/WICG/cpu-performance/ | |
| name: "CpuPerformance", | |
| status: "stable", | |
| origin_trial_feature_name: "CpuPerformance", | |
| origin_trial_allows_third_party: true, | |
| }, | |
| { | |
| name: "CrashReportingStorageAPI", | |
| status: "stable", | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| origin_trial_feature_name: "CrashReportingStorageAPI", | |
| }, | |
| { | |
| name: "CreateInlineContentsAnonymousBlock", | |
| status: "stable", | |
| }, | |
| { | |
| // TODO(crbug.com/547302825): Do not enable this feature before adding | |
| // Permissions Policy support. | |
| name: "CrossOriginStorage", | |
| base_feature: "CrossOriginStorage", | |
| public: true, | |
| }, | |
| { | |
| // When enabled, allowlisting script urls and scripts used in eval via | |
| // hashes will be supported in script-src. This is a no-op if the | |
| // network::features::kCSPScriptSrcHashesInV1 flag is off, since it | |
| // controls parsing in the network service. | |
| // See crbug.com/392657736 for details. | |
| name: "CSPHashesV1", | |
| base_feature: "none", | |
| origin_trial_feature_name: "CSPExtendedScriptSrcHashes", | |
| origin_trial_os: ["win", "linux", "mac", "android", "chromeos"], | |
| status: "experimental", | |
| public: true, | |
| }, | |
| { | |
| name: "CSPReportHash", | |
| status: "stable", | |
| }, | |
| { | |
| // The AccentColor And AccentColorText CSS system color keywords | |
| name: "CSSAccentColorKeyword", | |
| status: { | |
| "ChromeOS": "stable", | |
| "Linux": "stable", | |
| "Mac": "stable", | |
| "Win": "stable", | |
| "default": "experimental", | |
| }, | |
| }, | |
| { | |
| // Maps deprecated ActiveCaption to Canvas instead of CanvasText. | |
| // https://drafts.csswg.org/css-color-4/#deprecated-system-colors | |
| // https://crbug.com/41493724 | |
| name: "CSSActiveCaptionMapsToCanvas", | |
| status: "stable", | |
| }, | |
| { | |
| // Ship in M152, should be removed in M154. | |
| // https://drafts.csswg.org/css-color-5/#relative-alpha | |
| // https://chromestatus.com/feature/5070160203481088 | |
| name: "CSSAlphaColorFunction", | |
| status: "stable", | |
| }, | |
| { | |
| // https://crbug.com/543376113 | |
| name: "CSSAlphaColorFunctionRequiresAlpha", | |
| status: "stable", | |
| }, | |
| { | |
| // Allows using counter() and counters() in alt text (after / in content property). | |
| name: "CSSAltCounter", | |
| status: "stable", | |
| }, | |
| { | |
| // https://drafts.csswg.org/web-animations-2/#iteration-composite-operation | |
| name: "CSSAnimationIterationComposite", | |
| status: "experimental", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-values-5/#early-resolution | |
| name: "CSSArgumentGrammar", | |
| status: "test", | |
| }, | |
| { | |
| // Whether <image> values are allowed as counter style <symbol> | |
| name: "CSSAtRuleCounterStyleImageSymbols", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-counter-styles/#counter-style-speak-as | |
| name: "CSSAtRuleCounterStyleSpeakAsDescriptor", | |
| status: "test", | |
| }, | |
| { | |
| // https://crbug.com/41089999: Legacy ASCII case-insensitive attribute | |
| // value matching only applies to HTML elements, so SVG and | |
| // empty-namespace elements compare attribute values case-sensitively. | |
| // Enabled by default; kept as a killswitch. | |
| name: "CSSAttributeValueCaseSensitiveNonHTML", | |
| status: "stable", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/6234471210811392 | |
| // Ship in M150, should be removed in M152. | |
| name: "CSSBackgroundClipBorderArea", | |
| status: "stable", | |
| }, | |
| { | |
| // Makes the computed value of the background-* longhands keep the number | |
| // of comma-separated values the author specified, instead of repeating or | |
| // truncating it to the background-image layer count. Repeating and | |
| // truncating are used-value behaviour: "The computed values of the | |
| // coordinating list properties are not affected by such truncation or | |
| // repetition." | |
| // https://drafts.csswg.org/css-values-4/ Appendix A | |
| // https://drafts.csswg.org/css-backgrounds/#layering | |
| // https://github.com/w3c/csswg-drafts/issues/7164 | |
| // Ship in M159, should be removed in M161. | |
| name: "CSSBackgroundLayerCountIndependence", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CSSBorderRadiusSideShorthands", | |
| status: "experimental", | |
| }, | |
| // https://chromestatus.com/feature/5459864205393920 | |
| { | |
| // https://chromestatus.com/feature/5125388091260928 | |
| name: "CSSBorderShape", | |
| status: "stable", | |
| }, | |
| { | |
| // Attempts to "fold" a calc() value to NaN or +/-Infinity when producing | |
| // a CalculationValue. Can produce incorrect results if the expression | |
| // contains percentages. | |
| name: "CSSCalcEarlyNaNAndInfFolding", | |
| }, | |
| { | |
| // Support CSS Values Level 4 calc simplification and serialization | |
| // as specified in the specs below. | |
| // https://drafts.csswg.org/css-values-4/#calc-simplification | |
| // https://drafts.csswg.org/css-values-4/#calc-serialize | |
| name: "CSSCalcSimplificationAndSerialization", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/5082469066604544 | |
| name: "CSSCaretAnimation", | |
| status: "stable", | |
| }, | |
| { | |
| // Two-value caret-color: <color> [<color>]? | |
| // https://github.com/w3c/csswg-drafts/issues/13723 | |
| name: "CSSCaretColorWithOptionalSecondValue", | |
| status: "experimental", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/6106160780017664 | |
| name: "CSSCaretShape", | |
| status: "stable", | |
| }, | |
| { | |
| // Support case-sensitive attribute selector modifier | |
| // https://drafts.csswg.org/selectors-4/#attribute-case | |
| name: "CSSCaseSensitiveSelector", | |
| status: "test", | |
| }, | |
| { | |
| // In the cases where it is impossible or impractical to determine the | |
| // measure of the “0” glyph, it must be assumed to be 0.5em wide by 1em | |
| // tall. Thus, the ch unit falls back to 0.5em in the general case, and to | |
| // 1em when it would be typeset upright (i.e. writing-mode is vertical-rl or | |
| // vertical-lr and text-orientation is upright). | |
| // https://drafts.csswg.org/css-values-4/#ch | |
| // See crbug.com/416145497 for more details. | |
| name: "CSSChUnitSpecCompliantFallback", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CSSColorTypedOM", | |
| status: "experimental", | |
| }, | |
| // https://drafts.csswg.org/css-values-5/#progress | |
| // container-progress() | |
| { | |
| name: "CSSContainerProgressNotation", | |
| status: "experimental", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-conditional-5/#typedef-style-range | |
| name: "CSSContainerStyleQueriesRange", | |
| status: "stable", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-borders-4/#corner-shaping | |
| name: "CSSCornersShorthand", | |
| status: "experimental", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-lists-3/#counter-reset | |
| // https://crbug.com/40760770 | |
| name: "CSSCounterResetReversed", | |
| status: "experimental", | |
| }, | |
| { | |
| // The symbols() function for defining an anonymous counter style inline. | |
| // https://drafts.csswg.org/css-counter-styles-3/#symbols-function | |
| name: "CSSCounterStyleSymbolsFunction", | |
| 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", | |
| }, | |
| { | |
| name: "CSSCustomHighlightUniversalSelector", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CSSCustomMedia", | |
| status: "test", | |
| }, | |
| { | |
| name: "CSSDynamicRangeLimit", | |
| status: "stable", | |
| }, | |
| { | |
| // Include custom properties in CSSComputedStyleDeclaration::item/length. | |
| // https://crbug.com/949807 | |
| name: "CSSEnumeratedCustomProperties", | |
| status: "stable", | |
| }, | |
| { | |
| // The 'flow-start' and 'flow-end' box alignment keywords. | |
| // https://github.com/w3c/csswg-drafts/issues/14052 | |
| name: "CSSFlowStartAndEnd", | |
| status: "stable", | |
| }, | |
| { | |
| // Serialize 'flex-start' and 'flex-end' as 'flow-start' and 'flow-end' | |
| // in computed styles. | |
| // https://github.com/w3c/csswg-drafts/issues/14052 | |
| name: "CSSFlowStartAndEndSerialization", | |
| status: "stable", | |
| depends_on: ["CSSFlowStartAndEnd"], | |
| }, | |
| { | |
| // crbug.com/483689942 | |
| // Serialize font-family names as space-separated idents when possible, | |
| // per CSSWG resolution. See https://github.com/w3c/csswg-drafts/issues/5846. | |
| name: "CSSFontFamilySerialization", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "CSSFontSizeAdjust", | |
| status: "stable", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-mixins-1/#function-rule | |
| name: "CSSFunctions", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CSSGridLanesLayout", | |
| status: "experimental", | |
| public: true, | |
| }, | |
| { | |
| name: "CSSHangingPunctuation", | |
| 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://drafts.csswg.org/css-values-5/#ident | |
| name: "CSSIdentFunction", | |
| status: "test", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/5078177326170112 | |
| name: "CSSImageAnimation", | |
| status: "test", | |
| }, | |
| { | |
| // image(<color>) functional notation, producing a solid-color image | |
| // with no natural dimensions. | |
| // Ship in M150, should be removed in M152. | |
| // https://drafts.csswg.org/css-images-4/#funcdef-image | |
| // https://chromestatus.com/feature/5121011285622784 | |
| name: "CSSImageFunction", | |
| status: "stable", | |
| }, | |
| { | |
| // The inherit() function works like var(), except that it grabs | |
| // the computed value of the specified property from the parent style | |
| // instead of the current style. | |
| // | |
| // https://drafts.csswg.org/css-values-5/#inherit-notation | |
| name: "CSSInheritFunction", | |
| status: "experimental", | |
| }, | |
| { | |
| // The :in-range and :out-of-range pseudo-classes support matching against | |
| // <input type=time> elements with a reversed range. | |
| // https://html.spec.whatwg.org/multipage/input.html#has-a-reversed-range | |
| name: "CSSInRangeOutOfRangeReversedRanges", | |
| status: "stable", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/6289894144212992 | |
| name: "CSSKeyframesRuleLength", | |
| status: "stable", | |
| }, | |
| { | |
| // Support for extended language ranges in :lang() | |
| // https://chromestatus.com/feature/5071058079055872 | |
| name: "CSSLangExtendedRanges", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "CSSLayoutAPI", | |
| status: "experimental", | |
| }, | |
| { | |
| // light-dark() for image values (background-image, etc.) | |
| // Ship in M150, should be removed in M152. | |
| // https://drafts.csswg.org/css-color-5/#light-dark | |
| // https://chromestatus.com/feature/5123253146353664 | |
| name: "CSSLightDarkImage", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CSSLineClamp", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "CSSLineClampAsShorthand", | |
| depends_on: ["CSSLineClamp"], | |
| status: "test" | |
| }, | |
| { | |
| name: "CSSLineClampLineBreakingEllipsis", | |
| depends_on: ["CSSLineClamp"], | |
| status: "experimental", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/5095153430822912 | |
| name: "CSSLinkParametersProperty", | |
| status: "experimental", | |
| }, | |
| { | |
| // Implements `counter-increment` and `counter-set` for the non-<li> | |
| // elements and the reversed ordered lists. | |
| // | |
| // https://crbug.com/40682542 | |
| name: "CSSListCounterAccounting", | |
| status: "experimental", | |
| }, | |
| { | |
| // Allows pseudo-element selectors within logical combination pseudo- | |
| // classes, e.g. :is(div::before). | |
| // | |
| // https://crbug.com/444386484 | |
| name: "CSSLogicalCombinationPseudo", | |
| }, | |
| { | |
| name: "CSSMarkerNestedPseudoElement", | |
| status: "stable", | |
| }, | |
| { | |
| // https://github.com/explainers-by-googlers/css-shrink-to-fit | |
| name: "CssMaxContentSizing", | |
| status: "test", | |
| }, | |
| { | |
| // Pseudo-classes :playing, :paused, :seeking, :buffering, :stalled, | |
| // :muted, and :volume-locked for media elements. | |
| // https://drafts.csswg.org/selectors/#resource-pseudos | |
| name: "CSSMediaElementPseudos", | |
| status: "stable", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-values-5/#progress | |
| // media-progress() | |
| name: "CSSMediaProgressNotation", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "CSSMixins", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "CSSNestedPseudoElements", | |
| status: "stable", | |
| }, | |
| { | |
| // Math functions that return a <number> (e.g. round(), sign()) keep | |
| // the percent hint of their arguments, so that e.g. | |
| // calc(100% / round(100% / 10px)) is a <length-percentage> rather | |
| // than a <percentage>. | |
| // https://drafts.csswg.org/css-values-4/#calc-type-checking | |
| name: "CSSNumberMathFunctionPercentHint", | |
| status: "stable", | |
| }, | |
| { | |
| // https://drafts.csswg.org/cssom/#dom-window-getcomputedstyle | |
| name: "CSSOMGetComputedStylePseudoElementRequiresColon", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "CSSPaintAPIArguments", | |
| status: "experimental", | |
| }, | |
| { | |
| // Ignore the stylesheet encoding when parsing URLs, always using UTF-8. | |
| // See crbug.com/1485525. | |
| name: "CSSParserIgnoreCharsetForURLs", | |
| }, | |
| { | |
| // Support `polygon(round <length>, ...)` per CSS Shapes Level 1. | |
| // Spec: https://www.w3.org/TR/css-shapes-1/#typedef-basic-shape | |
| // Issue: https://crbug.com/329302249 | |
| // https://chromestatus.com/feature/6636392944893952 | |
| // Ship in M150, should be removed in M152. | |
| name: "CSSPolygonRounding", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CSSPositionStickyStaticScrollPosition", | |
| status: "test", | |
| }, | |
| { | |
| // Support for `position-visibility: anchor-valid`. | |
| // See crbug.com/333421963. | |
| name: "CSSPositionVisibilityAnchorValid", | |
| status: "stable", | |
| }, | |
| { | |
| // The @private rule declares lexically-scoped custom properties that are | |
| // visible only within the enclosing style rule and the elements it | |
| // matches, with their names rewritten so they are never observable as | |
| // author custom properties. | |
| // crbug.com/542651959 | |
| name: "CSSPrivate", | |
| status: "experimental", | |
| }, | |
| // https://drafts.csswg.org/css-values-5/#progress | |
| // progress() | |
| { | |
| name: "CSSProgressNotation", | |
| status: "stable", | |
| }, | |
| // https://drafts.csswg.org/css-values-5/#progress | |
| // progress() no-clamp keyword and equal start and end values | |
| { | |
| name: "CSSProgressNotationNoClamp", | |
| status: "experimental", | |
| }, | |
| { | |
| // For ::column pseudo-element for fragment styling. | |
| // https://github.com/flackr/carousel/blob/main/fragmentation/README.md | |
| name: "CSSPseudoColumn", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CSSPseudoElementBackdrop", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CSSPseudoElementInterface", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CSSPseudoElementScrollButton", | |
| depends_on: ["CSSPseudoElementInterface"], | |
| status: "experimental", | |
| }, | |
| { | |
| // CSSPseudoElement.selectorText. | |
| // https://drafts.csswg.org/css-pseudo-4/#dom-csspseudoelement-selectortext | |
| name: "CSSPseudoElementSelectorText", | |
| depends_on: ["CSSPseudoElementInterface"], | |
| status: "experimental", | |
| }, | |
| { | |
| name: "CSSPseudoElementViewTransitions", | |
| depends_on: ["CSSPseudoElementInterface"], | |
| status: "stable", | |
| }, | |
| { | |
| // Enables the :has-slotted pseudo-selector. | |
| // https://chromestatus.com/feature/5134941143433216 | |
| name: "CSSPseudoHasSlotted", | |
| status: "experimental", | |
| }, | |
| { | |
| // For ::scroll-up-button and ::scroll-down-button pseudo-elements for Carousel. | |
| // https://github.com/flackr/carousel/tree/main/scroll-button | |
| name: "CSSPseudoScrollButtons", | |
| status: "stable", | |
| depends_on: ["PseudoElementsFocusable"], | |
| }, | |
| { | |
| // For ::scroll-marker and ::scroll-marker-group pseudo-elements for Carousel. | |
| // https://github.com/flackr/carousel/tree/main/scroll-marker | |
| name: "CSSPseudoScrollMarkers", | |
| status: "stable", | |
| depends_on: ["PseudoElementsFocusable"], | |
| }, | |
| { | |
| name: "CSSRandomFunction", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CSSRandomFunctionTypedOM", | |
| status: "test", | |
| depends_on: ["CSSRandomFunction"], | |
| }, | |
| { | |
| // Non-standard 'auto' keyword for the CSS resize property. Used for | |
| // selectively enable resize corner for textarea via UA stylesheet, but | |
| // unintentionally exposed to author sheets. UA rule is now using | |
| // -internal-textarea-auto instead. | |
| name: "CSSResizeAuto", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CSSRevertRule", | |
| status: "stable", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-ruby/#ruby-overhang | |
| // ChromeStatus: https://chromestatus.com/feature/6560118298771456 | |
| name: "CSSRubyOverhang", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CSSSafePrintableInset", | |
| status: "stable", | |
| }, | |
| { | |
| // The '&' pseudo-class effectively behaves like :where(:scope) | |
| // when used in @scope rules. | |
| name: "CSSScopeifiedParentPseudoClass", | |
| status: "stable", | |
| }, | |
| { | |
| // The "@import scope(...)" syntax. | |
| // https://github.com/w3c/csswg-drafts/issues/7348 | |
| name: "CSSScopeImport", | |
| status: "experimental", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-conditional-5/#scrolled | |
| name: "CSSScrolledContainerQueries", | |
| status: "stable", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-scroll-snap-2#scroll-initial-target | |
| name: "CSSScrollInitialTarget", | |
| status: "stable", | |
| }, | |
| { | |
| // https://github.com/w3c/csswg-drafts/issues/12122 | |
| name: "CSSScrollMarkerGroupModes", | |
| status: "stable", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-overflow-5/#active-before-after-scroll-markers | |
| // :target-before and :target-after pseudo classes for scroll markers. | |
| name: "CSSScrollMarkerTargetBeforeAfter", | |
| status: "stable", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-scroll-snap-2/#scrollsnapchange | |
| name: "CSSScrollSnapChangeEvent", | |
| status: "stable", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-scroll-snap-2/#scrollsnapchanging | |
| name: "CSSScrollSnapChangingEvent", | |
| status: "stable", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-scroll-snap-2/#snapevent-interface | |
| name: "CSSScrollSnapEventConstructorExposed", | |
| status: "experimental", | |
| }, | |
| { | |
| // https://drafts.csswg.org/css-scroll-snap-2/#snap-events | |
| name: "CSSScrollSnapEvents", | |
| status: "stable", | |
| implied_by: ["CSSScrollSnapChangeEvent", "CSSScrollSnapChangingEvent"], | |
| }, | |
| { | |
| name: "CSSScrollSnapStopBefore", | |
| status: "test", | |
| }, | |
| { | |
| name: "CSSScrollSnapTypePair", | |
| status: "stable", | |
| }, | |
| { | |
| // scroll-target-group property | |
| // https://drafts.csswg.org/css-overflow-5/#scroll-target-group | |
| name: "CSSScrollTargetGroup", | |
| status: "stable", | |
| }, | |
| { | |
| // scroll-target-group property sets aria-current=true on :target-current html scroll marker. | |
| name: "CSSScrollTargetGroupAriaCurrent", | |
| status: "experimental", | |
| }, | |
| { | |
| // path() and shape() basic shapes for shape-outside. | |
| // https://drafts.csswg.org/css-shapes-1/#basic-shape-functions | |
| // https://drafts.csswg.org/css-shapes/#shape-outside-property | |
| // ChromeStatus: https://chromestatus.com/feature/5080980370096128 | |
| name: "CSSShapeOutsidePathAndShapeSupport", | |
| status: "stable", | |
| }, | |
| { | |
| // rect() and xywh() basic shapes for shape-outside. | |
| // https://drafts.csswg.org/css-shapes-1/#basic-shape-functions | |
| // https://drafts.csswg.org/css-shapes/#shape-outside-property | |
| // ChromeStatus: https://chromestatus.com/feature/6323071520735232 | |
| name: "CSSShapeOutsideRectAndXywhSupport", | |
| status: "stable", | |
| }, | |
| { | |
| // https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-baseurl | |
| name: "CSSStyleSheetInitBaseURL", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "CSSSupportsAtRuleFunction", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CSSSupportsForImportRules", | |
| status: "stable", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/5153932394102784 | |
| // Shipping in M150, so flag can be removed around M152. | |
| name: "CSSSupportsNamedFeatureFunction", | |
| status: "stable", | |
| }, | |
| { | |
| // Allows the CSS "accent-color" property to support the system accent color as the default option. | |
| name: "CSSSystemAccentColor", | |
| status: { | |
| "ChromeOS": "stable", | |
| "Linux": "stable", | |
| "Mac": "stable", | |
| "Win": "stable", | |
| "default": "experimental", | |
| }, | |
| }, | |
| { | |
| // https://issues.chromium.org/40787216: CSS `text-align: match-parent` value | |
| name: "CSSTextAlignMatchParent", | |
| status: "experimental", | |
| }, | |
| { | |
| // crbug.com/468928416, crbug.com/498974811 | |
| name: "CSSTextDecorationInset", | |
| status: "stable", | |
| }, | |
| { | |
| // https://issues.chromium.org/40675832: CSS `text-decoration-skip-ink: all` value | |
| name: "CSSTextDecorationSkipInkAll", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CSSTextDecorationSkipSpaces", | |
| status: "experimental", | |
| }, | |
| { | |
| // crbug.com/417306102 | |
| name: "CssTextFit", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/417306102 | |
| name: "CssTextFitReshaping", | |
| }, | |
| { | |
| // crbug.com/1463890, crbug.com/1463891: CSS `text-spacing` shorthand | |
| name: "CSSTextSpacing", | |
| status: "test", | |
| }, | |
| { | |
| // https://crbug.com/40928177: Support of `text-transform: full-size-kana` | |
| name: "CSSTextTransformFullSizeKana", | |
| status: "experimental", | |
| }, | |
| { | |
| // https://issues.chromium.org/41297237: CSS `text-transform: full-width` value | |
| name: "CSSTextTransformFullWidth", | |
| status: "experimental", | |
| }, | |
| { | |
| // Enable Unicode uppercasing to Mtavruli. Disable to restore the legacy | |
| // mapping if font regressions are reported in the field. | |
| // TODO(crbug.com/40127672): Remove this kill switch and the legacy mapping | |
| // two milestones after the Stable launch, if rollback is no longer needed. | |
| name: "CSSTextTransformGeorgianUppercase", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/41297237: Support multi-keyword values in CSS `text-transform`. | |
| name: "CSSTextTransformMultiKeyword", | |
| depends_on: ["CSSTextTransformFullWidth", "CSSTextTransformFullSizeKana"], | |
| status: "experimental", | |
| }, | |
| { | |
| // Support for the 'all' keyword of the 'timeline-scope' property. | |
| // | |
| // https://drafts.csswg.org/scroll-animations-1/#timeline-scope | |
| name: "CSSTimelineScopeAll", | |
| status: "experimental", | |
| }, | |
| { | |
| // Makes timeline names global by default. | |
| // | |
| // https://github.com/w3c/csswg-drafts/issues/12581 | |
| name: "CSSTimelineScopeGlobal", | |
| depends_on: ["CSSTreeScopedScrollTimeline"], | |
| status: "experimental", | |
| }, | |
| { | |
| // Support tree-scoped scroll and view timeline names according to the | |
| // CSSWG resolution on tree-scoped references. | |
| name: "CSSTreeScopedScrollTimeline", | |
| status: "experimental", | |
| }, | |
| { | |
| // CSS URL request modifiers: cross-origin(), integrity(), | |
| // referrer-policy() inside url() functions. | |
| // | |
| // https://drafts.csswg.org/css-values-5/#request-url-modifiers | |
| name: "CSSURLRequestModifiers", | |
| status: "stable", | |
| }, | |
| // Support for `user-select:contain`. | |
| { | |
| name: "CSSUserSelectContain", | |
| status: "test", | |
| }, | |
| { | |
| // https://crbug.com/488305665: Support :user-valid/:user-invalid for radio buttons. | |
| // This lands in M147, and the flag can be removed in M149. | |
| // | |
| // https://drafts.csswg.org/selectors-4/#user-valid-pseudo | |
| name: "CSSUserValidAndUserInvalidForRadio", | |
| status: "stable", | |
| }, | |
| { | |
| name: "CSSVideoDynamicRangeMediaQueries", | |
| status: "experimental", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/4850737974345728 | |
| name: "CSSViewTransitionAutoName", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "CSSWindowDrag", | |
| status: "stable", | |
| }, | |
| { | |
| // CSSWG resolution to make the `zoom` property continuously | |
| // interpolatable. https://github.com/w3c/csswg-drafts/issues/10872 | |
| // Ship in M150, should be removed in M152. | |
| // ChromeStatus: https://chromestatus.com/feature/5183671737909248 | |
| name: "CSSZoomAnimation", | |
| status: "stable", | |
| }, | |
| { | |
| // Shipping in M148 (or backported earlier), can be removed in M150. | |
| name: "CustomElementsDisableFormattingFixups", | |
| status: "stable", | |
| }, | |
| { | |
| // appearance:base for the <datalist> element when it is invoked as a | |
| // picker from an <input type=text>. | |
| // https://issues.chromium.org/issues/453705243 | |
| // https://chromestatus.com/feature/5067156794507264 | |
| name: "CustomizableCombobox", | |
| status: "experimental", | |
| depends_on: ["AppearanceBase"], | |
| }, | |
| { | |
| // appearance:base-select for <select multiple size=1> with a picker. | |
| name: "CustomizableSelectMultiplePopup", | |
| status: "experimental", | |
| }, | |
| { | |
| // Adds new UA styles for customizable select from CSSWG discussions. | |
| // https://chromestatus.com/feature/6270612585709568 | |
| name: "CustomizableSelectNewUAStyles", | |
| status: "experimental", | |
| }, | |
| // see crbug.com/341313078 | |
| { | |
| name: "CustomScrollbarApplyMinimumThumbLength", | |
| status: "stable", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/5134293578285056 | |
| name: "Database", | |
| }, | |
| { | |
| // Killswitch for https://crbug.com/40622827 | |
| name: "DateTimeFieldTypeWithoutSelection", | |
| status: "stable", | |
| }, | |
| { | |
| // https://crbug.com/473454959 | |
| name: "DateTimeInputTypeEarlyAdvanceFix", | |
| status: "stable", | |
| }, | |
| // https://crbug.com/448174611 | |
| { | |
| name: "DeclarativeCSSModules", | |
| status: "experimental", | |
| origin_trial_feature_name: "DeclarativeCSSModules", | |
| }, | |
| // https://crbug.com/448174611 | |
| { | |
| name: "DeclarativeCSSModulesStyleTag", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "DeclarativeFragment", | |
| status: "experimental", | |
| depends_on: ["DocumentPatching"], | |
| }, | |
| { | |
| name: "DeclarativePerformanceObserver", | |
| origin_trial_feature_name: "DeclarativePerformanceObserver", | |
| status: "experimental", | |
| // base_feature is meant as kill-switch. This runtime-enabled feature | |
| // should follow the Origin Trial unless explicitly overriden by Finch or | |
| // commandline flags. | |
| base_feature_status: "enabled", | |
| // Enables the Blink feature only when the base::Feature is overridden by | |
| // field trial or command line. | |
| copied_from_base_feature_if: "overridden", | |
| }, | |
| { | |
| name: "DeclarativeSkeletons", | |
| status: "test", | |
| }, | |
| { | |
| // Declarative WebMCP: tools declared via HTML <form> attributes | |
| // (`toolname`, `tooldescription`, ...), and the associated CSS | |
| // pseudo-classes and SubmitEvent extensions. It builds on top of the | |
| // imperative `WebMCP` feature (`document.modelContext`). | |
| // | |
| // This shares the "WebMCP" origin trial with imperative WebMCP, so that | |
| // declarative WebMCP keeps working for origin trial participants, while | |
| // still being independently controllable (e.g. kill-switchable) through | |
| // its own base feature. Declarative WebMCP builds on the imperative | |
| // infrastructure, so C++ callers should use | |
| // ModelContext::IsDeclarativeWebMCPEnabled(), which also requires | |
| // `WebMCP` to be enabled (and thus honors the kWebMCP kill switch). | |
| // `depends_on` can't be used here since depending on an origin trial | |
| // feature is not supported. | |
| // | |
| // Overriding the kWebMCP base feature (e.g. --enable-features=WebMCP) | |
| // also sets this feature; see content/child/runtime_features.cc. An | |
| // explicit kDeclarativeWebMCP override takes precedence. | |
| name: "DeclarativeWebMCP", | |
| origin_trial_feature_name: "WebMCP", | |
| origin_trial_allows_third_party: true, | |
| public: true, | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| implied_by: [ | |
| "WebMCPDeclarativeFileInput", | |
| "WebMCPFormAssociatedCustomElements" | |
| ], | |
| status: "experimental", | |
| }, | |
| { | |
| name: "DeferLineBoxHitTestToBackground", | |
| status: "stable", | |
| }, | |
| { | |
| // Killswitch for https://crbug.com/400317114 fix. | |
| // This lands in M142, and the flag can be removed in M144. | |
| name: "DelegatesFocusTextControlInputFix", | |
| status: "stable", | |
| }, | |
| // 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: { | |
| "ChromeOS": "stable", | |
| "default": "experimental", | |
| }, | |
| }, | |
| { | |
| name: "DesktopPWAsAdditionalWindowingControlsOnMove", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "DeviceAttributes", | |
| status: { | |
| "ChromeOS": "stable", | |
| "default": "experimental", | |
| }, | |
| }, | |
| { | |
| name: "DeviceBoundSessionJsApi", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "DeviceOrientationRequestPermission", | |
| status: "stable", | |
| }, | |
| { | |
| name: "DevicePosture", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/520262209: This feature makes the <dialog> element close | |
| // properly when its "open" attribute is removed. See | |
| // - https://github.com/whatwg/html/issues/5802 | |
| // - https://github.com/whatwg/html/pull/10124 | |
| name: "DialogCloseWhenOpenRemoved", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "DialogNewFocusBehavior", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "DigitalCredentialsProtocolFilter", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "DigitalGoods", | |
| origin_trial_feature_name: "DigitalGoodsV2", | |
| origin_trial_os: ["android", "chromeos"], | |
| public: true, | |
| status: { | |
| "Android": "stable", | |
| "ChromeOS": "stable", | |
| // crbug.com/1143079: Web tests cannot differentiate ChromeOS and Linux, | |
| // so enable the API on all platforms for testing. | |
| "default": "test" | |
| }, | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "DigitalGoodsV2_1", | |
| status: { | |
| "Android": "stable", | |
| "ChromeOS": "stable", | |
| // crbug.com/1143079: Web tests cannot differentiate ChromeOS and Linux, | |
| // so enable the API on all platforms for testing. | |
| "default": "test" | |
| }, | |
| }, | |
| { | |
| name: "DirectSockets", | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| browser_process_read_write_access: true, | |
| }, | |
| { | |
| // Experimental support for the Direct Sockets API in Service Workers. | |
| // https://github.com/WICG/direct-sockets | |
| name: "DirectSocketsInServiceWorkers", | |
| }, | |
| { | |
| // Experimental support for the Direct Sockets API in Shared Workers. | |
| // https://github.com/WICG/direct-sockets | |
| name: "DirectSocketsInSharedWorkers", | |
| }, | |
| { | |
| name: "DisableAnchorCenterOnAlignJustifyItems", | |
| status: "stable", | |
| }, | |
| { | |
| name: "DisableDifferentOriginSubframeDialogSuppression", | |
| base_feature: "none", | |
| origin_trial_feature_name: "DisableDifferentOriginSubframeDialogSuppression", | |
| origin_trial_type: "deprecation", | |
| origin_trial_allows_insecure: true, | |
| }, | |
| { | |
| // Switch from ellipsis to clip when a container is scrolled. | |
| // This shipped in M146 and the flag can be removed in M148. | |
| name: "DisableEllipsisWhenScrolled", | |
| status: "experimental", | |
| }, | |
| { | |
| // Prevents the change event from being fired within | |
| // HTMLFieldSetElement::ChildrenChanged because we aren't supposed to | |
| // fire events during mutations like that. | |
| // https://issues.chromium.org/issues/523756329 | |
| // https://issues.chromium.org/issues/523748081 | |
| // https://issues.chromium.org/issues/523737685 | |
| // Enabled in 151, safe to remove in 153. | |
| name: "DisableFormControlChangeEventDuringMutation", | |
| status: "stable", | |
| }, | |
| { | |
| name: "DisconnectWebSocketOnBFCache", | |
| 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", | |
| }, | |
| { | |
| // Dispatches a securitypolicyviolation event for CSP violations | |
| // detected while fetching a worker's or worklet's module graph | |
| // (top-level script, redirects, and nested static imports). | |
| // See https://crbug.com/40612680 | |
| name: "DispatchWorkerCSPViolationEventForModuleGraphFetching", | |
| status: "experimental", | |
| }, | |
| { | |
| // Allowing elements with display:contents to have focus. | |
| // See https://crbug.com/1366037 | |
| name: "DisplayContentsFocusable", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "DisplayCutoutAPI", | |
| base_feature: "none", | |
| public: true, | |
| // There is an override later to ensure this is only enabled for | |
| // Android P+. | |
| status: { "Android": "stable" }, | |
| }, | |
| { | |
| name: "DocumentCookie", | |
| }, | |
| { | |
| name: "DocumentDomain", | |
| }, | |
| { | |
| // Enables DocumentIsolationPolicy. | |
| // See https://https://github.com/WICG/document-isolation-policy. | |
| name: "DocumentIsolationPolicy", | |
| status: "experimental", | |
| origin_trial_feature_name: "DocumentIsolationPolicy", | |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], | |
| base_feature: "none", | |
| }, | |
| { | |
| // Fix iframe unload events not firing during document.open() | |
| // https://crbug.com/40947017 | |
| // Lands in M144; remove this flag in M146 after the milestone rolls. | |
| name: "DocumentOpenIframeUnloadEvents", | |
| status: "stable", | |
| }, | |
| { | |
| name: "DocumentOpenOriginAliasRemoval", | |
| status: "experimental", | |
| copied_from_base_feature_if: "overridden", | |
| }, | |
| { | |
| name: "DocumentOpenSandboxInheritanceRemoval", | |
| status: "stable", | |
| copied_from_base_feature_if: "overridden", | |
| }, | |
| // https://chromestatus.com/feature/5111042975465472 | |
| // <template patchfor> etc. | |
| { | |
| name: "DocumentPatching", | |
| status: "stable", | |
| }, | |
| { | |
| name: "DocumentPictureInPictureAPI", | |
| status: { | |
| "Android": "", | |
| "default": "stable", | |
| }, | |
| }, | |
| // Enables `preferInitialWindowPlacement` Document PiP option to skip | |
| // re-using the previous pip window bounds. | |
| { | |
| name: "DocumentPictureInPicturePreferInitialPlacement", | |
| status: { | |
| "Android": "", | |
| "default": "stable", | |
| }, | |
| }, | |
| // Enables propagating user activation from a document picture-in-picture | |
| // window up to its opener window and vice versa. | |
| { | |
| name: "DocumentPictureInPictureUserActivation", | |
| status: { | |
| "Android": "", | |
| "default": "stable", | |
| }, | |
| }, | |
| // Enables the ability to use Document Policy header to control feature | |
| // DocumentDomain. | |
| { | |
| name: "DocumentPolicyDocumentDomain", | |
| status: "experimental", | |
| }, | |
| // Enables the ability to use Document Policy header to control feature | |
| // ExpectNoLinkedResources. | |
| { | |
| name: "DocumentPolicyExpectNoLinkedResources", | |
| status: "stable", | |
| }, | |
| // Enables the ability to use Document Policy header to control feature | |
| // IncludeJSCallStacksInCrashReports. https://chromestatus.com/feature/4731248572628992 | |
| { | |
| name: "DocumentPolicyIncludeJSCallStacksInCrashReports", | |
| status: "stable", | |
| }, | |
| // Enables Document Policy for DedicatedWorkers. | |
| { | |
| name: "DocumentPolicyInDedicatedWorker", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "DocumentPolicyJSProfilingMode", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "DocumentPolicyNegotiation", | |
| origin_trial_feature_name: "DocumentPolicyNegotiation", | |
| public: true, | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| // Enables the ability to use Document Policy header to control feature | |
| // NetworkEfficiencyGuardrails. https://chromestatus.com/feature/5156240166223872 | |
| { | |
| name: "DocumentPolicyNetworkEfficiencyGuardrails", | |
| status: "experimental", | |
| }, | |
| // Enables the ability to use Document Policy header to control feature | |
| // SyncXHR. | |
| { | |
| name: "DocumentPolicySyncXHR", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "DocumentWrite", | |
| }, | |
| { | |
| // Kill switch for marking scripts parsed by DOMParser in XML documents as | |
| // "already started" so they stay inert when cloned or imported. | |
| // https://crbug.com/542115030 | |
| name: "DOMParserXmlScriptAlreadyStarted", | |
| status: "stable", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/4909387902746624 | |
| // Enables dragging multiple files out of a web page via the | |
| // DownloadURL-list drag type. | |
| name: "DragAndDropDownloadURLList", | |
| public: true, | |
| status: "test", | |
| }, | |
| { | |
| // Enables JS-constructed File objects (e.g. new File([bytes], 'photo.jpg')) | |
| // to carry their blob contents through the drag-and-drop pipeline. | |
| // When disabled, only the filename is sent as text/plain (legacy behavior). | |
| name: "DragAndDropJSFileObjects", | |
| status: "test", | |
| }, | |
| { | |
| // When enabled, drag image previews are generated for images regardless | |
| // of their intrinsic size (the output is still clamped to | |
| // MaxDragImageSize). When disabled, images whose intrinsic area exceeds | |
| // kMaxOriginalImageArea produce no drag preview (legacy behavior). Acts | |
| // as a kill switch for the removal of that cap. See | |
| // https://crbug.com/518266739 | |
| name: "DragImageForLargeImages", | |
| status: "stable", | |
| }, | |
| { | |
| // When enabled, the cursor needs to move past the drag start threshold in | |
| // absolute screen coordinates rather than window relative coordinates. | |
| // See https://crbug.com/40943926 and | |
| // https://html.spec.whatwg.org/multipage/dnd.html#security-risks-in-the-drag-and-drop-model | |
| name: "DragThresholdRequiresMouseMovement", | |
| status: "stable", | |
| }, | |
| { | |
| // See: crrev.com/c/7874048 | |
| // Diagnostic flag to gather data for a case when compositable animations lack snapshots without a known reason. | |
| name: "DumpForAbsentKeyframeSnapshots", | |
| }, | |
| { | |
| // See https://crbug.com/443612843 | |
| name: "EditContextAssignmentAsPerSpec", | |
| status: "test" | |
| }, | |
| { | |
| // Schedule a main frame when EditContext.updateControlBounds() or | |
| // updateSelectionBounds() changes the bounds of the active EditContext, | |
| // so the new bounds are sent to the browser in TextInputStateChanged even | |
| // when called from an async task that doesn't otherwise cause a frame. | |
| name: "EditContextBoundsUpdateSchedulesFrame", | |
| status: "stable", | |
| }, | |
| { | |
| // Support code point-based deletion calculations in | |
| // DeleteSurroundingTextInCodePoints() for EditContext. | |
| name: "EditContextCodePointDeletion", | |
| status: "stable", | |
| }, | |
| { | |
| // See https://crbug.com/379170477 | |
| name: "EditContextHandleTextOrSelectionUpdateDuringComposition", | |
| status: "test", | |
| settable_from_internals: true | |
| }, | |
| { | |
| // Update EditContext selectionStart/End before TextUpdateEvent while | |
| // handling deletion. See https://crbug.com/529413105 | |
| name: "EditContextSelectionUpdateBeforeTextUpdateEvent", | |
| status: "stable", | |
| }, | |
| { | |
| name: "EditingUseDomPositionApi", | |
| status: "test", | |
| }, | |
| { | |
| // Elastic overscroll requires even solid color background to be painted | |
| // in the border box space to ensure they aren't shifted away. | |
| name: "ElasticOverscrollBackgroundPaintLocationFix", | |
| status: "stable", | |
| }, | |
| { | |
| // Uses the original event delta to choose the initial elastic overscroll | |
| // axis. | |
| name: "ElasticOverscrollUseEventDeltaForAxisSelection", | |
| status: "stable", | |
| }, | |
| { | |
| public: true, | |
| name: "ElementCapture", | |
| status: {"Android": "experimental", "iOS": "", "default": "stable"}, | |
| }, | |
| { | |
| // ElementInternals.behaviors allows web authors to attach | |
| // platform-provided behaviors to custom elements, enabling | |
| // them to adopt native behaviors without extending native | |
| // elements. | |
| // crbug.com/486928684 | |
| // https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/PlatformProvidedBehaviors/explainer.md | |
| name: "ElementInternalsBehaviors", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "ElementMatchContainer", | |
| status: "test", | |
| }, | |
| { | |
| // When enabled, the readonly attribute will prevent constraint validation | |
| // only in some cases, depending on the element. | |
| // This was added in M147 and can be removed after M149. | |
| // https://issues.chromium.org/issues/486228104 | |
| name: "ElementSpecificReadOnlyConstraintValidation", | |
| status: "stable", | |
| }, | |
| { | |
| name: "EmailVerificationProtocol", | |
| public: true, | |
| origin_trial_feature_name: "EmailVerificationProtocol", | |
| origin_trial_allows_third_party: true, | |
| origin_trial_os: ["win", "mac", "linux", "chromeos", "android"], | |
| status: "experimental", | |
| base_feature: "none", | |
| browser_process_read_access: true, | |
| }, | |
| { | |
| // This was added in M151 and can be removed after M153. | |
| // https://issues.chromium.org/issues/525074815 | |
| name: "EmbeddedContentCenterAlignBaseline", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/41384307. | |
| name: "EmojiZWJVerticalOrientation", | |
| status: "stable", | |
| }, | |
| { | |
| // Controls whether XSLT processing is selectively re-enabled for | |
| // Common Alerting Protocol (CAP) alert XML documents when native XSLT | |
| // is otherwise disabled. | |
| // crbug.com/435623334. | |
| name: "EnableXSLTForCAPAlerts", | |
| status: "stable", | |
| }, | |
| { | |
| name: "EndpointInclusiveCommitStyles", | |
| status: "stable", | |
| }, | |
| // When enabled, the LCP algorithm ignores image entropy for the first | |
| // video frame. See crbug.com/434659232. | |
| { | |
| name: "EntropyIgnoredForFirstVideoFrameLCP", | |
| status: "experimental", | |
| }, | |
| { | |
| // `event.pseudoTarget` property to represent pseudo-elements in events. Returns `CSSPseudoElement` or null. | |
| name: "EventPseudoTargetProperty", | |
| status: "stable", | |
| depends_on: ["CSSPseudoElementInterface"], | |
| }, | |
| { | |
| name: "EventPseudoTargetViewTransitionName", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill-switch for https://chromestatus.com/feature/5153386492198912 | |
| // Added in M144, can be removed in M146. | |
| name: "EventTimingInteractionCount", | |
| status: "stable", | |
| }, | |
| // Interoperable dispatch timing for transitionrun and media query events. | |
| // https://chromestatus.com/feature/6312504658624512 | |
| { | |
| name: "EventTimingMatchingHTML", | |
| status: "stable", | |
| }, | |
| { | |
| name: "EventTimingTargetSelector", | |
| status: "experimental", | |
| }, | |
| { | |
| // https://drafts.csswg.org/web-animations-2/#triggers | |
| name: "EventTrigger", | |
| status: "experimental", | |
| }, | |
| { | |
| // https://crbug.com/578672563 | |
| name: "ExclusionSpaceCopyOnWrite", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ExperimentalContentSecurityPolicyFeatures", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "ExperimentalJSProfilerMarkers", | |
| origin_trial_feature_name: "JSSelfProfilingMarkers", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "ExperimentalMachineLearningNeuralNetwork", | |
| // Enabled by webnn::mojom::features::kExperimentalWebMachineLearningNeuralNetwork. | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "ExperimentalPolicies", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "ExposeCSSFontFeatureValuesRule", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ExposeRenderTimeNonTaoDelayedImage", | |
| }, | |
| { | |
| name: "ExtendedTextMetrics", | |
| origin_trial_feature_name: "ExtendedTextMetrics", | |
| origin_trial_allows_third_party: true, | |
| status: "experimental", | |
| }, | |
| { | |
| name: "ExtensionScriptTagging", | |
| public: true, | |
| status: "stable", | |
| base_feature: "ExtensionScriptTagging", | |
| }, | |
| { | |
| name: "ExtensionScriptTaggingTestingAPI", | |
| base_feature: "ExtensionScriptTaggingTestingAPI", | |
| }, | |
| { | |
| // Kill-switch for crbug.com/40434449. | |
| // Added in M139, and it can be removed in M141. | |
| name: "ExternalPopupMenuClickEvent", | |
| status: "stable", | |
| }, | |
| { | |
| name: "EyeDropperAPI", | |
| status: { | |
| // EyeDropper UI is available on Android, ChromeOS, Linux (x11), Mac, and Win. | |
| // This list should match the supported operating systems for the | |
| // kEyeDropper base::Feature. | |
| "Android": "stable", | |
| "ChromeOS": "stable", | |
| "Linux": "stable", | |
| "Mac": "stable", | |
| "Win": "stable", | |
| }, | |
| // When running under experimental platform variants, such as | |
| // Linux/Wayland, EyeDropper base::Feature defined in the browser | |
| // process is used to disable it at runtime, if needed. | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| name: "FaceDetector", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "FastCompositionCharacterBounds", | |
| status: "stable", | |
| }, | |
| { | |
| name: "FastPlainTextRangeCreateRange", | |
| status: "stable", | |
| }, | |
| { | |
| name: "FastPositionIterator", | |
| // Not enabled due to a RTL issue. crbug.com/1421016. | |
| }, | |
| { | |
| name: "FedCm", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "FedCmActiveModeMultipleIdentityProviders", | |
| depends_on: ["FedCmMultipleIdentityProviders"], | |
| status: "experimental", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| name: "FedCmAutofill", | |
| implied_by: ["FedCmDelegation"], | |
| public: true, | |
| status: "test", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "FedCmDelegation", | |
| depends_on: ["FedCm"], | |
| public: true, | |
| status: "test", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "FedCmIdentityHandler", | |
| depends_on: ["FedCm"], | |
| public: true, | |
| status: "test", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "FedCmIdPRegistration", | |
| depends_on: ["FedCm"], | |
| public: true, | |
| status: "test", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "FedCmLightweightMode", | |
| depends_on: ["FedCm"], | |
| status: "test", | |
| public: true, | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "FedCmMultipleIdentityProviders", | |
| depends_on: ["FedCm"], | |
| status: "stable", | |
| base_feature: "none", | |
| public: true, | |
| origin_trial_feature_name: "FedCmMultipleIdentityProviders", | |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], | |
| origin_trial_allows_third_party: true, | |
| }, | |
| { | |
| name: "FedCmMultipleRequests", | |
| depends_on: ["FedCm"], | |
| status: "stable", | |
| public: true, | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "FedCmNavigationInterception", | |
| depends_on: ["FedCm"], | |
| public: true, | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "FencedFrames", | |
| base_feature: "none", | |
| // This helps enable and expose the <fencedframe> element, but note that | |
| // blink::features::kFencedFrames must be enabled as well, as we require | |
| // the support of the browser process to fully enable the feature. | |
| // Enabling this runtime enabled feature alone has no effect. | |
| public: true, | |
| status: "stable", | |
| }, | |
| { | |
| name: "FencedFramesAPIChanges", | |
| // Various new IDL attributes on the <fencedframe> element (such as | |
| // `config`, `sandbox`, and `allow`). | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "enabled_or_overridden", | |
| status: "stable", | |
| }, | |
| { | |
| // Allows fenced frames to access unpartioned data via Shared Storage in | |
| // exchange for disabling untrusted network access. This is the Blink | |
| // counterpart of the base::Feature with the same name. Because local | |
| // unpartitioned data access requires browser and renderer process | |
| // coordination, the value of this flag is strictly controlled by the | |
| // base::Feature variant, and setting this flag does nothing. | |
| name: "FencedFramesLocalUnpartitionedDataAccess", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| // Add Request.bytes() and Response.bytes() | |
| // https://chromestatus.com/feature/5239268180754432 | |
| name: "FetchBodyBytes", | |
| status: "stable", | |
| }, | |
| { | |
| // The Blink runtime-enabled feature name for the API's IDL. | |
| // https://chromestatus.com/feature/4654499737632768 | |
| name: "FetchLaterAPI", | |
| status: "stable", | |
| }, | |
| { | |
| // The retry ability for Fetch keepalive requests. | |
| // https://chromestatus.com/feature/5181984581877760 | |
| name: "FetchRetry", | |
| origin_trial_feature_name: "FetchRetry", | |
| origin_trial_allows_third_party: true, | |
| status: "experimental", | |
| base_feature: "FetchRetry", | |
| // base_feature is meant as kill-switch. This runtime-enabled feature | |
| // should follow the Origin Trial unless explicitly overriden by Finch or | |
| // commandline flags. | |
| base_feature_status: "enabled", | |
| // Enables the Blink feature only when the base::Feature is overridden by | |
| // field trial or command line. | |
| copied_from_base_feature_if: "overridden", | |
| browser_process_read_access: true, | |
| }, | |
| { | |
| name: "FetchUploadStreaming", | |
| status: "stable", | |
| }, | |
| { | |
| // Also enabled when blink::features::kFileHandlingAPI is overridden | |
| // on the command line (or via chrome://flags). | |
| name: "FileHandling", | |
| depends_on: ["FileSystemAccessLocal"], | |
| status: {"Android": "test", "default": "stable"}, | |
| base_feature: "FileHandlingAPI", | |
| }, | |
| { | |
| // For <input type=file>, fires change event when same file is chosen | |
| // again, and retains files when cancel is pressed. | |
| name: "FilePickerEventsFix", | |
| status: "stable", | |
| }, | |
| { | |
| name: "FileSystem", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Shared objects by OPFS and non-OPFS File System Access API. | |
| name: "FileSystemAccess", | |
| implied_by: ["FileSystemAccessLocal", "FileSystemAccessOriginPrivate"], | |
| }, | |
| { | |
| // In-development features for the File System Access API. | |
| name: "FileSystemAccessAPIExperimental", | |
| status: "experimental", | |
| }, | |
| { | |
| // The FileSystemHandle.getCloudIdentifiers() method (see | |
| // crbug.com/1443354). | |
| name: "FileSystemAccessGetCloudIdentifiers", | |
| status: { | |
| "ChromeOS": "experimental", | |
| "default": "", | |
| } | |
| }, | |
| { | |
| // Non-OPFS File System Access API. | |
| name: "FileSystemAccessLocal", | |
| status: {"default": "stable"}, | |
| }, | |
| { | |
| name: "FileSystemAccessLockingScheme", | |
| status: "stable", | |
| }, | |
| { | |
| // OPFS File System Access API. | |
| name: "FileSystemAccessOriginPrivate", | |
| status: "stable", | |
| }, | |
| { | |
| // When enabled, calling remove() on a FileSystemAccessHandle will also | |
| // update the permission grants for the associated path. Restored after | |
| // next write to the path. | |
| // See crbug.com/421690393. | |
| name: "FileSystemAccessRevokeReadOnRemove", | |
| depends_on: ["FileSystemAccessWriteMode"], | |
| status: "stable", | |
| }, | |
| { | |
| // Controls the internal write-only mode for various FileSystemAccess API. | |
| // This covers mostly content layer and does not expose any write mode to | |
| // user visible APIs. | |
| // This flag is part of crbug.com/421690393 and crbug.com/328458680. | |
| name: "FileSystemAccessWriteMode", | |
| status: "stable", | |
| }, | |
| { | |
| // The FileSystemObserver interface for the File System Access API. | |
| // See https://crbug.com/1019297. | |
| name: "FileSystemObserver", | |
| depends_on: ["FileSystemAccess"], | |
| status: { | |
| "Android": "", | |
| "iOS": "", | |
| "default": "stable", | |
| }, | |
| }, | |
| { | |
| // The unobserve function of the FileSystemObserver. | |
| // See https://crbug.com/321980469. | |
| name: "FileSystemObserverUnobserve", | |
| status: "experimental", | |
| }, | |
| { | |
| // Adds the filter attribute to the input element, which targets a | |
| // listbox select element to perform filtering. | |
| name: "FilterableSelect", | |
| status: "experimental", | |
| }, | |
| { | |
| // Fix for https://crbug.com/41153707 | |
| name: "FilterContainerLevelStyles", | |
| status: "stable" | |
| }, | |
| { | |
| // Enables the beforefilter event and the option.filtered IDL, which are | |
| // shared primitives needed by both the FilterableSelect and | |
| // CustomizableCombobox features. | |
| name: "FilteringPrimitives", | |
| implied_by: ["FilterableSelect", "CustomizableCombobox"], | |
| }, | |
| { | |
| name: "FindBufferCollapseSkippedSpace", | |
| status: "stable", | |
| }, | |
| { | |
| name: "FindBufferMatchAcrossIgnoredNodes", | |
| status: "stable", | |
| }, | |
| { | |
| // Fix for https://crbug.com/558819236 | |
| name: "FindBufferSkipIgnoredSubtrees", | |
| status: "stable", | |
| }, | |
| { | |
| name: "FindFirstMisspellingEndWhenNonEditable", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/553136688 and crbug.com/553252820 | |
| name: "FindIgnoreSuggestionFix", | |
| status: "stable", | |
| }, | |
| { | |
| // Enables asymmetric diacritic matching in Find-in-Page so base | |
| // characters match diacritic variants while explicit diacritics only | |
| // match that diacritic (https://crbug.com/40518349). | |
| name: "FindInPageAsymmetricDiacriticSearch", | |
| status: "test", | |
| }, | |
| { | |
| name: "FirstLetterParagraphOffsets", | |
| status: "stable", | |
| }, | |
| { | |
| // https://github.com/w3c/csswg-drafts/issues/13926 | |
| name: "FirstLineAndLetterExcludeInputTextarea", | |
| status: "stable", | |
| }, | |
| { | |
| // It turned out that this fix was wrong. The plan is to turn it off, and | |
| // remove if that goes well. crbug.com/41362700 | |
| name: "FirstLineTextMetrics", | |
| }, | |
| // When enabled, HTMLFormControlElement::IsReadOnly() returns false for | |
| // types that don't support readonly. | |
| { | |
| name: "FixHTMLFormControlElementIsReadOnly", | |
| status: "stable", | |
| }, | |
| { | |
| // Fix a bug in the <map> element's caching of the name attribute. This | |
| // flag was added in M148, and can be removed in M150. | |
| name: "FixMapElementEmptyNameBug", | |
| status: "stable", | |
| }, | |
| { | |
| // Guard the kStart / kEnd / kStartAndEnd branches of | |
| // LayoutSelection::ComputeSelectionStatus against std::nullopt | |
| // start_offset / end_offset in SelectionPaintRange. | |
| // See https://crbug.com/489028874 | |
| name: "FixSelectionPaintRangeNullOpt", | |
| status: "stable", | |
| }, | |
| // Fix LayoutView viewport mapping in the GeometryMapper fast path for | |
| // OOPIFs. | |
| { | |
| name: "FixVisualRectRemoteViewportTransform", | |
| status: "stable", | |
| }, | |
| { | |
| name: "FlexWrapBalance", | |
| status: "stable", | |
| }, | |
| { | |
| // https://open-ui.org/components/scoped-focusgroup.explainer/ | |
| name: "Focusgroup", | |
| status: "stable", | |
| }, | |
| { | |
| // https://open-ui.org/components/focusgroup-v2.explainer/ | |
| name: "FocusgroupV2", | |
| depends_on: ["Focusgroup"], | |
| status: "experimental", | |
| }, | |
| { | |
| // Fires a "focusreset" event at a Document during "update the rendering" | |
| // when its focused element was removed and focus was not explicitly | |
| // moved since. https://github.com/whatwg/html/pull/13050 | |
| name: "FocusResetEvent", | |
| status: "experimental", | |
| }, | |
| { | |
| // Respects explicit outline colors for focus rings in dark mode and uses | |
| // an off-white default. https://issues.chromium.org/issues/480978106 | |
| name: "FocusRingRespectExplicitOutlineColorInDarkMode", | |
| status: "stable", | |
| }, | |
| { | |
| name: "FontAccess", | |
| status: {"Android": "", "default": "stable"}, | |
| }, | |
| { | |
| name: "FontationsPrinting", | |
| status: "stable", | |
| }, | |
| { | |
| name: "FontDataServiceForCSSLocalFonts", | |
| base_feature: "none", | |
| // No status, as the web platform runtime enabled feature is controlled by | |
| // a Chromium level feature (kFontDataServiceForCSSLocalFonts). | |
| }, | |
| { | |
| name: "FontFamilyPostscriptMatchingCTMigration", | |
| }, | |
| { | |
| name: "FontFamilyStyleMatchingCTMigration", | |
| }, | |
| { | |
| // crbug.com/40398871 | |
| name: "FontFeatureSettingsDescriptor", | |
| status: "stable", | |
| }, | |
| { | |
| name: "FontFormatAvar2", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/41170551 | |
| name: "FontLanguageOverride", | |
| status: "stable", | |
| }, | |
| { | |
| name: "FontMatchAliasesAsLastResort", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/489865845. | |
| name: "FontPrewarmerShutdownFallback", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/393391746 | |
| name: "FontStyleObliqueZeroDegreeAsNormal", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/325826179 | |
| name: "FontUniqueNameTypefaceCache", | |
| status: "stable", | |
| }, | |
| { | |
| name: "FontVariableItalicAxis", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/40398871 | |
| name: "FontVariationSettingsDescriptor", | |
| status: "stable", | |
| }, | |
| { | |
| // TODO(crbug.com/1231644): This flag is being kept (even though the | |
| // feature has shipped) until there are settings to allow users to | |
| // customize the feature. | |
| name: "ForcedColors", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| // This is used in tests to perform memory measurement without | |
| // waiting for GC. | |
| name:"ForceEagerMeasureMemory", | |
| }, | |
| { | |
| // https://github.com/flackr/reduce-motion/blob/main/explainer.md | |
| name: "ForceReduceMotion", | |
| }, | |
| { | |
| // Flag for rolling out the standardized behavior where fetch calls are | |
| // rejected with the reason provided to the abort controller, if one was | |
| // provided. See crbug.com/502133195 | |
| name: "ForwardReasonToFetchBodyAbort", | |
| status: "stable", | |
| }, | |
| { | |
| name: "FractionalScrollOffsets", | |
| implied_by: ["FractionalScrollOffsetsForWebAPI"], | |
| status: "experimental", | |
| }, | |
| { | |
| // https://crbug.com/40384509. | |
| name: "FractionalScrollOffsetsForWebAPI", | |
| }, | |
| { | |
| // Generate layout fragments for out-of-flow positioned elements as | |
| // children of their actual containing block - ALSO when inside block | |
| // fragmentation, such as multicol. See crbug.com/40267498 | |
| name: "FragmentedOofInCb", | |
| }, | |
| { | |
| // crbug.com/570740320 | |
| name: "FrameCaretSkipHiddenCheck", | |
| status: "stable", | |
| }, | |
| { | |
| name: "FreezeFramesOnVisibility", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "GamepadButtonTypes", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "GamepadMultitouch", | |
| status: "experimental", | |
| public: true, | |
| }, | |
| { | |
| name: "GamepadRawInputChangeEvent", | |
| status: "experimental", | |
| origin_trial_feature_name: "GamepadRawInputChangeEvent", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| name: "GamepadUserActivationFocus", | |
| status: "stable", | |
| }, | |
| { | |
| name: "GamepadWindowEventHandlers", | |
| status: "stable", | |
| }, | |
| { | |
| // When enabled, the drag image overlay for an element will be created | |
| // before the "dragstart" event is fired. This fixes a bug that made | |
| // drags not start if the "dragstart" event caused a layout shift that | |
| // made the mouse hit test miss the drag source. | |
| name: "GenerateDragOverlayBeforeDragStart", | |
| status: "stable", | |
| }, | |
| { | |
| // Killswitch for the visible deprecation warning banner shown on | |
| // XSLT-transformed documents. This will be present until the banner is | |
| // removed in M158. | |
| name: "GenerateXSLTWarningBanner", | |
| status: "stable", | |
| }, | |
| { | |
| // Tracking bug for the implementation: https://crbug.com/430204832 | |
| name: "GeolocationElement", | |
| status: "stable", | |
| public: true, | |
| }, | |
| { | |
| // A feature flag that controls whether the geometry mapper singular | |
| // transform fix is enabled. | |
| // https://issues.chromium.org/issues/441128445 | |
| name: "GeometryMapperSingularTransformFix", | |
| status: "stable", | |
| }, | |
| { | |
| // GeometryUtils mixin. | |
| // https://drafts.csswg.org/cssom-view/#the-geometryutils-interface | |
| name: "GeometryUtils", | |
| status: "experimental", | |
| }, | |
| { | |
| // GeometryUtils for CSSPseudoElement interface. | |
| // https://www.w3.org/TR/cssom-view-1/#the-geometryutils-interface | |
| name: "GeometryUtilsForCSSPseudoElement", | |
| depends_on: ["CSSPseudoElementInterface"], | |
| status: "experimental", | |
| }, | |
| { | |
| name: "GetAllScreensMedia", | |
| depends_on: ["GetDisplayMedia"], | |
| public: true, | |
| status: { | |
| "ChromeOS": "stable", | |
| "default": "test", | |
| }, | |
| }, | |
| { | |
| name: "GetDisplayMedia", | |
| public: true, | |
| status: { | |
| "Android": "experimental", | |
| "default": "stable", | |
| }, | |
| base_feature: "none", | |
| }, | |
| // When a Web application calls getDisplayMedia(), allow a hint to be | |
| // provided as to whether the Web application prefers prioritizing audio | |
| // capture. | |
| // | |
| // https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-audioselection | |
| { | |
| name: "GetDisplayMediaAudioSelection", | |
| depends_on: ["GetDisplayMedia"], | |
| status: "stable", | |
| }, | |
| { | |
| name: "GetDisplayMediaRequiresUserActivation", | |
| depends_on: ["GetDisplayMedia"], | |
| status: "experimental", | |
| }, | |
| // When a Web application calls getDisplayMedia() and asks for audio, | |
| // allow a hint to be provided as to whether the Web application is | |
| // interested in audio being among the options offered to the user | |
| // on window display surfaces. | |
| // | |
| // https://www.w3.org/TR/screen-capture/#dom-displaymediastreamoptions-windowaudio | |
| { | |
| name: "GetDisplayMediaWindowAudioCapture", | |
| status: "stable", | |
| browser_process_read_write_access: true, | |
| }, | |
| { | |
| // To filter only elements in the HTML namespace when calling | |
| // getElementsByName(). | |
| // This was added in M141 and can be removed after M143. | |
| // https://issues.chromium.org/issues/40502558 | |
| name: "GetElementsByNameOnlyHTMLElements", | |
| status: "stable", | |
| }, | |
| { | |
| // Performs retargeting on the output of InputEvent.getTargetRanges() to | |
| // prevent leaking nodes in shadow roots. | |
| name: "GetTargetRangesRetargeting", | |
| status: "stable", | |
| }, | |
| { | |
| name: "GetUserMediaEchoCancellationModes", | |
| status: "stable", | |
| }, | |
| { | |
| name: "GlobalPrivacyControl", | |
| implied_by: [ | |
| "GlobalPrivacyControlApi", | |
| "GlobalPrivacyControlForce" | |
| ], | |
| base_feature: "none", | |
| }, | |
| { | |
| // Gates the navigator.globalPrivacyControl JavaScript API. | |
| name: "GlobalPrivacyControlApi", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "GlobalPrivacyControlForce", | |
| }, | |
| { | |
| name: "GraphemeClusterBoundsCheck", | |
| status: "stable", | |
| }, | |
| { | |
| name: "GroupEffect", | |
| status: "test", | |
| }, | |
| { | |
| name: "HandleShadowDOMInSubstringUtil", | |
| status: "stable", | |
| }, | |
| { | |
| name: "HandwritingRecognition", | |
| status: { | |
| "ChromeOS": "stable", | |
| "default": "experimental", | |
| }, | |
| }, | |
| { | |
| name: "HarfRustShaping", | |
| status: "test", | |
| }, | |
| { | |
| name: "HasUAVisualTransition", | |
| status: "stable", | |
| }, | |
| // TODO(crbug.com/333628468): Enables the `headingoffset` and | |
| // `headingreset` attributes, which allow for alternate styles of building | |
| // structured headings. This is being actively prototyped, starting ~M136. | |
| // For more see https://github.com/whatwg/html/issues/5033 | |
| { | |
| name: "HeadingOffset", | |
| status: "experimental", | |
| }, | |
| { | |
| // Kill switch for hiding the selection of a readonly text control | |
| // once the control is no longer focused, matching editable controls. | |
| // https://crbug.com/40768970 | |
| name: "HideUnfocusedReadonlyTextControlSelection", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for setting `display: none` on the media controls | |
| // container when it is not needed. | |
| // Lands in M147 and can be removed in M149. https://crbug.com/40591804 | |
| name: "HideVideoControlsWhenUnneeded", | |
| status: "stable", | |
| }, | |
| { | |
| name: "HighlightsFromPoint", | |
| status: "stable", | |
| }, | |
| { | |
| // Fixed https://crbug.com/456164629, so this will be shipped in M150 | |
| // and can be removed in M152. | |
| name: "HitTestBorderRadiusForStackingContext", | |
| status: "stable", | |
| }, | |
| { | |
| // Use container_transform_state instead of local_transform_state when | |
| // computing z-depth for depth ordering in preserve-3d hit testing. | |
| // Fixes incorrect hit-test results for layers without CSS transforms. | |
| // https://crbug.com/464173566 | |
| name: "HitTestContainerTransformStateForPreserve3d", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/576771254. List-based hit tests | |
| // (such as elementsFromPoint()) add the culled inline ancestors of an | |
| // inline item that has a self-painting layer, such as a | |
| // position:relative child. | |
| name: "HitTestCulledInlineOfSelfPaintingChild", | |
| status: "stable", | |
| }, | |
| { | |
| name: "HrefTranslate", | |
| depends_on: ["TranslateService"], | |
| origin_trial_feature_name: "HrefTranslate", | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "HstsTopLevelNavigationsOnly", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| // Extra steps in HTML Agency Adoption algorithm to remove elements from the | |
| // formatting list when the internal loop reached the maximum number of | |
| // iterations. This shipped in M148 and the flag can be removed in M150. | |
| { | |
| name: "HTMLAdoptionAlgorithmNewSteps", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for making <area> display:none by default according to the | |
| // HTML rendering specification. https://crbug.com/1231263 | |
| name: "HTMLAreaElementDisplayNone", | |
| status: "stable", | |
| }, | |
| { | |
| name: "HTMLAreaHreflangType", | |
| status: "test", | |
| }, | |
| { | |
| // Kill switch for parsing <body>, <frame> and <iframe> margin attributes | |
| // as pixel lengths per the HTML rendering rules. | |
| // https://crbug.com/554920796 | |
| name: "HTMLBodyMarginPixelLength", | |
| status: "stable", | |
| }, | |
| // Additional default command/commandfor actions that aren't part of v1 of | |
| // commands. When this flag is disabled only v1 actions (popover and dialog | |
| // defaults) will work. | |
| { | |
| name: "HTMLCommandActionsV2", | |
| status: "test", | |
| }, | |
| // Remove support for the <command> element from the HTML parsing logic. | |
| // This shipped in M148 and the flag can be removed in M150. | |
| // https://issues.chromium.org/issues/491158089 | |
| // NOTE: when this flag is removed, be sure to also remove "command" | |
| // from third_party/blink/renderer/core/html/html_tag_names.json5. | |
| { | |
| name: "HTMLCommandElementRemoval", | |
| status: "stable", | |
| }, | |
| // Adds support for scroll commands such as 'page-up' and 'page-block-end'. | |
| // https://github.com/danielsakhapov/declarative-scroll-commands-for-html-explainer | |
| { | |
| name: "HTMLCommandForScrollCommands", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "HTMLElementScrollParent", | |
| status: "experimental", | |
| }, | |
| // Adds support for the `::interest-button` pseudo element, which is a sub- | |
| // feature of the interest invokers feature. | |
| // https://open-ui.org/components/interest-invokers.explainer/ | |
| { | |
| name: "HTMLInterestForInterestButtonPseudo", | |
| status: "experimental", | |
| }, | |
| { | |
| // Prevents the HTMLLinkElement processing model from being invoked when | |
| // attributes are processed but their value doesn't change. See | |
| // https://crbug.com/41436016. | |
| name: "HTMLLinkElementAttributeValueChanges", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for ignoring head start tags in the "in head noscript" | |
| // insertion mode. https://crbug.com/40775952 | |
| name: "HTMLParserIgnoreHeadInNoscript", | |
| status: "stable", | |
| }, | |
| { | |
| // Killswitch for crbug.com/40727112: emit a bogus comment for an | |
| // incomplete markup declaration at end of input instead of dropping the | |
| // rest of the document. | |
| name: "HTMLParserTruncatedMarkupDeclaration", | |
| status: "stable", | |
| }, | |
| { | |
| // A flag, just for local testing to make the | |
| // HTML parser yield more often and take longer to resume. | |
| // This helps when debugging flaky tests caused by parser | |
| // yielding heuristics. | |
| name: "HTMLParserYieldAndDelayOftenForTesting", | |
| }, | |
| { | |
| name: "HTMLParserYieldByUserTiming", | |
| status: "test", | |
| }, | |
| { | |
| // Defers image loads triggered from | |
| // HTMLPlugInElement::CustomStyleForLayoutObject to a DOM manipulation | |
| // task instead of loading synchronously during style recalc. | |
| // https://crbug.com/575053155 | |
| name: "HTMLPlugInDeferStyleRecalcImageLoad", | |
| status: "stable", | |
| }, | |
| { | |
| // When enabled, specifies visual affordances for printing such as headers, | |
| // footers and page numbers, to be PDF annotations. | |
| // See section 14.8.2.2.1 here for info: | |
| // https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf | |
| name: "HTMLPrintingArtifactAnnotations", | |
| status: "stable", | |
| }, | |
| { | |
| // Parse processing instructions in HTML. | |
| name: "HTMLProcessingInstruction", | |
| status: "stable", | |
| }, | |
| { | |
| // Enables the switch attribute on <input type="checkbox">. | |
| // https://open-ui.org/components/switch.attribute.explainer/ | |
| name: "HTMLSwitchAttribute", | |
| status: "experimental", | |
| }, | |
| { | |
| // Use orientation segmentation for hyphenation strings in vertical mixed | |
| // text, so characters such as "+=" render sideways instead of upright. | |
| // https://crbug.com/562849567 | |
| name: "HyphenVerticalOrientationFix", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ICUCapitalization", | |
| status: "stable", | |
| }, | |
| { | |
| name: "IgnoreLetterSpacingInCursiveScripts", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ImageDataPixelFormat", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ImageDocumentUseLayoutWidth", | |
| status: "stable", | |
| }, | |
| { | |
| // Srcset images respond to viewport/zoom changes by | |
| // re-selecting the best candidate, including for | |
| // x-descriptors. | |
| // https://crbug.com/41385706 | |
| name: "ImageSrcsetReselection", | |
| status: "stable", | |
| }, | |
| { | |
| // Srcset images also re-select the best candidate on viewport/zoom | |
| // changes when the src attribute was the selected (implicit 1x) | |
| // candidate. | |
| // https://crbug.com/560379372 | |
| name: "ImageSrcsetReselectionForSrcCandidate", | |
| depends_on: ["ImageSrcsetReselection"], | |
| status: "stable", | |
| }, | |
| { | |
| name: "ImplicitRootScroller", | |
| public: true, | |
| settable_from_internals: true, | |
| status: {"Android": "stable"}, | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "IncomingCallNotifications", | |
| origin_trial_feature_name: "IncomingCallNotifications", | |
| origin_trial_os: [ "win" ], | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| // Support for https://www.w3.org/TR/IFT/. Tracked at | |
| // https://chromestatus.com/feature/5135917565214720. | |
| name: "IncrementalFontTransfer", | |
| status: "test", | |
| }, | |
| { | |
| name: "InertElementNonEditable", | |
| status: "stable", | |
| }, | |
| { | |
| // If a painting bug no longer reproduces with this feature enabled, then | |
| // the bug is caused by incorrect cull rects. | |
| name: "InfiniteCullRect", | |
| }, | |
| { | |
| name: "InheritUserModifyWithoutContenteditable", | |
| status: "stable", | |
| }, | |
| { | |
| // Initial letter block-axis positioning fixes. See crbug.com/573256240 | |
| name: "InitialLetterBlockPositioning", | |
| status: "stable", | |
| }, | |
| { | |
| // See crbug.com/40695399 | |
| name: "InlineBlockLineNavigation", | |
| status: "stable", | |
| }, | |
| { | |
| // See crbug.com/40910996 crbug.com/569803503 | |
| name: "InlineContainingBlockSkipOpaque", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/576888320 | |
| name: "InlineCursorMoveToEarlierFragmentainer", | |
| status: "stable", | |
| }, | |
| { | |
| name: "InlineCursorSkipNonIfc", | |
| status: "stable", | |
| }, | |
| { | |
| name: "InlineScriptCacheHint", | |
| status: "experimental", | |
| }, | |
| { | |
| // If enabled, and the inner html parser is unable to successfully | |
| // parse, it will log histograms of why it failed. The logging is | |
| // non-trivial. | |
| name: "InnerHTMLParserFastpathLogFailure", | |
| status: "experimental", | |
| }, | |
| { | |
| // Text fields leave the inline padding out of their client rect and | |
| // scroll size, matching where they clip their text. Kill switch. | |
| // https://github.com/w3c/csswg-drafts/issues/13502 | |
| name: "InputClientRectWithoutInlinePadding", | |
| status: "stable", | |
| }, | |
| { | |
| // Prevents running DefaultEventHandler on disabled input elements. | |
| // Enabled in M153, safe to remove in M155. | |
| // https://issues.chromium.org/issues/533188858 | |
| name: "InputDisabledHandlerFix", | |
| status: "stable", | |
| }, | |
| { | |
| // The HTML parser inserts a </select> end tag before inserting <input> | |
| // when parsing inside of a <select> tag. We want to allow <input> inside | |
| // <select>, but it isn't web compatible enough. This flag allows <input> | |
| // inside <select> but only if there is another open tag in between the | |
| // <input> and the <select>, like <select><div><input>. | |
| // For now, this flag also makes <input> close <select> like it used to | |
| // when the <input> is put directly within an <option> or <optgroup>. | |
| name: "InputInSelect", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "InputMultipleFieldsUI", | |
| // No plan to support complex UI for date/time INPUT types on Android and | |
| // iOS. | |
| status: {"Android": "test", "iOS": "test", "default": "stable"}, | |
| implied_by: ["InputMultipleFieldsUIWithPointerChecks"], | |
| }, | |
| { | |
| // Enables InputMultipleFieldsUI on all platforms by tweaking the inner | |
| // fields to be non-focusable and making the whole input element | |
| // focusable for coarse input devices. When this flag is removed, the | |
| // InputMultipleFieldsUI flag can also be removed. | |
| name: "InputMultipleFieldsUIWithPointerChecks", | |
| }, | |
| // Enables the `alpha` and `colorspace` content/IDL attributes on | |
| // <input type=color>, allowing alpha and Display P3 color values. | |
| // https://html.spec.whatwg.org/multipage/input.html#dom-input-colorspace | |
| // https://html.spec.whatwg.org/multipage/input.html#dom-input-alpha | |
| // https://chromestatus.com/feature/5736024861966336 | |
| { | |
| name: "InputTypeColorEnhancements", | |
| status: "experimental", | |
| }, | |
| // Insert a blockquote before a outer block after creating the blockquote | |
| // when indenting a node whose outer block is a blockquote. See | |
| // https://crbug.com/327665597 | |
| { | |
| name: "InsertBlockquoteBeforeOuterBlock", | |
| status: "stable", | |
| }, | |
| { | |
| name: "InstalledApp", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/5152834368700416 | |
| name: "InstallElement", | |
| status: { | |
| "Android": "", | |
| "iOS": "", | |
| "Fuchsia": "", | |
| "default": "stable", | |
| }, | |
| public: true, | |
| }, | |
| { | |
| name: "InstallOnDeviceSpeechRecognition", | |
| status: "stable", | |
| }, | |
| { | |
| name: "IntegrityPolicyScript", | |
| status: "stable", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| // Fixes a bug in the implementation of `interest` and `loseinterest` | |
| // events - they should not be composed events. | |
| // This shipped in M149 and can be removed in M151. | |
| name: "InterestEventsNonComposed", | |
| status: "stable", | |
| }, | |
| { | |
| // If enabled, BeginMainFrame will always be requested when there are | |
| // active IntersectionObservers and also active composited animations. | |
| name: "IntersectionObserverCompositedAnimationsForceMainFrames", | |
| status: "stable", | |
| }, | |
| { | |
| // Lets invalidation sets use "is focused" as a feature, so that a | |
| // selector like `.a :focus` only invalidates the focused descendant of | |
| // `.a` instead of its whole subtree. Kill switch. | |
| name: "InvalidationSetFocusFeature", | |
| status: "stable", | |
| }, | |
| { | |
| name: "InvertedColors", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "InvisibleSVGAnimationThrottling", | |
| status: "stable", | |
| }, | |
| { | |
| name: "JavaScriptCompileHintsPerFunctionMagicRuntime", | |
| status: "experimental", | |
| origin_trial_feature_name: "JavaScriptCompileHintsPerFunctionMagic", | |
| }, | |
| { | |
| name: "JavaScriptImportText", | |
| status: "stable", | |
| }, | |
| { | |
| name: "JavaScriptSourcePhaseImports", | |
| }, | |
| { | |
| name: "KeyboardAccessibleTooltip", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Skips keyboard activation when focus is on a descendant. Shipped in M158. | |
| name: "KeyboardActivationFocusCheck", | |
| status: "stable", | |
| }, | |
| { | |
| // Checks interactive content using EventPath captured at | |
| // dispatch start instead of current DOM state. This was | |
| // added in M145 and can be removed after M147. | |
| // https://issues.chromium.org/issues/452084024 | |
| name: "LabelInteractiveContentCheckBeforeHandler", | |
| status: "stable", | |
| }, | |
| { | |
| name: "LangAttributeAwareFormControlUI", | |
| settable_from_internals: true, | |
| }, | |
| { | |
| name: "LanguageDetectionAPI", | |
| status: { | |
| "Win": "stable", | |
| "Mac": "stable", | |
| "Linux": "stable", | |
| "ChromeOS": "stable", | |
| "Android": "stable", | |
| "default": "", | |
| }, | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| }, | |
| { | |
| name: "LanguageDetectionAPIForWorkers", | |
| public: true, | |
| }, | |
| { | |
| name: "LayoutIgnoreMarginsForSticky", | |
| }, | |
| { | |
| name: "LayoutOOFCollectInlinesFix", | |
| status: "stable", | |
| }, | |
| { | |
| // When enabled, brings chromium into compliance with the resolution of: | |
| // https://github.com/whatwg/html/issues/10671 | |
| // This flag can be used to easily revert to the old behavior if the new | |
| // behavior causes breakage; otherwise, it can be removed after M145 | |
| // reaches stable. | |
| name: "LazyImageConformantLoadEventTiming", | |
| status: "stable", | |
| }, | |
| { | |
| // Enables the loading attribute for video and audio elements, | |
| // allowing lazy loading similar to images. | |
| // https://crbug.com/469111735 | |
| name: "LazyLoadVideoAndAudio", | |
| status: "stable", | |
| }, | |
| { | |
| // Defers parsing of declaration blocks in inline <style> elements until | |
| // a rule is first matched, the same treatment network-fetched | |
| // stylesheets already get in StyleSheetContents::ParseAuthorStyleSheet. | |
| // Rules that never match never pay for their declarations. | |
| name: "LazyParseInlineStyleSheets", | |
| }, | |
| { | |
| // Allow triggering the word suggestion from left click. | |
| // From crbug.com/433209485 | |
| name: "LeftClickToHandleSuggestion", | |
| status: { | |
| "Android": "stable" | |
| } | |
| }, | |
| { | |
| // Keeps the legacy container attributes (startContainer/endContainer) | |
| // on AbstractRange. These attributes move to a new NodeRange interface | |
| // between AbstractRange and Range/StaticRange. This is forced to the | |
| // inverse of the global OpaqueRange runtime flag in | |
| // content/child/runtime_features.cc. Remove when the OpaqueRange flag is | |
| // removed. crbug.com/421421332 | |
| name: "LegacyAbstractRange", | |
| base_feature: "none", | |
| status: "stable", | |
| }, | |
| { | |
| // Makes light dismiss for popovers and dialogs use the click event | |
| // instead of pointerdown and pointerup in order to fix light dismiss | |
| // bugs for touch inputs. | |
| // https://issues.chromium.org/issues/408010435 | |
| name: "LightDismissFromClick", | |
| status: "stable", | |
| }, | |
| { | |
| name: "LineBreakAfterSpaceBeforeOpenTag", | |
| status: "stable", | |
| }, | |
| { | |
| name: "LineBreakBidiControlEnter", | |
| status: "stable", | |
| }, | |
| { | |
| // Clear stale shaping when a line-breaking retry overflows. | |
| // https://crbug.com/559557312 | |
| name: "LineBreakerClearShapeResultOnOverflow", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/542686223 crbug.com/568304685 | |
| name: "LineBreakerHanKerningEnd", | |
| status: "stable", | |
| }, | |
| { | |
| // Reverse origin trial allowing sites to opt out of Local Network Access | |
| // restrictions for WebRTC. | |
| name: "LocalNetworkAccessForWebRTCOptOut", | |
| origin_trial_feature_name: "LocalNetworkAccessForWebRTCOptOut", | |
| origin_trial_type: "deprecation", | |
| origin_trial_allows_insecure: true, | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "LocalNetworkAccessPermissionPolicy", | |
| base_feature: "none", | |
| // No status because this blink runtime feature doesn't work by itself. | |
| // It's controlled by network::features::kLocalNetworkAccessChecks which | |
| // needs to be enabled to make the whole feature work (see | |
| // crbug.com/394009026). | |
| }, | |
| { | |
| name: "LocalNetworkAccessWebRTC", | |
| base_feature: "none", | |
| // No status because this feature is controlled by | |
| // network::features::kLocalNetworkAccessChecks and | |
| // network::features::kLocalNetworkAccessChecksWebRTC. | |
| }, | |
| { | |
| name: "LocalNetworkAccessWebSocketsTargetAddressSpace", | |
| status: "experimental", | |
| depends_on: ["WebSocketOptionBag"], | |
| }, | |
| { | |
| name: "LockedMode", | |
| status: "test", | |
| // Enabled by features::kLockedMode. | |
| public: true, | |
| }, | |
| { | |
| name: "LoginElement", | |
| depends_on: ["FedCm"], | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Enable sourceCharPosition for the invoke-type resolve-promise | |
| // https://issues.chromium.org/issues/381529126 | |
| name: "LongAnimationFrameSourceCharPosition", | |
| status: "stable", | |
| }, | |
| { | |
| // Enable retrieving sourceLine and sourceColumn in LoAF implementation. | |
| // https://issues.chromium.org/issues/391417815 | |
| name: "LongAnimationFrameSourceLineColumn", | |
| status: "test", | |
| implied_by: ["LongAnimationFrameSourceLineColumnInterface"], | |
| }, | |
| { | |
| // Add sourceLine and sourceColumn to PerformanceScriptTiming | |
| // https://issues.chromium.org/issues/391417815 | |
| name: "LongAnimationFrameSourceLineColumnInterface", | |
| status: "test", | |
| }, | |
| { | |
| // Add styleDuration and layoutDuration to | |
| // PerformanceLongAnimationFrameTiming and forcedStyleDuration and | |
| // forcedLayoutDuration to PerformanceScriptTiming | |
| name: "LongAnimationFrameStyleDuration", | |
| status: "stable", | |
| }, | |
| { | |
| // Extends the Long Animation Frame (LoAF) API to Web Workers. Reports a | |
| // long task blocking a worker's event loop as a "long-animation-frame" | |
| // entry, observable from inside the worker. See the loaf-congested-moments | |
| // explainer: https://github.com/WICG/delayed-message-timing | |
| name: "LongAnimationFrameWorker", | |
| status: "test", | |
| }, | |
| { | |
| // https://crbug.com/572893186 | |
| name: "LongPressHitTestInFrame", | |
| status: "stable", | |
| }, | |
| { | |
| // Long press on a link selects the link text instead of bringing up | |
| // context menu. Enabled only on Android AuthView. | |
| name: "LongPressLinkSelectText", | |
| }, | |
| { | |
| // Kill-switch for releasing the :active state when a touch long-press is | |
| // lifted, and for making context-menu focus hit tests read-only. | |
| // https://crbug.com/358393574 | |
| name: "LongPressReleasesActiveState", | |
| status: "stable", | |
| }, | |
| { | |
| // Use LongAnimationFrameMonitor to emit longtask entries | |
| name: "LongTaskFromLongAnimationFrame", | |
| status: "stable", | |
| }, | |
| { | |
| name: "MacCharacterFallbackCache", | |
| status: "stable", | |
| }, | |
| { | |
| name: "MacDisableCtrlHomeEnd", | |
| status: "stable", | |
| }, | |
| { | |
| // Read font weight from the OpenType OS/2 table first during macOS font | |
| // family style matching, falling back to AppKit/CoreText weights if the | |
| // OS/2 table is unavailable. See https://crbug.com/543243014. | |
| name: "MacFontWeightFromOS2", | |
| status: "stable", | |
| }, | |
| { | |
| name: "MachineLearningNeuralNetwork", | |
| // Enabled by webnn::mojom::features::kWebMachineLearningNeuralNetwork. | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "ManagedConfiguration", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ManualText", | |
| public: true, | |
| status: "test", | |
| base_feature: "none", | |
| }, | |
| { | |
| // CSS margin-trim property: https://drafts.csswg.org/css-box-4/#margin-trim | |
| name: "MarginTrim", | |
| status: "stable", | |
| }, | |
| { | |
| name: "MarkAncestorsOnDisplayLockUnlock", | |
| status: "stable", | |
| }, | |
| { | |
| name: "MaskDeserializationTimeForCrossOriginMessages", | |
| status: "stable", | |
| }, | |
| { | |
| name: "MaskWaitForAllImages", | |
| status: "stable", | |
| }, | |
| { | |
| // Enables MathMLAnchorElement | |
| name: "MathMLAnchorElement", | |
| status: "experimental", | |
| }, | |
| { | |
| // Enables mirroring for stretchy and large MathML operators when | |
| // the text direction is right to left. | |
| name: "MathMLOperatorRTLMirroring", | |
| status: "stable", | |
| }, | |
| { | |
| name:"MeasureMemory", | |
| status:"stable", | |
| }, | |
| { | |
| name: "MediaCapabilitiesEncodingInfo", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "MediaCapabilitiesSpatialAudio", | |
| status: "test", | |
| }, | |
| { | |
| name: "MediaCaptionSettingsButton", | |
| status: { | |
| "Win": "stable", | |
| "Mac": "stable", | |
| "Linux": "stable", | |
| "ChromeOS": "stable", | |
| }, | |
| }, | |
| { | |
| name: "MediaCapture", | |
| status: {"Android": "stable"}, | |
| }, | |
| { | |
| name: "MediaCaptureBackgroundBlur", | |
| origin_trial_feature_name: "MediaCaptureBackgroundBlur", | |
| status: "experimental", | |
| implied_by: ["MediaCaptureCameraControls"], | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "MediaCaptureCameraControls", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "MediaCaptureConfigurationChange", | |
| origin_trial_feature_name: "MediaCaptureBackgroundBlur", | |
| status: "experimental", | |
| implied_by: ["MediaCaptureBackgroundBlur"], | |
| base_feature: "none", | |
| }, | |
| { | |
| // Enables camera and microphone preview for <camera>, <microphone>, and | |
| // <usermedia> elements. | |
| name: "MediaCaptureElementPreview", | |
| }, | |
| { | |
| name: "MediaCaptureVoiceIsolation", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "MediaControlsExpandGesture", | |
| base_feature: "none", | |
| public: true, | |
| status: { "Android": "stable" }, | |
| }, | |
| { | |
| name: "MediaControlsOverlayPlayButton", | |
| public: true, | |
| settable_from_internals: true, | |
| status: {"Android": "stable"}, | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "MediaElementMutedDefaultState", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "MediaElementVolumeGreaterThanOne", | |
| }, | |
| // Set to reflect the kMediaEngagementBypassAutoplayPolicies feature. | |
| { | |
| name: "MediaEngagementBypassAutoplayPolicies", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| name: "MediaLatencyHint", | |
| status: "test", | |
| }, | |
| { | |
| name: "MediaPlaybackWhileNotVisiblePermissionPolicy", | |
| status: "stable", | |
| }, | |
| { | |
| name: "MediaQueryNavigationControls", | |
| }, | |
| { | |
| name: "MediaSession", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "MediaSessionChapterInformation", | |
| status: "stable", | |
| }, | |
| { | |
| name: "MediaSourceExperimental", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "MediaSourceExtensionsForWebCodecs", | |
| status: "experimental", | |
| base_feature: "none", | |
| origin_trial_feature_name: "MediaSourceExtensionsForWebCodecs", | |
| }, | |
| { | |
| name: "MediaStreamTrackProcessorStats", | |
| status: "stable", | |
| }, | |
| { | |
| name: "MediaStreamTrackTransfer", | |
| status: "test", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "MediaStreamTrackWebSpeech", | |
| status: { | |
| "Linux": "stable", | |
| "Mac": "stable", | |
| "Win": "stable", | |
| "default": "experimental", | |
| }, | |
| }, | |
| { | |
| // This feature helps to add memory consumer to NGShapeCache, so that | |
| // the cached shape results would be cleared once exceeding the memory limit. | |
| name: "MemoryConsumerForNGShapeCache", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "MenuElements", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "MessagePortCloseEvent", | |
| status: "test", | |
| }, | |
| // This is enabled by default on Windows only. The only part that's | |
| // "experimental" is the support on other platforms. | |
| { | |
| name: "MiddleClickAutoscroll", | |
| status: "test", | |
| }, | |
| // Killswitch for crbug.com/40062462 fix. | |
| { | |
| name: "MixedContentAutoupgradesUseIsMixedContentRestrictedInFrame", | |
| status: "stable", | |
| }, | |
| { | |
| name: "MobileLayoutTheme", | |
| }, | |
| { | |
| name: "ModifyParagraphCrossEditingoundary", | |
| status: "stable", | |
| }, | |
| // Stops caching failed module fetches (network error, non-ok status, or | |
| // MIME type mismatch), so a later import re-fetches instead of reusing the | |
| // failure. | |
| // https://html.spec.whatwg.org/C/#fetch-a-single-module-script | |
| // https://crbug.com/534781954 | |
| { | |
| name: "ModuleMapDoNotCacheFailedFetch", | |
| status: "stable", | |
| }, | |
| // ModulePreloadReferrer enables modulepreload to send proper referrer | |
| // headers as specified in the HTML spec. | |
| // https://crbug.com/441933555 | |
| { | |
| name: "ModulePreloadReferrer", | |
| status: "stable", | |
| }, | |
| // https://crbug.com/466888680 | |
| { | |
| name: "ModulePreloadStyleJson", | |
| status: "stable", | |
| }, | |
| { | |
| name: "MojoJS", | |
| status: "test", | |
| custom_enable_check: "CanEnableMojoJS", | |
| }, | |
| // MojoJSTest is used exclusively in testing environments, whereas MojoJS | |
| // may also be used elsewhere. | |
| { | |
| name: "MojoJSTest", | |
| status: "test", | |
| base_feature: "none", | |
| custom_enable_check: "CanEnableMojoJSTest", | |
| }, | |
| // Optimization for monospace text. | |
| { | |
| name: "MonospaceGlyphCompaction", | |
| status: "stable", | |
| }, | |
| // Move the selection to the last position in the list item. See | |
| // https://crbug.com/331841851 | |
| { | |
| name: "MoveEndingSelectionToListChild", | |
| status: "stable", | |
| }, | |
| { | |
| // https://issues.chromium.org/issues/41015847 | |
| // This will be shipped in M151, and it can be removed in M153. | |
| name: "MoveParagraphsPreserveInlineStructure", | |
| status: "stable", | |
| }, | |
| { | |
| // Clamp a column-count:auto multicol container's max-content inline | |
| // size to column-width per css-sizing-4. Kill switch for | |
| // crbug.com/41459384. | |
| name: "MulticolColumnWidthMaxContentClamp", | |
| status: "stable", | |
| }, | |
| { | |
| // Support Nastaliq script. crbug.com/569667449 | |
| name: "NastaliqScript", | |
| status: "stable", | |
| }, | |
| { | |
| name: "NavigateEventDeferCrossDocumentCommit", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "NavigationEventTiming", | |
| }, | |
| { | |
| // NavigationState class and the :navigation-source CSS pseudo-class. | |
| name: "NavigationSourcePseudoClass", | |
| status: "stable", | |
| implied_by: ["RouteMatching"], | |
| }, | |
| { | |
| // Exposes navigation redirect timing (redirectCount, redirectStart and | |
| // redirectEnd) for cross-origin redirect chains when every redirect opts | |
| // in to the navigation's destination origin via Timing-Allow-Origin and | |
| // the navigation is not a no-referrer navigation. | |
| // https://github.com/whatwg/fetch/pull/1931 | |
| // https://github.com/whatwg/html/pull/12513 | |
| name: "NavigationTimingRedirectTimingViaTAO", | |
| status: "stable", | |
| }, | |
| { | |
| // Support <navigation-type-test> and <navigation-phase-test>. | |
| name: "NavigationTypeAndPhase", | |
| status: "experimental", | |
| depends_on: ["RouteMatching"], | |
| }, | |
| { | |
| name: "NavigatorContentUtils", | |
| // Android does not yet support NavigatorContentUtils. | |
| status: {"Android": "", "default": "stable"}, | |
| }, | |
| { | |
| name: "NetInfoConstantType", | |
| }, | |
| { | |
| name: "NetInfoDownlinkMax", | |
| public: true, | |
| // Only Android, ChromeOS support NetInfo downlinkMax, type and ontypechange now | |
| status: { | |
| "Android": "stable", | |
| "ChromeOS": "stable", | |
| "default": "experimental", | |
| }, | |
| base_feature: "none", | |
| }, | |
| { | |
| // See crbug.com/567611289 | |
| // Per https://www.w3.org/TR/web-animations-1/ | |
| // #the-effect-value-of-a-keyframe-animation-effect: | |
| // Keyframes not affecting the target property are to be removed prior | |
| // to populating interval endpoints. Blink's longstanding behavior was | |
| // not spec-compliant. Introducing a kill-switch to allow a quick revert | |
| // should this be a breaking change for sites. | |
| name: "NeutralKeyframeEasingCompliance", | |
| status: "stable" | |
| }, | |
| { | |
| // See crbug.com/521921832 | |
| // Any potential behavioral changes excepting bugfixes from the V2 implementation (including | |
| // changes to when the histogram is reported, like early-outs in Animation::PreCommit) are behind | |
| // this flag, for safety and consistent reporting on the V1 enum while it is still supported. | |
| name: "NewAnimationCompositingChecking", | |
| status: "test" | |
| }, | |
| { | |
| // Enhanced reporting to dev-tools of the composited/non-composited state of animations. | |
| name: "NewAnimationDispositionReporting" | |
| }, | |
| { | |
| // https://chromestatus.com/feature/5054329641893888 | |
| // streamHTML, appendHTML, etc. | |
| name: "NewHTMLSettingMethods", | |
| status: "stable", | |
| depends_on: ["SetHTMLCanRunScripts", "TrustedTypesCreateParserOptions"] | |
| }, | |
| { | |
| // Kill switch for the NodeIterator position fix after subtree removal. | |
| // https://crbug.com/532607274 | |
| name: "NodeIteratorRemovalFix", | |
| status: "stable", | |
| }, | |
| { | |
| // Fix for https://crbug.com/482862753 | |
| name: "NoExtendSelectionToUserSelectNoneOutOfFlow", | |
| status: "stable" | |
| }, | |
| { | |
| // Fix for https://crbug.com/522844903, a regression from | |
| // crrev.com/c/7617189. Gated behind its own flag rather than | |
| // changing NoExtendSelectionToUserSelectNoneOutOfFlow's behavior. | |
| name: "NoExtendSelectionToUserSelectNoneOutOfFlowUnlessEditable", | |
| status: "stable" | |
| }, | |
| { | |
| // This turns off all font antialiasing for tests unless it is | |
| // explicitly required and enabled using the | |
| // "--enable-font-antialiasing" flag like in the case of | |
| // "virtual/text-antialias/" virtual test suite. | |
| // crbug.com/339041663 | |
| name: "NoFontAntialiasing", | |
| status: "test", | |
| }, | |
| { | |
| name: "NoIdleEncodingForWebTests", | |
| status: "test", | |
| }, | |
| { | |
| // When copying, a lone space between two inline elements is kept as an | |
| // ordinary breaking space instead of being converted to a non-breaking | |
| // space. Spaces at the selection edges and runs of two or more spaces are | |
| // still converted to non-breaking spaces. See https://crbug.com/448047353 | |
| name: "NoNbspForInterElementSpaceOnCopy", | |
| status: "stable", | |
| }, | |
| // Doesn't insert empty blockquotes on outdenting a blockquote. See | |
| // https://crbug.com/323960902 | |
| { | |
| name: "NonEmptyBlockquotesOnOutdenting", | |
| status: "stable", | |
| }, | |
| { | |
| name: "NonEmptyVisibleTextSelectionForTextFragment", | |
| status: "stable", | |
| }, | |
| { | |
| // TODO(crbug.com/1426629): This feature enables the deprecated value | |
| // slider-vertical. Disable this feature to stop parsing or allowing these | |
| // values. | |
| // https://drafts.csswg.org/css-ui-4/#appearance-switching | |
| name: "NonStandardAppearanceValueSliderVertical", | |
| status: "stable", | |
| }, | |
| { | |
| // Normalizes CRLF and standalone CR to LF in execCommand("insertText") | |
| // for consistent newline handling in contenteditable elements. | |
| // See https://crbug.com/41289410 | |
| name: "NormalizeLineEndingsInInsertText", | |
| status: "stable", | |
| }, | |
| { | |
| // Dispatch an error event for the cross-origin violation for the worker | |
| // script URL fetching, instead of throwing error synchronously on worker | |
| // construction. | |
| // See https://github.com/whatwg/html/issues/337 | |
| name: "NoSynchronousThrowForCrossOriginBlockedWorker", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "NotificationConstructor", | |
| // Android won't be able to reliably support non-persistent notifications, the | |
| // intended behavior for which is in flux by itself. | |
| status: {"Android": "", "default": "stable"}, | |
| }, | |
| // NotificationContentImage is not available in all platforms | |
| // The Notification Center on Mac OS X does not support content images. | |
| { | |
| name: "NotificationContentImage", | |
| public: true, | |
| status: {"Mac": "test", "default": "stable"}, | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "Notifications", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "NotificationTriggers", | |
| origin_trial_feature_name: "NotificationTriggers", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Notify selection controller of selection changes even when the new | |
| // selection matches the old selection, keeping the selection state in | |
| // sync. This flag ships in M151 and can be removed in M153. | |
| name: "NotifySelectionControllerOnUnchangedSelection", | |
| status: "stable", | |
| }, | |
| { | |
| name: "NumberInputFullWidthChars", | |
| status: "stable", | |
| }, | |
| { | |
| name: "OfflineAudioContextIncrementalRendering", | |
| status: "stable", | |
| }, | |
| { | |
| name: "OffscreenCanvasGetContextAttributes", | |
| status: "stable", | |
| }, | |
| { | |
| //See crbug.com/512385682 | |
| name: "OffsetMappingReuseFullWidthSpaceFix", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for a fix to offset-path transform invalidation for | |
| // https://crbug.com/463409688. | |
| name: "OffsetPathTransformUpdateFix", | |
| status: "stable", | |
| }, | |
| { | |
| name: "OmitBlurEventOnElementRemoval", | |
| status: "test" | |
| }, | |
| { | |
| // iframes send pagehide/unload/visibilitychange when removed. | |
| // This not spec-compliant, but might have web-compat consequences. | |
| // This flag omits firing those events on element removal. | |
| name: "OmitSubframeDetachmentEventsOnRemoval", | |
| }, | |
| { | |
| name: "OnDeviceWebSpeechAvailable", | |
| status: "stable", | |
| }, | |
| { | |
| name: "OnDeviceWebSpeechQuality", | |
| status: "stable", | |
| }, | |
| { | |
| // Skip layout of all out-of-flow positioned elements if side-effects are | |
| // disabled. See DisableLayoutSideEffectsScope. | |
| name: "OofLayoutRequiresSideEffects", | |
| status: "stable", | |
| }, | |
| { | |
| // The OpaqueRange interface provides a live AbstractRange subtype | |
| // for encapsulated content within <textarea> and <input> elements. | |
| // "This can be removed in M155. crbug.com/421421332 | |
| name: "OpaqueRange", | |
| public: true, | |
| status: "stable", | |
| }, | |
| { | |
| // Restrict popover invoker lookup to the same TreeScope as the element. | |
| // This will be shipped in M142, and it can be removed in M144. | |
| // See https://issues.chromium.org/issues/443031270. | |
| name: "OpenPopoverInvokerRestrictToSameTreeScope", | |
| status: "stable", | |
| }, | |
| { | |
| // Makes option elements match :enabled or :disabled based on whether | |
| // their ancestor select element is disabled. | |
| // https://github.com/w3c/csswg-drafts/issues/13383 | |
| // https://issues.chromium.org/issues/490082172 | |
| // Enabled in M149, modified in M151, safe to remove in M153. | |
| name: "OptionDisablednessCheckAncestors", | |
| status: "stable", | |
| }, | |
| { | |
| name: "OrientationEvent", | |
| status: {"Android": "stable"}, | |
| }, | |
| { | |
| name: "OriginAPI", | |
| status: "stable", | |
| }, | |
| { | |
| name: "OriginIsolationHeader", | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "OriginPolicy", | |
| status: "experimental", | |
| }, | |
| // Define a sample API for testing integration with the Origin Trials | |
| // Framework. The sample API is used in both unit and web tests for the | |
| // Origin Trials Framework. Do not change this flag to stable, as it exists | |
| // solely to generate code used by the sample API implementation. | |
| { | |
| name: "OriginTrialsSampleAPI", | |
| base_feature: "none", | |
| origin_trial_feature_name: "Frobulate", | |
| public: true, | |
| }, | |
| // As above. Do not change this flag to stable, as it exists solely to | |
| // generate code used by the origin trials sample API implementation. | |
| { | |
| name: "OriginTrialsSampleAPIBrowserReadWrite", | |
| base_feature: "none", | |
| origin_trial_feature_name: "FrobulateBrowserReadWrite", | |
| browser_process_read_write_access: true, | |
| }, | |
| // As above. Do not change this flag to stable, as it exists solely to | |
| // generate code used by the origin trials sample API implementation. | |
| // TODO(yashard): Add tests for this feature. | |
| { | |
| name: "OriginTrialsSampleAPIDependent", | |
| depends_on: ["OriginTrialsSampleAPI"], | |
| base_feature: "none", | |
| }, | |
| // As above. Do not change this flag to stable, as it exists solely to | |
| // generate code used by the origin trials sample API implementation. | |
| { | |
| name: "OriginTrialsSampleAPIDeprecation", | |
| base_feature: "none", | |
| origin_trial_feature_name: "FrobulateDeprecation", | |
| origin_trial_type: "deprecation", | |
| origin_trial_allows_insecure: true, | |
| public: true, | |
| }, | |
| // As above. Do not change this flag to stable, as it exists solely to | |
| // generate code used by the origin trials sample API implementation. | |
| { | |
| name: "OriginTrialsSampleAPIExpiryGracePeriod", | |
| base_feature: "none", | |
| origin_trial_feature_name: "FrobulateExpiryGracePeriod", | |
| }, | |
| // As above. Do not change this flag to stable, as it exists solely to | |
| // generate code used by the origin trials sample API implementation. | |
| { | |
| name: "OriginTrialsSampleAPIExpiryGracePeriodThirdParty", | |
| base_feature: "none", | |
| origin_trial_feature_name: "FrobulateExpiryGracePeriodThirdParty", | |
| origin_trial_allows_third_party: true, | |
| }, | |
| // As above. Do not change this flag to stable, as it exists solely to | |
| // generate code used by the origin trials sample API implementation. | |
| { | |
| name: "OriginTrialsSampleAPIImplied", | |
| base_feature: "none", | |
| origin_trial_feature_name: "FrobulateImplied", | |
| implied_by: ["OriginTrialsSampleAPI", "OriginTrialsSampleAPIInvalidOS"], | |
| }, | |
| // As above. Do not change this flag to stable, as it exists solely to | |
| // generate code used by the origin trials sample API implementation. | |
| { | |
| name: "OriginTrialsSampleAPIInvalidOS", | |
| base_feature: "none", | |
| origin_trial_feature_name: "FrobulateInvalidOS", | |
| origin_trial_os: ["invalid"], | |
| }, | |
| // As above. Do not change this flag to stable, as it exists solely to | |
| // generate code used by the origin trials sample API implementation. | |
| { | |
| name: "OriginTrialsSampleAPINavigation", | |
| base_feature: "none", | |
| origin_trial_feature_name: "FrobulateNavigation", | |
| }, | |
| // As above. Do not change this flag to stable, as it exists solely to | |
| // generate code used by the origin trials sample API implementation. | |
| { | |
| name: "OriginTrialsSampleAPIPersistentExpiryGracePeriod", | |
| base_feature: "none", | |
| origin_trial_feature_name: "FrobulatePersistentExpiryGracePeriod", | |
| }, | |
| // As above. Do not change this flag to stable, as it exists solely to | |
| // generate code used by the origin trials sample API implementation. | |
| { | |
| name: "OriginTrialsSampleAPIPersistentFeature", | |
| base_feature: "none", | |
| origin_trial_feature_name: "FrobulatePersistent", | |
| origin_trial_allows_third_party: true, | |
| }, | |
| // As above. Do not change this flag to stable, as it exists solely to | |
| // generate code used by the origin trials sample API implementation. | |
| { | |
| name: "OriginTrialsSampleAPIPersistentInvalidOS", | |
| base_feature: "none", | |
| origin_trial_feature_name: "FrobulatePersistentInvalidOS", | |
| origin_trial_allows_third_party: true, | |
| origin_trial_os: ["invalid"], | |
| }, | |
| // As above. Do not change this flag to stable, as it exists solely to | |
| // generate code used by the origin trials sample API implementation. | |
| { | |
| name: "OriginTrialsSampleAPIPersistentThirdPartyDeprecationFeature", | |
| base_feature: "none", | |
| origin_trial_feature_name: "FrobulatePersistentThirdPartyDeprecation", | |
| origin_trial_allows_third_party: true, | |
| origin_trial_type: "deprecation", | |
| }, | |
| // As above. Do not change this flag to stable, as it exists solely to | |
| // generate code used by the origin trials sample API implementation. | |
| { | |
| name: "OriginTrialsSampleAPIThirdParty", | |
| base_feature: "none", | |
| origin_trial_feature_name: "FrobulateThirdParty", | |
| origin_trial_allows_third_party: true, | |
| }, | |
| { | |
| name: "OutlineDrawAutoStyleZeroWidth", | |
| status: "stable", | |
| }, | |
| { | |
| // Improves the performance of the global overlay:none!important UA style | |
| // rule by replacing the normal UA style rule with other things which | |
| // result in the same behavior. Added in M147, should be safe to remove | |
| // in M150. | |
| name: "OverlayGlobalRuleRemoval", | |
| status: "stable", | |
| }, | |
| { | |
| // Enables the CSS overlay property. When this flag is disabled, top | |
| // layer exit animations will work without the need for using the overlay | |
| // property. | |
| name: "OverlayProperty", | |
| status: "stable", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/5261280285949952 | |
| name: "OverscrollAreas", | |
| status: "experimental", | |
| origin_trial_feature_name: "OverscrollAreas", | |
| depends_on: ["CSSScrollSnapTypePair"], | |
| }, | |
| { | |
| name: "PagePopup", | |
| // Android does not have support for PagePopup | |
| status: {"Android": "", "iOS": "", "default": "stable"}, | |
| }, | |
| { | |
| name: "PagePopupCopyPaste", | |
| depends_on: ["PagePopup"], | |
| status: "stable", | |
| }, | |
| { | |
| name: "PageSwapEvent", | |
| status: "stable", | |
| }, | |
| { | |
| name: "PaintCaretAfterInnerEditorPaint", | |
| status: "stable", | |
| }, | |
| { | |
| name: "PaintHoldingForIframes", | |
| status: "stable", | |
| }, | |
| { | |
| // Makes images generated by the "content" property on a pseudo element | |
| // (which are laid out as anonymous LayoutImages) eligible for Paint | |
| // Timing, attributed to the originating element. See | |
| // https://github.com/w3c/element-timing/issues/74. | |
| name: "PaintTimingContentImagePseudoElements", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "PaintUnderInvalidationChecking", | |
| settable_from_internals: true, | |
| }, | |
| { | |
| name: "PartitionVisitedLinkDatabaseWithSelfLinks", | |
| status: {"iOS": "", "default": "stable"}, | |
| }, | |
| // This is to add an option to enable the Reveal button on password inputs while waiting ::reveal gets standardized. | |
| { | |
| name: "PasswordReveal", | |
| }, | |
| { | |
| name: "PaymentApp", | |
| public: true, | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Lets a payment app set the size of its Payment Handler window through | |
| // the `preferredSize` option of PaymentRequestEvent.openWindow(). | |
| name: "PaymentHandlerStaticCustomSize", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/5198846820352000 | |
| name: "PaymentLinkDetection", | |
| status: "stable", | |
| }, | |
| { | |
| name: "PaymentMethodChangeEvent", | |
| depends_on: ["PaymentRequest"], | |
| status: "stable", | |
| }, | |
| // PaymentRequest is enabled by default on Android | |
| { | |
| name: "PaymentRequest", | |
| public: true, | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "PaymentRequestNonFullyActiveDocumentCheckInvalidStateError", | |
| status: "stable", | |
| }, | |
| { | |
| name: "PerformanceManagerInstrumentation", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| // Sends custom user timing events in subframes to the browser process. | |
| // crbug.com/467177770 for more details. | |
| name: "PerformanceMarkCustomUserTimingFromSubframe", | |
| status: "experimental" | |
| }, | |
| { | |
| // Enables performance.mark('mark_feature_usage'): crbug.com/1517170 | |
| name: "PerformanceMarkFeatureUsage", | |
| status: "experimental" | |
| }, | |
| { | |
| name: "PeriodicBackgroundSync", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "PerMethodCanMakePaymentQuota", | |
| origin_trial_feature_name: "PerMethodCanMakePaymentQuota", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "PermissionsPolicyAPI", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "PermissionsPolicyForSharedWorkers", | |
| status: "experimental", | |
| public: true, | |
| }, | |
| { | |
| name: "PermissionsRequestRevoke", | |
| status: "experimental", | |
| }, | |
| { | |
| // Enables the <persistentwidget> element, which is like an <iframe> but | |
| // can stay alive without reloading when its opener/embedder navigates | |
| // from one same-origin document to another. | |
| // There are checks for this flag in content/browser, which means that | |
| // setting status to "experimental" would not actually enable this | |
| // feature, it has to be "stable" in order for it to actually get enabled | |
| // in the browser process. Manual and automated tests must pass the | |
| // --enable-features=PersistentWidgetAPI command line flag to the | |
| // browser. | |
| name: "PersistentWidgetAPI", | |
| }, | |
| // This is a reverse OT used for a phased deprecation. | |
| // https://crbug.com/918374 | |
| { | |
| name: "PNaCl", | |
| base_feature: "none", | |
| origin_trial_feature_name: "PNaCl", | |
| public: true, | |
| }, | |
| { | |
| // Flag for enabling the pointer lock API on Android | |
| name: "PointerLockOnAndroid", | |
| "status": "stable", | |
| }, | |
| { | |
| // https://crbug.com/404479704 | |
| name: "PointerRawUpdateOnlyInSecureContext", | |
| status: "stable", | |
| }, | |
| { | |
| // Makes showPopover() throw an exception instead of just logging a console | |
| // message when calling showPopover() within another popover hide/show | |
| // operation. https://crbug.com/527495812 | |
| name: "PopoverHintNestedShowException", | |
| status: "stable", | |
| }, | |
| { | |
| // Simplifies the behavior and stacking interactions of popover=hint and | |
| // popover=auto. See https://crbug.com/499019927. | |
| // This shipped in M150, was disabled via Finch, and was re-enabled in | |
| // M151. The behavior was tweaked slightly in M153, and milestones | |
| // now happen twice as quickly, so the flag can be removed in M157. | |
| name: "PopoverHintNewBehavior", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for requiring and consuming transient user activation in | |
| // the browser process when creating a form-control popup widget, | |
| // guarding against compromised renderers opening popups without a user | |
| // gesture. | |
| // See https://crbug.com/506152584. | |
| name: "PopupWidgetRequiresUserActivation", | |
| status: "stable", | |
| }, | |
| { | |
| name: "PositionOutsideTabSpanCheckSiblingNode", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/382679385 which recomputes the | |
| // dimensions of an out-of-flow positioned box when computing dimensions | |
| // changes its scrollbars. | |
| name: "PositionTryFreezeScrollbars", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/448173938 which changes position | |
| // visibility to ignore non-clipping ancestors. | |
| name: "PositionVisibilityIgnoreNonClipAncestors", | |
| status: "stable", | |
| }, | |
| { | |
| // Enables the "singular" versions of two values for the CSS | |
| // `position-visibility` property: `anchor-valid` and `anchor-visible`. | |
| // See crbug.com/526682332. | |
| name: "PositionVisibilitySingularValues", | |
| status: "stable", | |
| }, | |
| { | |
| name: "PotentialPermissionsPolicyReporting", | |
| status: "stable", | |
| }, | |
| { | |
| name: "PreciseMemoryInfo", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| // Adds a web setting to disable CSS ScrollbarColor, ScrollbarWidth, and | |
| // legacy ::-webkit-scrollbar* pseudo-element styling. | |
| { | |
| name: "PreferDefaultScrollbarStyles", | |
| }, | |
| // Prefer not using composited scrolling. Composited scrolling will still | |
| // be used if there are other reasons forcing compositing. For consistency, | |
| // any code calling Settings::GetPreferCompositingToLCDTextEnabled() should | |
| // ensure that this flag overrides the setting. | |
| { | |
| name: "PreferNonCompositedScrolling", | |
| settable_from_internals: true, | |
| }, | |
| { | |
| name: "PreferredAudioOutputDevices", | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| origin_trial_feature_name: "PreferredAudioOutputDevices", | |
| origin_trial_allows_third_party: true, | |
| status: "experimental", | |
| public: true, | |
| }, | |
| { | |
| name: "PrefersReducedData", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "PrefetchAndPrerenderActivationBeacon", | |
| origin_trial_feature_name: "PrefetchAndPrerenderActivationBeacon", | |
| status: "experimental", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| // Used to allow preloading data: URLs with link rel=preload. | |
| // https://crbug.com/348442535 | |
| name: "PreloadLinkRelDataUrls", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for spec-compliant handling of HTML <image> and SVG/MathML | |
| // foreign content in the HTML preload scanner. Ships in M155 and can be | |
| // removed in M158. https://crbug.com/40728681 | |
| name: "PreloadScannerImprovements", | |
| status: "stable", | |
| }, | |
| { | |
| // Used to allow chrome://flags to turn off prerendering. (Without using | |
| // the user-facing preloading settings page to turn off other | |
| // preloading.) See https://crbug.com/1494471. | |
| // | |
| // It also has some feature params defined throughout the codebase. | |
| name: "Prerender2", | |
| status: "stable", | |
| }, | |
| { | |
| // Used to allow prerender cross-origin iframes with an opt-in response | |
| // header. | |
| // https://chromestatus.com/feature/5112398709129216 | |
| // https://crbug.com/440387014 | |
| name: "Prerender2CrossOriginIframes", | |
| origin_trial_feature_name: "Prerender2CrossOriginIframes", | |
| }, | |
| { | |
| // Used to allow prerender activation by form submission. | |
| // See https://crbug.com/346555939. | |
| name: "PrerenderActivationByFormSubmission", | |
| origin_trial_feature_name: "PrerenderActivationByFormSubmission", | |
| status: "stable", | |
| }, | |
| { | |
| name: "PrerenderUntilScript", | |
| public: true, | |
| origin_trial_feature_name: "PrerenderUntilScript", | |
| origin_trial_allows_third_party: true, | |
| status: "experimental", | |
| }, | |
| { | |
| name: "Presentation", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "PreserveHtmlEquivalentTagsInTypingStyle", | |
| status: "stable", | |
| }, | |
| { | |
| // When enabled, a text control's cached selection is preserved while the | |
| // control is not focused or has a post-layout selection restore pending, | |
| // instead of being refreshed from the live DOM selection. Kill switch | |
| // for https://crbug.com/40884623. This feature ships in M154 and can be | |
| // removed in M156. | |
| name: "PreserveUnfocusedSelectionCache", | |
| status: "stable", | |
| }, | |
| { | |
| // When enabled, fixes selection jumping when drag-selecting out of | |
| // a float box boundary. | |
| // See https://crbug.com/41340914 | |
| name: "PreventTextSelectionJump", | |
| status: "stable", | |
| }, | |
| { | |
| name: "PrivateNetworkAccessNullIpAddress", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "PrivateStateTokens", | |
| status: "stable", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| // Always allow trust token issuance (so long as the base::Feature | |
| // is enabled). Used for testing; circumvents a runtime check that, | |
| // if this RuntimeEnabledFeature is not present, guarantees the origin | |
| // trial is enabled. | |
| name: "PrivateStateTokensAlwaysAllowIssuance", | |
| public: true, | |
| status: "test", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "ProfilerAPI", | |
| status: "stable", | |
| }, | |
| { | |
| // When enabled, dedicated workers can use profiler API | |
| name: "ProfilerAPIForDedicatedWorker", | |
| status: "experimental", | |
| }, | |
| // Promisify programmatic scroll methods in Element and Window. | |
| // https://crbug.com/41406914 | |
| { | |
| name: "ProgrammaticScrollPromise", | |
| status: "stable", | |
| }, | |
| { | |
| // Expose `ProgressEvent` in service workers. | |
| // https://xhr.spec.whatwg.org/#interface-progressevent | |
| // https://crbug.com/332663431 | |
| name: "ProgressEventInServiceWorker", | |
| status: "stable", | |
| }, | |
| { | |
| // Propagate overscroll-behavior from the root element rather than the | |
| // body element. crbug.com/41453796 | |
| name: "PropagateOverscrollBehaviorFromRoot", | |
| status: "stable" | |
| }, | |
| { | |
| // Allowing pseudo-elements to have focus. | |
| name: "PseudoElementsFocusable", | |
| status: "stable", | |
| }, | |
| { | |
| // Support hit-testing for ::after, ::before, ::marker | |
| // (e.g. for CSSPseudoElement). | |
| name: "PseudoElementsHitTestable", | |
| status: "stable", | |
| }, | |
| { | |
| // Support :hover on ::after, ::before, ::marker. | |
| name: "PseudoElementsHoverable", | |
| depends_on: ["PseudoElementsHitTestable"], | |
| status: "experimental", | |
| }, | |
| { | |
| name: "PushMessageDataBytes", | |
| depends_on: ["PushMessaging"], | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "PushMessaging", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "PushMessagingSubscriptionChange", | |
| public: true, | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| // ChromeStatus: https://chromestatus.com/feature/6194847180128256 | |
| name: "QuotaExceededErrorUpdate", | |
| status: "stable", | |
| }, | |
| { | |
| // Gives a natively painted input[type=radio] a 50% border radius so that | |
| // box-shadow and outline follow the circle the theme paints instead of | |
| // the square border box. See crbug.com/40877887. | |
| name: "RadioButtonCircularBorderRadius", | |
| status: "stable", | |
| }, | |
| { | |
| // Sets Range boundaries relative to a sibling node lazily, avoiding the | |
| // O(n) Node::NodeIndex()/NodeTraversal::ChildAt walks so that selectNode() | |
| // is O(1) instead of O(n). See crbug.com/515812864. | |
| name: "RangeBoundaryFastPath", | |
| status: "stable", | |
| }, | |
| { | |
| name: "RasterInducingScroll", | |
| status: "stable", | |
| }, | |
| { | |
| // Used as a kill switch in case the rate limiting causes issues. | |
| name: "RateLimitPointerLockRequests", | |
| status: "stable", | |
| }, | |
| { | |
| // Enables support for a 'min' option in ReadableStream BYOBReader.read(), | |
| // allowing callers to specify the minimum number of bytes to be read into | |
| // the buffer before resolving the read request. | |
| // https://chromestatus.com/feature/6396991665602560 | |
| name: "ReadableStreamBYOBReaderReadMinOption", | |
| status: "stable", | |
| }, | |
| { | |
| // getType() on a ClipboardItem triggers the | |
| // clipboard read operation, implementing lazy loading for clipboard data. | |
| // Chrome status entry - https://chromestatus.com/feature/5203433409871872 | |
| name: "ReadClipboardDataOnClipboardItemGetType", | |
| status: "stable", | |
| }, | |
| { | |
| // Enables correct reading-flow ordering when slots are involved. | |
| // This will be shipped in M148, and it can be removed in M150. | |
| // See https://issues.chromium.org/issues/452981723. | |
| name: "ReadingFlowWithSlots", | |
| status: "stable", | |
| }, | |
| { | |
| // Enables caret visibility and keyboard selection/navigation for | |
| // readonly text controls (input and textarea). | |
| // https://issues.chromium.org/issues/40801366 | |
| name: "ReadOnlyTextControlSelection", | |
| status: "stable", | |
| }, | |
| { | |
| // Shipping in M148, revised in M151, so should be removed around M153. | |
| name: "RecheckParentDuringNodeVectorInsertion", | |
| status: "stable", | |
| }, | |
| // If enabled, the minor version of the User-Agent string will be reduced. | |
| // This User-Agent Reduction feature has been enabled starting from M101, | |
| // but we still keep this flag for future phase tests. | |
| { | |
| name: "ReduceUserAgentMinorVersion", | |
| status: "stable", | |
| }, | |
| { | |
| public: true, | |
| name: "RegionCapture", | |
| status: {"Android": "experimental", "iOS": "", "default": "stable"}, | |
| }, | |
| { | |
| name: "RelatedWebsitePartitionAPI", | |
| base_feature: "none", | |
| // No status because this blink runtime feature doesn't work by itself. | |
| // It's controlled by the corresponding Chromium feature, | |
| // net::features::kRelatedWebsitePartitionAPI, which needs to be | |
| // enabled to make the whole feature work. | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/376516545. | |
| // Releases paint holding (deferred compositor commits) early for pages | |
| // that finish parsing and produce a first paint but never reach First | |
| // Contentful Paint (e.g. background-color only pages). | |
| name: "ReleasePaintHoldingWithoutContentfulPaint", | |
| status: "stable", | |
| }, | |
| { | |
| name: "RelOpenerBcgDependencyHint", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "RemotePlayback", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "RemotePlaybackBackend", | |
| settable_from_internals: true, | |
| status: { | |
| "Android": "stable", | |
| "Win": "stable", | |
| "Mac": "stable", | |
| "Linux": "stable", | |
| "default": "experimental"}, | |
| }, | |
| { | |
| // This feature acts as a kill switch for ISO-2022-JP auto-detection. | |
| // This will be shipped in M139, and it can be removed in M141. | |
| // See https://chromestatus.com/feature/6576566521561088. | |
| name: "RemoveCharsetAutoDetectionForISO2022JP", | |
| status: "stable", | |
| }, | |
| { | |
| // Optimize ReplaceChildren() to use RemoveChildren() for batch removal | |
| // instead of looping RemoveChild(). This batches style invalidations | |
| // improving performance. | |
| name: "RemoveChildrenInReplaceChildren", | |
| status: "stable", | |
| }, | |
| // After paste operation removes the placeholder <br> tag | |
| // that gets inserted in contenteditable as placeholder for newline | |
| { | |
| name: "RemoveCollapsedPlaceholderForContentEditable", | |
| status: "stable" | |
| }, | |
| { | |
| name: "RemoveDanglingMarkupInTarget", | |
| status: "stable", | |
| }, | |
| { | |
| name: "RemoveDataUrlInSvgUse", | |
| status: "stable", | |
| }, | |
| { | |
| // Remove non-allowlisted event interfaces from document.createEvent(). | |
| // This was added in M148 and can be removed after M150. | |
| // https://chromestatus.com/feature/5095987863486464 | |
| // https://issues.chromium.org/issues/41228793 | |
| name: "RemoveNonAllowlistedCreateEvent", | |
| status: "stable", | |
| }, | |
| { | |
| // See https://issues.chromium.org/issues/40779139 | |
| name: "RemoveScrollNodeWorkaround", | |
| status: "stable", | |
| }, | |
| { | |
| // See https://issues.chromium.org/issues/41311101 | |
| name: "RemoveVisibleSelectionInDOMSelection", | |
| status: "test", | |
| }, | |
| { | |
| // The renderpriority attribute feature. | |
| // https://github.com/WICG/display-locking/blob/main/explainers/update-rendering.md | |
| name: "RenderPriorityAttribute", | |
| }, | |
| { | |
| // When enabled, avoids calling RemoveChildren() in | |
| // ReplaceChildrenWithFragment() if the container is already empty. | |
| name: "ReplaceChildrenWithFragmentFastPath", | |
| status: "stable", | |
| }, | |
| { | |
| // https://crbug.com/567626030 | |
| name: "ReplaceCompositionActualInsertedLength", | |
| status: "test", | |
| }, | |
| { | |
| // Kill switch for painting non-SVG replaced normal-flow stacking | |
| // contexts inline with their siblings. | |
| // This was set to experimental due to crbug.com/532229489. | |
| name: "ReplacedNormalFlowStackingInlinePaint", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "ReportFirstFrameTimeAsRenderTime", | |
| status: "test", | |
| }, | |
| { | |
| name: "ReportLayoutShiftRectsInCssPixels", | |
| status: "stable", | |
| }, | |
| { | |
| name: "RequestIsReloadNavigation", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ResourceTimingInitiator", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "ResourceTimingUseCORSForBodySizes", | |
| status: "test", | |
| }, | |
| { | |
| name: "RespectOverscrollBehaviorForScrollBubbling", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/570579609. | |
| name: "ResponsiveIframesShrink", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/565383556. | |
| name: "ResponsiveIframesSingleAxisIcb", | |
| status: "stable", | |
| }, | |
| { | |
| name: "RestrictGamepadAccess", | |
| public: true, | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "RestrictOwnAudio", | |
| status: "stable", | |
| }, | |
| { | |
| // If enabled, makes the root scrollbars' foreground elements follow the | |
| // browser | |
| name: "RootScrollbarFollowsBrowserTheme", | |
| status: {"Linux": "test", "Win": "test"}, | |
| }, | |
| // Route matching, @route CSS rule. | |
| // https://chromestatus.com/feature/4771962874363904 | |
| { | |
| name: "RouteMatching", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "RtcAlwaysNegotiateDataChannels", | |
| status: "stable", | |
| }, | |
| { | |
| name: "RtcAudioJitterBufferMaxPackets", | |
| origin_trial_feature_name: "RtcAudioJitterBufferMaxPackets", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Non-standard RTCConfiguration.iceTransports alias. Off by default | |
| // (alias removed). Enable via Finch to restore if sites break. | |
| // https://crbug.com/488071544 | |
| name: "RTCConfigurationIceTransports", | |
| }, | |
| { | |
| name: "RTCDataChannelPriority", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "RTCDiagnosticLogging", | |
| origin_trial_feature_name: "RTCDiagnosticLogging", | |
| status: {"Android": "", "default": "stable"}, | |
| }, | |
| { | |
| name: "RTCEncodedAudioFrameConstructor", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "RTCEncodedFrameAudioLevel", | |
| status: "stable", | |
| }, | |
| { | |
| name: "RTCEncodedFrameSetMetadata", | |
| status: "experimental", | |
| origin_trial_feature_name: "RTCEncodedFrameSetMetadata", | |
| }, | |
| { | |
| name: "RTCEncodedFrameTimestamps", | |
| status: "stable", | |
| }, | |
| { | |
| name: "RTCEncodedSource", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "RTCEncodedVideoFrameAdditionalMetadata", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "RTCEncodedVideoFrameConstructor", | |
| status: "experimental", | |
| }, | |
| // Enables the use of jitterBufferTarget attribute in WebRTC. | |
| // Spec: https://w3c.github.io/webrtc-extensions/#dom-rtcrtpreceiver-jitterbuffertarget | |
| { | |
| name: "RTCJitterBufferTarget", | |
| status: "stable", | |
| }, | |
| // Legacy callback-based getStats() has limited availability unless this | |
| // Deprecation Trial is enabled. | |
| // TODO(https://crbug.com/822696): Remove when origin trial ends. | |
| { | |
| name: "RTCLegacyCallbackBasedGetStats", | |
| origin_trial_feature_name: "RTCLegacyCallbackBasedGetStats", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "RTCLegacyDiagnosticLogging", | |
| origin_trial_feature_name: "RTCDiagnosticLogging", | |
| status: "experimental", | |
| }, | |
| // Enables the use of |RTCRtpEncodingParameters.codec| | |
| { | |
| name: "RTCRtpEncodingParametersCodec", | |
| status: "stable", | |
| }, | |
| { | |
| name: "RtcRtpHeaderEncryptionPolicy", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "RTCRtpScaleResolutionDownTo", | |
| status: "stable", | |
| }, | |
| { | |
| name: "RTCRtpScriptTransform", | |
| status: "stable", | |
| }, | |
| { | |
| name: "RTCRtpTransport", | |
| status: "test", | |
| }, | |
| { | |
| name: "RTCStatsRelativePacketArrivalDelay", | |
| origin_trial_feature_name: "RTCStatsRelativePacketArrivalDelay", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| // Enables the use of SVC scalability mode in WebRTC. | |
| // Spec: https://w3c.github.io/webrtc-svc/ | |
| { | |
| name: "RTCSvcScalabilityMode", | |
| status: "stable", | |
| }, | |
| { | |
| // Places ruby annotations clear of the base's underline or overline. | |
| // https://drafts.csswg.org/css-ruby-1/#ruby-text-decoration | |
| name: "RubyTextDecorationSpacing", | |
| status: "stable", | |
| }, | |
| { | |
| // Runs a microtask checkpoint before prepare script in | |
| // XML Parser. This was added in M148 and can be removed | |
| // after M150. | |
| // https://issues.chromium.org/issues/439639184 | |
| name: "RunMicrotaskBeforeXmlScript", | |
| status: "stable", | |
| }, | |
| { | |
| // HTML event loop invoking 'Run snapshot post-layout state steps' from | |
| // the CSSOM View per spec proposal. | |
| name: "RunSnapshotPostLayoutStateSteps", | |
| status: "stable", | |
| }, | |
| { | |
| // https://issues.chromium.org/issues/429490608 | |
| name: "SanitizeIDNEmailFormInput", | |
| status: "stable", | |
| }, | |
| { | |
| // Spec: https://wicg.github.io/sanitizer-api/ | |
| // Tracking bug: crbug.com/356601280 | |
| name: "SanitizerAPI", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SanitizeWorkerErrorPropagation", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ScopedViewTransitionSizeContainment", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ScoreLineBreakerAbort", | |
| status: "stable", | |
| }, | |
| { | |
| // https://github.com/w3c/window-management/issues/149 | |
| name: "ScreenDetailedHdrHeadroom", | |
| status: "experimental", | |
| }, | |
| { | |
| // crbug.com/406917902 | |
| name: "ScriptBasedOnUnicodeBlock", | |
| status: "stable", | |
| }, | |
| // WebSpeech API with both speech recognition and synthesis functionality | |
| // is not fully enabled on all platforms. | |
| { | |
| name: "ScriptedSpeechRecognition", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "ScriptedSpeechSynthesis", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Use parent element for text node to compute relative offset when | |
| // serializing scroll anchor to ensure consistency with | |
| // ComputeUniqueSelector() | |
| name: "ScrollAnchorSerializationUseParentForTextNode", | |
| status: "stable", | |
| }, | |
| { | |
| // https://crbug.com/479472367 | |
| name: "ScrollAxisLock", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ScrollbarColor", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ScrollbarGutterBugFix", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ScrollbarWidth", | |
| status: "stable", | |
| }, | |
| { | |
| // https://github.com/w3c/csswg-drafts/issues/9576 | |
| name: "ScrollIntoViewAlignAuto", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "ScrollIntoViewNearest", | |
| status: "stable" | |
| }, | |
| { | |
| // Prevents scrollIntoView() from creating the initial sequential focus | |
| // navigation starting point before one has been established. | |
| // https://crbug.com/537801211 | |
| name: "ScrollIntoViewNoInitialFocusNavigationStartingPoint", | |
| status: "stable", | |
| }, | |
| // TODO(355460994): Remove after M129. | |
| // scroll into root frame didn't take scrollbar and borders into account, | |
| // while this is fixed, to avoid any web compat issues we have this killswitch. | |
| { | |
| name: "ScrollIntoViewRootFrameViewportBugFix", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ScrollPerformanceTiming", | |
| status: "test", | |
| }, | |
| { | |
| // Separate flag for crbug.com/1426506 (getCurrentTime API change) which | |
| // is expected to land after the initial launch of ScrollTimeline. | |
| name: "ScrollTimelineCurrentTime", | |
| status: "experimental" | |
| }, | |
| { | |
| // https://github.com/w3c/csswg-drafts/issues/9367#issuecomment-1854280461 | |
| name: "ScrollTimelineNamedRangeScroll", | |
| status: "stable", | |
| }, | |
| // Implements documentElement.scrollTop/Left and bodyElement.scrollTop/Left | |
| // as per the spec, matching other Web engines. | |
| // | |
| // This flag can't be removed until the Android min SDK version is 28 | |
| // (i.e., 'P') or later. See AWSettings.setScrollTopLeftInteropEnabled | |
| // and its caller. | |
| { | |
| name: "ScrollTopLeftInterop", | |
| status: "stable", | |
| }, | |
| // Limits the number of scroll-to-text-fragment directives parsed per URL. | |
| { | |
| name: "ScrollToTextFragmentDirectiveLimit", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ScrollVisibilityHiddenScrollers", | |
| status: "stable", | |
| }, | |
| // Allows CSS styling of browser search results. | |
| // https://issues.chromium.org/issues/339298411 | |
| // https://chromestatus.com/feature/5195073796177920 | |
| { | |
| name: "SearchTextHighlightPseudo", | |
| status: "stable", | |
| }, | |
| // SecurePaymentConfirmation has shipped on some platforms, but its | |
| // availability is controlled by the browser process (via the | |
| // SecurePaymentConfirmationBrowser feature), as it requires browser | |
| // support to function. See //content/public/common/content_features.cc | |
| // | |
| // The status is set to 'test' here to enable some WPT tests that only | |
| // require blink-side support to function. | |
| { | |
| name: "SecurePaymentConfirmation", | |
| public: true, | |
| status: "test", | |
| base_feature: "none", | |
| }, | |
| // SecurePaymentConfirmationAvailabilityAPI needs to be kept as a runtime | |
| // flag in order to disable the API in WebView. | |
| { | |
| name: "SecurePaymentConfirmationAvailabilityAPI", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SecurePaymentConfirmationCapabilities", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SecurePaymentConfirmationDebug", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| name: "SecurePaymentConfirmationExtensionsDisallowForThirdParties", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SecurePaymentConfirmationOptOut", | |
| origin_trial_feature_name: "SecurePaymentConfirmationOptOut", | |
| origin_trial_allows_third_party: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Make select popup anchor stay within web contents to prevent | |
| // overlapping browser UI. | |
| // TODO(https://issues.chromium.org/issues/511869411): Remove this flag | |
| // after it has been shipped for long enough. | |
| // Shipped in M150, changed slightly in M151, disabled in M151-M152, | |
| // re-enabled in M153, safe to remove in M155. | |
| name: "SelectAnchorInViewport", | |
| status: "stable", | |
| }, | |
| { | |
| // SelectAudioOutput API | |
| // https://chromestatus.com/feature/5164535504437248 | |
| name: "SelectAudioOutput", | |
| status: { | |
| "Android": "", | |
| "default": "test", | |
| }, | |
| }, | |
| { | |
| // The selectedcontentelement attribute is for connecting select elements | |
| // to arbitrary <selectedcontent> elements. | |
| // https://github.com/openui/open-ui/issues/1063 | |
| // https://github.com/whatwg/html/issues/12227 | |
| name: "SelectedcontentelementAttribute", | |
| status: "experimental", | |
| }, | |
| { | |
| // Makes the <selectedcontent> element work in <select multiple> by | |
| // cloning the contents for each option which is selected into the | |
| // <selectedcontent> element. | |
| // https://issues.chromium.org/issues/483769482 | |
| name: "SelectedcontentMultiple", | |
| status: "experimental", | |
| depends_on: ["CustomizableSelectMultiplePopup"], | |
| }, | |
| { | |
| // Makes minor tweaks to edge cases with the <selectedcontent> element. | |
| // The prior set of spec-driven changes to the selectedcontent element | |
| // were called "SelectedcontentSpec", so this one is called | |
| // "SelectedcontentSpec2". | |
| // https://github.com/whatwg/html/pull/12263 | |
| // Enabled in M156, can be removed in M159. | |
| name: "SelectedcontentSpec2", | |
| status: "stable", | |
| }, | |
| { | |
| // See https://crbug.com/40664519 | |
| // Disabled due to UI freeze issues, see https://crbug.com/448833953. | |
| name: "SelectionAndFocusedVisiblePositionMatch", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "SelectionCollapsedDirectionNone", | |
| status: "stable", | |
| }, | |
| { | |
| // Allows a selection to extend into the light-DOM content assigned to a | |
| // <slot>, e.g. the content of an open <details>, instead of clamping the | |
| // focus at the slot's shadow host in EditingBoundaryAdjuster. | |
| // See https://crbug.com/477613569 | |
| name: "SelectionEditingBoundarySlottedContent", | |
| status: "stable", | |
| }, | |
| { | |
| // Fixes selection focus affinity at soft wrap boundaries. When the focus | |
| // of a range selection is at a soft wrap boundary (a DOM offset shared by | |
| // two visual lines), this ensures the correct affinity is used based on | |
| // the selection direction. | |
| // See https://crbug.com/40980028 | |
| name: "SelectionFocusAffinity", | |
| status: "stable", | |
| }, | |
| { | |
| // Killswitch M141. | |
| name: "SelectionHandleWithBottomClipped", | |
| status: "stable", | |
| }, | |
| { | |
| // https://issues.chromium.org/issues/40502558 | |
| name: "SelectionRemoveRangeNotFoundError", | |
| status: "stable", | |
| }, | |
| { | |
| // https://issues.chromium.org/issues/40502558 | |
| name: "SelectionSetBaseAndExtentNonNullNode", | |
| status: "experimental", | |
| settable_from_internals: true, | |
| }, | |
| { | |
| // See https://chromestatus.com/feature/4811835974615040 | |
| name: "SelectivePermissionsIntervention", | |
| status: "stable", | |
| }, | |
| { | |
| // Opens the <select> picker when clicking an associated <label> element. | |
| // https://issues.chromium.org/issues/565410880 | |
| // Enabled in M157 and can be removed in M160. | |
| name: "SelectLabelClickOpensPicker", | |
| status: "stable", | |
| depends_on: ["CleanUpActivationBehavior"], | |
| }, | |
| { | |
| // This sets the background-color of the body inside of the | |
| // appearance:auto select popup for windows/linux to Canvas to avoid a | |
| // situation with unreadable text in the popup. | |
| // https://issues.chromium.org/issues/468205016 | |
| // Enabled in M157, safe to remove in M161. | |
| name: "SelectPopupBackground", | |
| status: "stable", | |
| }, | |
| { | |
| // Removes the forced overflow:hidden rules on the select element's | |
| // InnerElement unless the author specifies text-overflow:ellipsis. May | |
| // cause text to overlap with the dropdown indicator. | |
| // https://issues.chromium.org/issues/40805967 | |
| name: "SelectRemoveOverflowHidden", | |
| status: "stable", | |
| }, | |
| { | |
| // Makes <select> discover its options, optgroups, separators, and | |
| // customizable trigger button through the flat tree. | |
| // See https://chromestatus.com/feature/5127427618635776 | |
| name: "SelectUsesFlatTree", | |
| }, | |
| { | |
| name: "SendBeaconThrowForBlobWithNonSimpleType", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "SendEarlyLastBeginMainFrame", | |
| status: "stable", | |
| }, | |
| { | |
| // SlotChange signal is sent after node insertion is complete, | |
| // ensuring that slot fallback content is handled correctly. | |
| // This was added in M145 and can be removed after M147. | |
| // https://issues.chromium.org/issues/40150299 | |
| name: "SendSlotChangeSignalAfterNodeInserted", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SensorExtraClasses", | |
| public: true, | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Separate defer and module script execution into individual tasks | |
| // to comply with HTML spec requirement to "spin the event loop" between | |
| // each script execution. This prevents long tasks and improves responsiveness. | |
| // https://crbug.com/40894694 | |
| name: "SeparateDeferModuleScriptTasks", | |
| status: "stable", | |
| }, | |
| { | |
| // Exposes the Focusable interface, DocumentOrShadowRoot.activeFocusable, | |
| // CSSPseudoElement.focus(), and sequential focus navigation primitives. | |
| // https://crbug.com/565786176 | |
| name: "SequentialFocusPrimitives", | |
| depends_on: ["CSSPseudoElementInterface"], | |
| status: "test", | |
| }, | |
| { | |
| // Adds the `exposedShadowRoots` option to the Focusable constructors (and | |
| // the constructor that takes a Focusable), which exposes focusable items | |
| // inside those shadow trees. | |
| // https://crbug.com/565786176 | |
| name: "SequentialFocusPrimitivesShadowRoots", | |
| depends_on: ["SequentialFocusPrimitives"], | |
| status: "test", | |
| }, | |
| { | |
| name: "Serial", | |
| status: "stable", | |
| base_feature: "WebSerialAPI", | |
| }, | |
| { | |
| // Serialize invalid selector text in the forgiving selector list. | |
| // https://github.com/w3c/csswg-drafts/issues/8356 | |
| name: "SerializeInvalidSelectorsInForgivingSelectorList", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "SerializeViewTransitionStateInSPA", | |
| }, | |
| { | |
| name: "SerialPortConnected", | |
| status: {"Android": "", "default": "experimental"}, | |
| base_feature: "none", | |
| }, | |
| { | |
| // Support for Service Worker background sync APIs in Dedicated Workers. | |
| // See https://chromestatus.com/feature/6497653025931264 | |
| // See https://issues.chromium.org/issues/40364838 | |
| name: "ServiceWorkerBackgroundSyncInDedicatedWorker", | |
| depends_on: ["ServiceWorkerInDedicatedWorker"], | |
| }, | |
| { | |
| name: "ServiceWorkerClientLifecycleState", | |
| status: "experimental", | |
| }, | |
| { | |
| // V8 Code Cache for resource requests passing through Service Worker. | |
| name: "ServiceWorkerCodeCache", | |
| status: "stable", | |
| }, | |
| { | |
| // Enforces SHA-256 source hash verification for V8 code caches on | |
| // scripts fetched via Service Worker (crbug.com/547815507). | |
| name: "ServiceWorkerCodeCacheHashing", | |
| status: "stable", | |
| }, | |
| { | |
| // Support for Service Worker APIs in Dedicated Workers. | |
| // See https://chromestatus.com/feature/6497653025931264 | |
| // See https://issues.chromium.org/issues/40364838 | |
| name: "ServiceWorkerInDedicatedWorker", | |
| }, | |
| { | |
| // Killswitch for crbug.com/552757015. | |
| name: "ServiceWorkerScriptEncoding", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ServiceWorkerStaticRouterTimingInfo", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SetHTMLCanRunScripts", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SetSequentialFocusStartingPoint", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "SetShape", | |
| status: {"ChromeOS": "experimental", "default": ""}, | |
| browser_process_read_write_access: true, | |
| }, | |
| // https://crbug.com/448174611 | |
| { | |
| name: "ShadowRootAdoptedStyleSheet", | |
| implied_by: ["DeclarativeCSSModules"], | |
| origin_trial_feature_name: "DeclarativeCSSModules", | |
| }, | |
| { | |
| // Only allow attachShadow() on elements with the HTML namespace. | |
| // See crbug.com/521896365 | |
| name: "ShadowRootNamespaceCheck", | |
| }, | |
| { | |
| // Reference Target allows IDREF attributes to refer inside Shadow DOM. | |
| // crbug.com/346835896 | |
| name: "ShadowRootReferenceTarget", | |
| status: "stable", | |
| origin_trial_feature_name: "ShadowRootReferenceTarget" | |
| }, | |
| { | |
| // If enabled, Reference Target will support aria-owns. | |
| // https://github.com/WICG/webcomponents/issues/1091 | |
| name: "ShadowRootReferenceTargetAriaOwns", | |
| }, | |
| { | |
| // Lets declarative shadow roots opt into manual slot assignment. | |
| // crbug.com/493315747 | |
| name: "ShadowRootSlotAssignment", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SharedArrayBuffer", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| name: "SharedArrayBufferUnrestrictedAccessAllowed", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| name: "SharedWorker", | |
| browser_process_read_write_access: true, | |
| public: true, | |
| status: "stable", | |
| }, | |
| { | |
| // If enabled, SharedWorker supports extendedLifetime | |
| // https://github.com/whatwg/html/issues/10997 | |
| // https://issues.chromium.org/issues/400473072 | |
| name: "SharedWorkerExtendedLifetime", | |
| status: "stable", | |
| origin_trial_feature_name: "SharedWorkerExtendedLifetime", | |
| origin_trial_allows_third_party: true, | |
| }, | |
| { | |
| name: "SideRelativeBackgroundPosition", | |
| status: "stable", | |
| public: true, | |
| }, | |
| { | |
| name: "SignatureBasedInlineIntegrity", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "SingleAxisScrollContainers", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SingleAxisScrollContainersForScrollSnap", | |
| depends_on: ["SingleAxisScrollContainers"], | |
| status: "experimental", | |
| }, | |
| { | |
| name: "SkipAd", | |
| depends_on: ["MediaSession"], | |
| status: "stable", | |
| }, | |
| { | |
| // If enabled, only call ResourceLoadObserver callbacks if the DevTools | |
| // panel is open. | |
| name: "SkipCallbacksWhenDevToolsNotOpen", | |
| status: "experimental", | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/569098933. Doesn't composite a | |
| // backdrop-filter animation whose value can't change (e.g. the view | |
| // transition group animation from `none` to the underlying `none`), | |
| // which would require render surfaces for the animating element and for | |
| // its backdrop root. The animation still makes the element a stacking | |
| // context. | |
| name: "SkipCompositingStaticBackdropFilterAnimation", | |
| status: "stable", | |
| }, | |
| { | |
| // Improves performance of event dispatching by skipping the capture | |
| // phase if there are no capture listeners registered on the page. | |
| name: "SkipEventCapture", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SkipHtmlInterchangeInForeignContent", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SkipInitialForcedScrollbar", | |
| status: "test", | |
| }, | |
| { | |
| // Kill switch for crbug.com/41254682: skips paint invalidation for | |
| // paint-only style changes (e.g. animation frames) on objects that were | |
| // and stay visibility:hidden. | |
| name: "SkipPaintInvalidationWhileStayingInvisible", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/517761566 | |
| name: "SkipStaleUndoStepsInIdleSpellCheck", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/569098933. Doesn't tick an animation | |
| // on the main thread if none of its values can change while it's in play | |
| // (e.g. the view transition `mix-blend-mode: plus-lighter` animation), | |
| // even if it can't run on the compositor for another reason, such as | |
| // affecting an !important property. | |
| name: "SkipTickingStaticAnimations", | |
| status: "stable", | |
| }, | |
| { | |
| // Skips the browser touch event filter, ensuring that events that reach | |
| // the queue and would otherwise be filtered out will instead be passed | |
| // onto the renderer compositor process as long as the page hasn't timed | |
| // out. If skip_filtering_process is browser_and_renderer, also skip the | |
| // renderer cc touch event filter, ensuring that events will be passed | |
| // onto the renderer main thread. | |
| name: "SkipTouchEventFilter", | |
| status: "stable", | |
| }, | |
| { | |
| // See crbug.com/446113738. | |
| name: "SkipUnselectableElementsInParagraphBoundary", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SmallerViewportUnits", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SmartCard", | |
| status: { | |
| "Android": "", | |
| "ChromeOS": "stable", | |
| "default": "test", | |
| }, | |
| }, | |
| { | |
| // https://chromestatus.com/feature/5141169477648384 | |
| name: "SmartCardContextRelease", | |
| depends_on: ["SmartCard"], | |
| status: "test", | |
| }, | |
| { | |
| name: "SmartZoom", | |
| base_feature: "none", | |
| public: true, | |
| status: {"Android": "test"}, | |
| }, | |
| { | |
| // Snapshot scroll-timelines post layout only. See | |
| // RunSnapshotPostLayoutStateSteps flag. | |
| name: "SnapshotScrollTimelinesPostLayout", | |
| depends_on: ["RunSnapshotPostLayoutStateSteps"], | |
| }, | |
| { | |
| name: "SortedLayoutShiftSourcesByImpactArea", | |
| status: "stable", | |
| }, | |
| { | |
| // Source-specific multicast support in the Direct Sockets API. Not | |
| // depends_on: ["DirectSockets"] — DirectSockets is enabled per-context | |
| // (isolated contexts) rather than via the static flag, so a static | |
| // dependency would keep this feature off everywhere it matters. Actual | |
| // exposure is gated by MulticastController's Exposed() clause. | |
| // https://chromestatus.com/feature/6208452397498368 | |
| name: "SourceSpecificMulticastInDirectSockets", | |
| status: "stable", | |
| }, | |
| { | |
| // Whether spatial navigation should use cursor inheritance to exclude | |
| // nodes where cursor is inherited. Kill-switch that can be remove once | |
| // the change goes through a stable release. | |
| name: "SpatNavUsesCursorInheritance", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SpeakerSelection", | |
| status: "experimental", | |
| }, | |
| { | |
| // Enables spec-compliant suffix matching for XML MIME types | |
| // (e.g., text/html+xml) by allowing *+xml patterns. | |
| // https://mimesniff.spec.whatwg.org/#xml-mime-type | |
| // https://crbug.com/362282752 | |
| name: "SpecCompliantXmlMimeTypes", | |
| status: "experimental", | |
| }, | |
| { | |
| // Exposes speculation measurement data (preloads, prefetches, prerenders) | |
| // on performance.speculations. | |
| name: "SpeculationMeasurement", | |
| origin_trial_feature_name: "SpeculationMeasurement", | |
| origin_trial_allows_third_party: true, | |
| status: "experimental", | |
| }, | |
| { | |
| // Exposes author controls for the mobile "moderate" eagerness viewport | |
| // heuristic via a ruleset-level "moderate_viewport_heuristics" key in | |
| // speculation rules. Android-only, since the heuristic only runs on | |
| // Android. Third-party tokens are allowed so that scripts injecting | |
| // speculation rules cross-origin (e.g. performance libraries) can opt in. | |
| // https://groups.google.com/a/chromium.org/g/blink-dev/c/YYBd-eksiE8 | |
| name: "SpeculationRulesModerateViewportHeuristicsControl", | |
| origin_trial_feature_name: "SpeculationRulesModerateViewportHeuristicsControl", | |
| origin_trial_allows_third_party: true, | |
| origin_trial_os: ["Android"], | |
| status: "experimental", | |
| }, | |
| { | |
| name: "SpellCheckChunking", | |
| status: {"Android": "stable"}, | |
| }, | |
| { | |
| // API for accessing the Custom Dictionary for spell checking purpose. | |
| // https://chromestatus.com/feature/6185007701557248 | |
| name: "SpellCheckCustomDictionaryAPI", | |
| status: "experimental", | |
| public: true, | |
| }, | |
| { | |
| // Splits a qualified name on its first colon, per the DOM "validate and | |
| // extract" algorithm, so any later colons are part of the local name. | |
| // See https://crbug.com/490251709 | |
| name: "SplitQualifiedNameOnFirstColon", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "SplitTextNotCleanupDummySpans", | |
| status: "stable", | |
| }, | |
| // Kill switch for change to unify image-set and srcset selection logic. | |
| { | |
| name: "SrcsetSelectionMatchesImageSet", | |
| status: "stable", | |
| }, | |
| // Supports two-dimensional source sizes ("contain"/"cover" <length> | |
| // <length>) in sizes, takes the srcset 'h' descriptor and the width/height | |
| // attributes into account during source selection, and makes auto-sizes | |
| // take the content box height and object-fit into account. | |
| // https://github.com/whatwg/html/pull/13053 | |
| { | |
| name: "SrcsetTwoDimensionalSizes", | |
| status: "experimental", | |
| }, | |
| // Used as argument in attribute of stable-release functions/interfaces | |
| // where a runtime-enabled feature name is required for correct IDL syntax. | |
| // This is a global flag; do not change its status. | |
| { | |
| name: "StableBlinkFeatures", | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Kill switch for falsifying IsStacked() for non-stacked | |
| // stacking contexts. https://crbug.com/40208685 | |
| name: "StackingContextIsNotStacked", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for sending ImageChanged() to newly added | |
| // observers while a stale cached image is revalidating. | |
| // https://crbug.com/40757070 | |
| name: "StaleImageNaturalSizeDuringRevalidation", | |
| status: "stable", | |
| }, | |
| { | |
| // Without this flag, an IntersectionObserver target inside a | |
| // render-throttled iframe will continue to compute its intersection state | |
| // as long as `NeedsLayout()` is `false` for its containing document. This | |
| // is a faulty mechanism, as `NeedsLayout()` does not reliably indicate | |
| // whether a document's rendering is out of date. When the flag is enabled | |
| // all IntersectionObserver targets inside an iframe that becomes | |
| // throttled will promptly generate a "not intersecting" notification. | |
| // This is a web-visible change in behavior (though it does not reveal any | |
| // new information), so it's hidden behind a flag to provide a kill switch | |
| // in the event of breakage. | |
| name: "StaleIntersectionGeometryForThrottledFrames", | |
| status: "stable", | |
| }, | |
| { | |
| // See https://github.com/w3c/csswg-drafts/issues/9398 | |
| name: "StandardizedBrowserZoom", | |
| status: "stable", | |
| public: true, | |
| }, | |
| { | |
| name: "StandardizedBrowserZoomOptOut", | |
| origin_trial_feature_name: "DisableStandardizedBrowserZoom", | |
| origin_trial_type: "deprecation", | |
| origin_trial_allows_insecure: true, | |
| origin_trial_allows_third_party: true, | |
| }, | |
| { | |
| // Preserves the sticky user activation state after a page navigates to | |
| // another same-origin page. https://crbug.com/433729626 | |
| name: "StickyUserActivationAcrossSameOriginNavigation", | |
| status: "stable", | |
| }, | |
| { | |
| name: "StorageBuckets", | |
| status: "stable", | |
| }, | |
| { | |
| // Gates the `durability()` method on a storage bucket and the property in | |
| // the options struct. | |
| name: "StorageBucketsDurability", | |
| status: "experimental", | |
| }, | |
| { | |
| // Gates the `locks()` method on a storage bucket. | |
| name: "StorageBucketsLocks", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "StrictMimeTypesForWorkers", | |
| status: "experimental", | |
| }, | |
| { | |
| // When enabled, a StyleImage/FontResource cached on a (potentially | |
| // shared) StyleSheetContents is keyed on the requesting document's | |
| // ResourceFetcher, so a second document that shares the stylesheet | |
| // re-runs its own request checks (e.g. Content Security Policy) instead | |
| // of reusing the first document's already-fetched resource. crbug.com/504107363. | |
| name: "StyleResourceFetcherIdentityCheck", | |
| status: "stable", | |
| }, | |
| { | |
| name: "StylusHandwriting", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "SubApps", | |
| status: "stable", | |
| }, | |
| // Killswitch to guard capturing the subframe owner element instead of the | |
| // inner element on mouse press. | |
| { | |
| name: "SubframeMouseCaptureOwner", | |
| status: "stable", | |
| }, | |
| { | |
| // Require the requesting view to have focus before allowing it go | |
| // fullscreen, unless it has a fullscreen token through capability | |
| // delegation. https://crbug.com/40052279 | |
| name: "SuppressFullscreenFromUnfocusedView", | |
| status: "stable", | |
| }, | |
| // 'pointercancel' and boundary leave ('pointerout' and 'pointerleave') | |
| // events would now fire after a mouse drag start, matching the spec's | |
| // definition of "pointer stream suppression". See: | |
| // https://github.com/w3c/pointerevents/issues/555 | |
| { | |
| name: "SuppressPointerStreamAfterDrag", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgAnimateMotionDiscreteCalcMode", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgAvoidResettingFilterQualityForTiledPattern", | |
| status: "stable", | |
| }, | |
| { | |
| // Apply CSS 3D transforms (perspective(), rotateX/Y, translateZ, ...) | |
| // to SVG child elements when painting instead of flattening them to a | |
| // 2D affine matrix. | |
| // https://issues.chromium.org/41310059 | |
| name: "SvgCss3dTransforms", | |
| status: "experimental", | |
| }, | |
| { | |
| // Treat SVG documents in <object>/<embed> as replaced elements | |
| // https://issues.chromium.org/41302806 | |
| name: "SVGEmbeddedAsReplacedElement", | |
| status: "experimental", | |
| }, | |
| { | |
| // Don't accept the empty string as a valid value in some cases. | |
| name: "SvgEmptyAttributeStringParsingFix", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgEnableTextDecorationCssStyling", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgFallBackToContainerSize", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgFeImageEXIFOrientation", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgFeImageSkipHiddenContainerViewportDependence", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgFilterPaintsForHiddenContent", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgFilterUserSpaceViewportForSvg", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgHyperlinkElementUtils", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "SvgIgnoreNegativeEllipseRadii", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgImageAnimationReset", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgImageNonUniformScalingFix", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgIncrementalStyle", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgInlineRootPixelSnappingScaleAdjustment", | |
| status: "test", | |
| }, | |
| { | |
| // When enabled, short-circuits shadow instance synchronization when SVG | |
| // elements cannot have instances (no rare data). | |
| name: "SvgInstanceSyncOptimization", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgLengthResolveUnparsedValue", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgNewZoom", | |
| }, | |
| { | |
| // Structured access to SVG path segments via getPathData/setPathData. | |
| // https://issues.chromium.org/40441025 | |
| name: "SVGPathDataAPI", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "SvgPathLengthCssProperty", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "SvgScriptElementAsyncAttribute", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for marking fragment-parsed SVG <script> elements | |
| // "already started" so they stay inert when cloned. crbug.com/538197148 | |
| name: "SvgScriptFragmentAlreadyStarted", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgSizingWithPreserveAspectRatioNone", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "SvgStyleElementReflectTypeAndMedia", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgSupportMediaFragments", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "SVGTextPathSideAttribute", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for treating a code point that extends the previous | |
| // typographic character as non-addressable when consuming x/y/dx/dy/ | |
| // rotate lists. crbug.com/41007184 | |
| name: "SvgTextPositioningGraphemeClusters", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgUseNestedResourceDocuments", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SvgUseNestedResourceDocumentsDelayLoad", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SyncCrossDocumentAnimationTiming", | |
| status: "stable", | |
| }, | |
| { | |
| name: "SynthesizedKeyboardEventsForAccessibilityActions", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "SyntheticMouseHoverOverInactivePage", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "SystemWakeLock", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "TabAlignmentWithFloats", | |
| status: "stable", | |
| }, | |
| { | |
| // When enabled (the legacy behavior), interior cell borders from the | |
| // `border`/`rules` attributes inherit the table's border-color. Disable | |
| // to launch the spec-compliant behavior, where they resolve to | |
| // `currentColor` instead (border-color is not inherited). The | |
| // `bordercolor` attribute always propagates. Matches Gecko when disabled. | |
| // See crbug.com/40745409. | |
| name: "TableCellBorderColorInherit", | |
| status: "stable", | |
| }, | |
| { | |
| name: "TableIsAutoFixedLayout", | |
| status: "test", | |
| }, | |
| { | |
| name: "TabSizeInRubyBase", | |
| status: "stable", | |
| }, | |
| { | |
| // When checking the shadow tree during invoke(), | |
| // use the invocationTargetInShadowTree saved before | |
| // calling the listener. | |
| // This was added in M142 and can be removed after M147. | |
| // https://issues.chromium.org/issues/41408360 | |
| name: "TargetInShadowDeterminedBeforeListener", | |
| status: "stable", | |
| }, | |
| { | |
| // Makes getTargetRanges() of a deleteContentBackward beforeinput event | |
| // cover only the code points that are actually deleted, instead of the | |
| // whole grapheme cluster behind the caret. | |
| // Enabled in M153, safe to remove in M155. | |
| // https://issues.chromium.org/issues/539754135 | |
| name: "TargetRangesForBackwardDeletionUnit", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for releasing directly focused temporal input hosts on blur. | |
| // See crbug.com/541316137. | |
| name: "TemporalInputHostBlur", | |
| status: "stable", | |
| }, | |
| // For unit tests. | |
| { | |
| // This is for testing copied_from_base_feature_if. | |
| // This is set in base/test/test_suite.cc. | |
| name: "TestBlinkFeatureDefault", | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| }, | |
| { | |
| name: "TestFeature", | |
| base_feature: "none", | |
| browser_process_read_write_access: true, | |
| }, | |
| // For unit tests. | |
| { | |
| name: "TestFeatureCustomEnableCheck", | |
| base_feature: "none", | |
| custom_enable_check: "CanEnableTestFeature", | |
| }, | |
| // For unit tests. | |
| { | |
| name: "TestFeatureDependent", | |
| depends_on: ["TestFeatureImplied"], | |
| base_feature: "none", | |
| }, | |
| // This is a feature used for testing what happens when an origin trial | |
| // feature has browser-process read/write access. It should never be used | |
| // in production code. | |
| { | |
| name: "TestFeatureForBrowserProcessReadWriteAccessOriginTrial", | |
| origin_trial_feature_name: "TestFeatureForBrowserProcessReadWriteAccessOriginTrial", | |
| base_feature: "none", | |
| browser_process_read_write_access: true, | |
| }, | |
| // For unit tests. | |
| { | |
| name: "TestFeatureImplied", | |
| implied_by: ["TestFeature"], | |
| base_feature: "none", | |
| }, | |
| // For unit tests. | |
| { | |
| name: "TestFeatureStable", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for crbug.com/572900416. | |
| name: "TextAreaPlaceholderBreakAriaHiddenUpdate", | |
| status: "stable", | |
| }, | |
| { | |
| name: "TextAreaResizerFixedSize", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/523134883: Ignore ruby annotation text when computing | |
| // text-autospace boundaries. | |
| name: "TextAutoSpaceIgnoreRubyAnnotation", | |
| status: "stable", | |
| }, | |
| { | |
| name: "TextBoxTrimForNestedList", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for crbug.com/514953511. | |
| name: "TextBoxTrimOnInlineBox", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for crbug.com/562543774. | |
| name: "TextBoxTrimOnInlineBoxTextDecoration", | |
| depends_on: ["TextBoxTrimOnInlineBox"], | |
| status: "stable", | |
| }, | |
| { | |
| name: "TextDetector", | |
| status: "experimental", | |
| }, | |
| { | |
| // crbug.com/368657256 | |
| name: "TextEmphasisPositionAuto", | |
| status: "experimental", | |
| }, | |
| { | |
| // https://crbug.com/578671521 | |
| name: "TextEncodingDetectorTldHint", | |
| 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"}, | |
| }, | |
| { | |
| // crbug.com/556235808 | |
| name: "TextIteratorExcludeAutofilledSelectFix", | |
| status: "stable", | |
| }, | |
| { | |
| name: "TextMetricsBaselines", | |
| status: "stable", | |
| }, | |
| { | |
| // When enabled, text-overflow ellipsis is clipped when | |
| // selection focus is inside the element, revealing the full text content. | |
| // See https://crbug.com/40731275 | |
| name: "TextOverflowClipWithSelection", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/556432992 | |
| name: "TextOverflowInTextarea", | |
| status: "stable", | |
| }, | |
| { | |
| // https://crbug.com/41492459 | |
| // ChromeStatus: https://chromestatus.com/feature/6294595288825856 | |
| name: "TextOverflowString", | |
| status: "stable", | |
| }, | |
| { | |
| name: "TextScaleMetaTag", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/431660829 | |
| name: "TextSpacingTrimFallback", | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/431660829 | |
| name: "TextSpacingTrimFallback2", | |
| depends_on: ["TextSpacingTrimFallback"], | |
| status: "test", | |
| }, | |
| { | |
| // crbug.com/440947112 | |
| name: "TextSpacingTrimFallbackChws", | |
| depends_on: ["TextSpacingTrimFallback"], | |
| status: "stable", | |
| }, | |
| { | |
| // crbug.com/514448226 | |
| name: "TextStreamMethod", | |
| status: "stable", | |
| }, | |
| { | |
| // https://drafts.csswg.org/web-animations-2/#triggers | |
| name: "TimelineTrigger", | |
| status: "stable", | |
| }, | |
| { | |
| // Killswitch for the time picker offering only the values that the step | |
| // attribute allows. | |
| name: "TimePickerHonorsStep", | |
| status: "stable", | |
| }, | |
| { | |
| name: "TimerThrottlingForBackgroundTabs", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "TimestampBasedCLSTracking", | |
| status: "experimental" | |
| }, | |
| { | |
| name: "TimeZoneChangeEvent", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "TopicsAPI", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| // This feature allows touch dragging and a context menu to occur | |
| // simultaneously, with the assumption that the menu is non-modal. Without | |
| // this feature, a long-press touch gesture can start either a drag or a | |
| // context-menu in Blink, not both (more precisely, a context menu is shown | |
| // only if a drag cannot be started). | |
| // This feature is enabled by default in Android, where | |
| // TouchDragOnShortPress is not shipped due to interactions with the OS that | |
| // caused issues in the behavior. | |
| // Please see https://issues.chromium.org/40823294 | |
| { | |
| name: "TouchDragAndContextMenu", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| // This feature enables drag and drop using touch input devices. Replaces | |
| // the old "--enable-touch-drag-drop" and "--disable-touch-drag-drop" | |
| // switches. | |
| // Enabled by default in Android, ChromeOS, Windows, and Linux. | |
| { | |
| name: "TouchDragAndDrop", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| // This feature makes touch dragging to occur at the short-press gesture, | |
| // which occurs right before the long-press gesture. | |
| { | |
| name: "TouchDragOnShortPress", | |
| depends_on: ["TouchDragAndDrop"], | |
| status: { | |
| "Win": "stable", | |
| }, | |
| }, | |
| // Many websites disable mouse support when touch APIs are available. We'd | |
| // like to enable this always but can't until more websites fix this bug. | |
| // Chromium sets this conditionally (eg. based on the presence of a | |
| // touchscreen) in ApplyWebPreferences. "Touch events" themselves are always | |
| // enabled since they're a feature always supported by Chrome. | |
| { | |
| name: "TouchEventFeatureDetection", | |
| origin_trial_feature_name: "ForceTouchEventFeatureDetectionForInspector", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| // Set to reflect the kTouchTextEditingRedesign feature. | |
| { | |
| name: "TouchTextEditingRedesign", | |
| base_feature: "none", | |
| }, | |
| { | |
| // If enabled and opted-in per property, style tracks the animating | |
| // element(s) that each property's computed value is derived from. | |
| // Used when deciding which animations can run on the compositor. | |
| name: "TrackAnimatedSources", | |
| status: "stable", | |
| }, | |
| { | |
| // Also tracks properties that inherit-by-default, such as `color`. | |
| // On a separate flag to collect data on runtime performance impact. | |
| name: "TrackAnimatedSourcesForInheritedProperties", | |
| depends_on: ["TrackAnimatedSources"], | |
| status: "experimental", | |
| }, | |
| { | |
| name: "TransferableRTCDataChannel", | |
| status: "stable", | |
| }, | |
| // This is conditionally set if the platform supports translation. | |
| { | |
| name: "TranslateService", | |
| }, | |
| { | |
| name: "TranslationAPI", | |
| status: { | |
| "Win": "stable", | |
| "Mac": "stable", | |
| "Linux": "stable", | |
| "ChromeOS": "stable", | |
| "default": "", | |
| }, | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| }, | |
| { | |
| name: "TranslationAPIForWorkers", | |
| public: true, | |
| }, | |
| { | |
| // When enabled, treats the initial navigation to about:blank#fragment in | |
| // an MHTML document as a cross-document navigation. | |
| // | |
| // Although it appears to be a same-document fragment navigation, MHTML | |
| // loading replaces the initial empty document with a new committed | |
| // document that has an opaque origin. | |
| // | |
| // This feature acts as a kill switch for https://crbug.com/40580002. | |
| name: "TreatMhtmlInitialDocumentLoadsAsCrossDocument", | |
| status: "stable", | |
| }, | |
| { | |
| // When enabled, trusted types can be used to enforce sanitization & | |
| // script running rules. | |
| // For example, it can enforce that any HTML setter would go through a | |
| // sanitizer. See https://github.com/w3c/trusted-types/issues/594 | |
| name: "TrustedTypesCreateParserOptions", | |
| status: "stable", | |
| depends_on: ["SanitizerAPI", "SetHTMLCanRunScripts"], | |
| }, | |
| { | |
| name: "TrustedTypesFromLiteral", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "TrustedTypesUseCodeLike", | |
| status: "experimental", | |
| }, | |
| { | |
| // Make the browser process verify user activation notification calls | |
| // from renderers before updating its own states and propagating the | |
| // information to other renderers (https://crbug.com/40091540). | |
| name: "TrustedUserActivationTriggers", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "TwoPhaseViewTransition", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "UAImageReplacementAPI", | |
| origin_trial_feature_name: "UAImageReplacementAPI", | |
| }, | |
| { | |
| // The Unbounded Element API. See crbug.com/508672616. | |
| // Note that this flag is enabled by default, to enable WebUI and other | |
| // privileged UI to depend on this feature. The flag is here as a kill | |
| // switch. Importantly, open web content still requires | |
| // UnsafeUnboundedElementOnTheOpenWeb to be enabled. | |
| // There is an override in SetCustomizedRuntimeFeaturesFromCombinedArgs to ensure this | |
| // is only enabled for Android U+, which is the minimum version the platform supports. | |
| name: "UnboundedElement", | |
| public: true, | |
| status: "stable", | |
| implied_by: ["UnsafeUnboundedElementOnTheOpenWeb"], | |
| }, | |
| { | |
| name: "UnclosedFormControlIsInvalid", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "UnexposedTaskIds", | |
| }, | |
| // This is a kill switch for the unprefixed Web Speech API. | |
| { | |
| name: "UnprefixedSpeechRecognition", | |
| status: "stable", | |
| }, | |
| { | |
| name: "UnrestrictedMeasureUserAgentSpecificMemory", | |
| }, | |
| // This is a reverse OT used for a phased deprecation, on desktop | |
| // https://crbug.com/1071424 | |
| { | |
| name: "UnrestrictedSharedArrayBuffer", | |
| base_feature: "none", | |
| origin_trial_feature_name: "UnrestrictedSharedArrayBuffer", | |
| origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos"], | |
| }, | |
| // Enables using policy-controlled feature "usb-unrestricted" to allow | |
| // isolated context to access protected USB interface classes and to | |
| // bypass the USB blocklist. | |
| { | |
| name: "UnrestrictedUsb", | |
| status: "stable", | |
| depends_on: ["WebUSB"], | |
| }, | |
| { | |
| // The Unbounded Element API. See crbug.com/508672616. | |
| // Allows open web content to escape the bounds of the top level window. | |
| name: "UnsafeEscapingUnboundedElementOnTheOpenWeb", | |
| public: true, | |
| }, | |
| { | |
| // The Unbounded Element API. See crbug.com/508672616. | |
| // Enable Unbounded Element on the open web, with the bounds of the | |
| // unbounded element limited to the topmost main frame bounds. (No | |
| // escaping beyond the main frame, including over the Omnibox, etc.) | |
| name: "UnsafeUnboundedElementOnTheOpenWeb", | |
| public: true, | |
| implied_by: ["UnsafeEscapingUnboundedElementOnTheOpenWeb"], | |
| }, | |
| // If enabled, notify the associated DisplayCutoutHost of changes in | |
| // complex safe area constraint usage on the page. | |
| // Only Android may make use of this feature currently. | |
| { | |
| name: "UpdateComplexSafaAreaConstraints", | |
| status: { | |
| "Android": "stable", | |
| "default": "", | |
| } | |
| }, | |
| // Fix for https://crbug.com/41329214. | |
| { | |
| name: "UpdateSelectionOnNodeInsertion" | |
| }, | |
| { | |
| name: "URLPatternCompareComponent", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "URLPatternGenerate", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "URLSearchParamsHasAndDeleteMultipleArgs", | |
| status: "stable", | |
| }, | |
| { | |
| name: "UseBeginFramePresentationFeedback", | |
| status: { | |
| "ChromeOS": "stable", | |
| }, | |
| }, | |
| { | |
| name: "UsedPositionRelativeInsets", | |
| status: "stable", | |
| }, | |
| { | |
| // Android currently uses low-quality interpolation, while other platforms | |
| // default to medium-quality. This flag is for experimenting with changing | |
| // the value on Android. See: https://crbug.com/374315986. | |
| name: "UseLowQualityInterpolation", | |
| status: { | |
| "Android": "stable", | |
| "default": "", | |
| }, | |
| }, | |
| { | |
| // This flag uses the original DOM text for input when the password | |
| // echo is enabled to create the offset_map. | |
| name: "UseOriginalDomOffsetsForOffsetMap", | |
| status: "test", | |
| }, | |
| { | |
| name: "UsePaintGeometryForIntersection", | |
| status: "stable", | |
| }, | |
| { | |
| name: "UsePositionForPointInFlexibleBoxWithSingleChildElement", | |
| status: "stable", | |
| }, | |
| { | |
| name: "UsePositionIfIsVisuallyEquivalentCandidate", | |
| status: "stable", | |
| }, | |
| { | |
| // Stops user action pseudo-classes from propagating out of top layer | |
| // elements. See https://crbug.com/407769114. | |
| // This shipped in M149, and can be removed in M151. | |
| name: "UserActionPseudosStopAtTopLayer", | |
| status: "stable", | |
| }, | |
| { | |
| name: "UserDefinedEntryPointTiming", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "UserMediaElement", | |
| status: "stable", | |
| public: true, | |
| }, | |
| { | |
| // Allowing legacy compatibility paths for usermedia element (such as | |
| // the 'type' attribute carried over from older permission element | |
| // implementations). | |
| name: "UserMediaElementLegacy", | |
| // By mapping this new flag to the existing "UserMediaElement" origin | |
| // trial name, both features can be evaluated concurrently during the | |
| // trial phase while preserving a partner-less-effort path for future | |
| // deprecation. | |
| origin_trial_feature_name: "UserMediaElement", | |
| }, | |
| { | |
| name: "UseShadowHostStyleCheckEditable", | |
| status: "stable", | |
| }, | |
| { | |
| name: "UseUndoStepElementDispatchBeforeInput", | |
| status: "stable", | |
| }, | |
| { | |
| name: "V8IdleTasks", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| name: "VariableSystemFontSupportOnWindows", | |
| }, | |
| { | |
| // Whether a video element should automatically play fullscreen unless | |
| // 'playsinline' is set. | |
| name: "VideoAutoFullscreen", | |
| settable_from_internals: true, | |
| }, | |
| { | |
| name: "VideoFrameMetadataBackgroundBlur", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "VideoFrameMetadataRtpTimestamp", | |
| status: "stable", | |
| }, | |
| { | |
| name: "VideoFullscreenOrientationLock", | |
| }, | |
| { | |
| name: "VideoRotateToFullscreen", | |
| }, | |
| { | |
| name: "VideoTrackGenerator", | |
| status: "test", | |
| }, | |
| { | |
| name: "VideoTrackGeneratorInWindow", | |
| status: "test", | |
| }, | |
| { | |
| name: "VideoTrackGeneratorInWorker", | |
| }, | |
| { | |
| name: "ViewportHeightClientHintHeader", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ViewportSegments", | |
| status: "stable", | |
| }, | |
| { | |
| name: "ViewTransitionLongCallbackTimeoutForTesting", | |
| status: "test", | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/568974861, which prevents painting | |
| // view transition content (which may contain cross-origin frames) under | |
| // SVG reference filters. | |
| name: "ViewTransitionPreventSvgFilterPaint", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch. Doesn't generate the ::view-transition pseudo-element | |
| // tree when capturing the outgoing document of a cross-document view | |
| // transition, since the animation runs on the new document. This avoids | |
| // extra style and layout passes in the capture frame. | |
| name: "ViewTransitionSkipPseudoTreeForNavigationCapture", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/569098933. Doesn't snap the browser | |
| // controls to fully shown when capturing the outgoing document of a | |
| // cross-document view transition if the browser controls have zero | |
| // height, since that would force a new LocalSurfaceId for the capture. | |
| name: "ViewTransitionSkipZeroHeightControlsSnap", | |
| status: "stable", | |
| }, | |
| { | |
| name: "VisibilityCollapseColumn", | |
| }, | |
| { | |
| // Kill switch for https://crbug.com/569257985. Allows animation-tainted | |
| // var() data to be substituted into -internal-visited-* properties | |
| // whenever it may be substituted into their unvisited counterparts. | |
| name: "VisitedAnimationTaintedSubstitution", | |
| status: "stable", | |
| }, | |
| { | |
| // Guards the removal of legacy visual rect inflation when mapping through | |
| // nested 2D transforms. Prevents rotated or skewed descendants from being | |
| // repeatedly expanded while computing visible bounds. | |
| name: "VisualRectMappingFixForExpansion", | |
| status: "stable", | |
| }, | |
| { | |
| // The "WakeLock" feature was originally implied_by "ScreenWakeLock" and | |
| // "SystemWakeLock". The former was removed after being promoted to | |
| // stable, but we need to keep this feature around for code and IDLs that | |
| // should work with both screen and system wake locks. | |
| name: "WakeLock", | |
| status: "stable", | |
| implied_by: ["SystemWakeLock"], | |
| }, | |
| { | |
| // When enabled, this will issue a warning to the console any time | |
| // rendering is forced withing content-visibility subtrees (both | |
| // content-visibility: auto and content-visibility: hidden). | |
| name: "WarnOnContentVisibilityRenderAccess", | |
| }, | |
| { | |
| // Anchors the wavy text decoration pattern at the decorating box so the | |
| // wave phase continues across inline fragment boundaries. Enabled by | |
| // default; acts as a kill switch. https://crbug.com/41287729 | |
| name: "WavyDecorationContinuousPhase", | |
| status: "stable", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/5183481574850560 | |
| name: "WebAppInstallation", | |
| status: { | |
| "Android": "", | |
| "iOS": "", | |
| "Fuchsia": "", | |
| "default": "stable", | |
| }, | |
| public: true, | |
| }, | |
| { | |
| // This needs to be kept as a runtime flag | |
| // in order to disable the API in WebView. | |
| name: "WebAppLaunchQueue", | |
| status: "stable", | |
| }, | |
| { | |
| name: "WebAppScopeExtensions", | |
| origin_trial_feature_name: "WebAppScopeExtensions", | |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| // If enabled, form controls will only render the OS accent color in a | |
| // web app context for the initial browser profile. | |
| name: "WebAppScopeSystemAccentColor", | |
| status: "stable", | |
| }, | |
| { | |
| name: "WebAppTabStrip", | |
| status: { | |
| "ChromeOS": "stable", | |
| "default": "experimental" | |
| }, | |
| base_feature: "DesktopPWAsTabStrip", | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| }, | |
| { | |
| name: "WebAppTabStripCustomizations", | |
| status: { | |
| "ChromeOS": "stable", | |
| "default": "experimental" | |
| }, | |
| base_feature: "DesktopPWAsTabStripCustomizations", | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| }, | |
| { | |
| name: "WebAppTranslations", | |
| status: "experimental", | |
| base_feature: "WebAppEnableTranslations", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/6024844719947776, take 2 | |
| name: "WebAssemblyCustomDescriptorsV2", | |
| origin_trial_feature_name: "WebAssemblyCustomDescriptorsV2", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| // WebAssembly JS Promise Integration, | |
| // https://github.com/WebAssembly/js-promise-integration/blob/main/proposals/js-promise-integration | |
| name: "WebAssemblyJSPromiseIntegration", | |
| origin_trial_feature_name: "WebAssemblyJSPromiseIntegration", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| // https://chromestatus.com/feature/5077691662073856 | |
| name: "WebAudioBypassOutputBuffering", | |
| status: { | |
| "Win": "stable", | |
| "ChromeOS": "stable", | |
| "Mac": "stable", | |
| "Linux": "stable", | |
| }, | |
| }, | |
| { | |
| // https://chromestatus.com/feature/5077691662073856 | |
| // Allows an Enterprise Policy to override WebAudioBypassOutputBuffering | |
| name: "WebAudioBypassOutputBufferingOptOut", | |
| public: true, | |
| }, | |
| { | |
| // https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-renderquantumsize | |
| name: "WebAudioConfigurableRenderQuantum", | |
| origin_trial_feature_name: "WebAudioConfigurableRenderQuantum", | |
| status: "stable", | |
| }, | |
| // WebAuth is disabled on Android versions prior to N (7.0) due to lack of | |
| // supporting APIs, see runtime_features.cc. | |
| { | |
| name: "WebAuth", | |
| status: "stable", | |
| }, | |
| // When enabled adds the authenticator attachment used for registration and | |
| // authentication to the public key credential response. | |
| { | |
| name: "WebAuthAuthenticatorAttachment", | |
| status: "test", | |
| }, | |
| // Prototyping https://github.com/w3c/webauthn/issues/2144 | |
| { | |
| name: "WebAuthenticationAmbient", | |
| status: "experimental", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| // https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestationformats | |
| { | |
| name: "WebAuthenticationAttestationFormats", | |
| status: "experimental", | |
| origin_trial_feature_name: "WebAuthnAttestationFormats", | |
| origin_trial_os: ["android"], | |
| origin_trial_allows_third_party: true, | |
| }, | |
| { | |
| name: "WebAuthenticationCmtgKey", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebAuthenticationCrossDeviceFallbackUrl", | |
| status: {"Android": "", "default": "experimental"}, | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| // Lets an authorized remote desktop client supply the clientDataJSON for a | |
| // WebAuthn request. Can be enabled only in conjunction with | |
| // the device::kWebAuthnRemoteClientDataJson base::Feature. | |
| // https://w3c.github.io/webauthn/#sctn-remote-client-data-json-extension | |
| { | |
| name: "WebAuthenticationRemoteClientDataJson", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| name: "WebAuthenticationRemoteDesktopSupport", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| // Reflects the HTML `autocorrect` content attribute's used autocorrection | |
| // state to the platform IME: autocorrection is On by default and forced | |
| // Off for URL/Email/Password inputs (and an `autocorrect=off` form owner). | |
| // https://html.spec.whatwg.org/multipage/interaction.html#autocorrection | |
| name: "WebAutocorrectByDefault", | |
| status: "stable", | |
| }, | |
| // WebBluetooth is enabled by default on Android, ChromeOS, iOS, macOS and | |
| // Windows. | |
| { | |
| name: "WebBluetooth", | |
| public: true, | |
| status: { | |
| "Android": "stable", | |
| "ChromeOS": "stable", | |
| "iOS": "stable", | |
| "Mac": "stable", | |
| "Win": "stable", | |
| "default": "experimental", | |
| }, | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebBluetoothGetDevices", | |
| public: true, | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebBluetoothScanning", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebBluetoothWatchAdvertisements", | |
| public: true, | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Restricts the sharing of BluetoothDevice instances across different V8 | |
| // worlds (e.g., main world and isolated worlds) to prevent cross-world | |
| // leaks. | |
| name: "WebBluetoothWorldIsolatedCache", | |
| status: "stable", | |
| }, | |
| { | |
| name: "WebCodecsVideoEncoderBuffers", | |
| status: "experimental", | |
| }, | |
| { | |
| // Adding post-quantum algorithms (ML-DSA, ML-KEM) to WebCrypto. | |
| // Also adding ChaCha20-Poly1305 while we're at it. | |
| // | |
| // https://chromestatus.com/feature/5198951632470016 | |
| name: "WebCryptoPQC", | |
| status: "stable", | |
| }, | |
| { | |
| name: "WebGLDeveloperExtensions", | |
| public: true, | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Draft WebGL extensions are deliberately not enabled by experimental web | |
| // platform features. | |
| name: "WebGLDraftExtensions", | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| name: "WebGLDrawingBufferStorage", | |
| status: "stable", | |
| }, | |
| { | |
| // Switch WebGL to use an experimental implementation where WebGL calls | |
| // are translated in Blink, via ANGLE, to WebGPU calls. Note that this | |
| // is not marked as "experimental" because it is not an incremental | |
| // addition like other experimental features but a code switch, so we | |
| // don't want to enable it when testing all "experimental Web platform | |
| // features". | |
| name: "WebGLOnWebGPU", | |
| }, | |
| { | |
| // WebGL tone mapping support | |
| // https://issues.chromium.org/issues/555806830 | |
| // https://chromestatus.com/feature/5424242161221632 | |
| name: "WebGLToneMapping", | |
| status: "experimental", | |
| }, | |
| { | |
| // 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, | |
| }, | |
| { | |
| // Enables "chromium-experimental-sampling-resource-table". | |
| name: "WebGPUExperimentalResourceTable", | |
| status: "experimental", | |
| implied_by: ["WebGPUExperimentalFeatures"], | |
| public: true, | |
| }, | |
| { | |
| // WebGPU external image copy and import HDR headroom parameter for tone | |
| // mapping. | |
| // https://crbug.com/557320955 | |
| // https://chromestatus.com/feature/5147993689948160 | |
| name: "WebGPUExternalImageHDRHeadroom", | |
| status: "experimental", | |
| }, | |
| { | |
| // Enables GPUBuffer::mapSync for WebGPU. | |
| name: "WebGPUMapSyncOnWorkers", | |
| status: "experimental", | |
| public: true, | |
| }, | |
| { | |
| // Allows handling of WebGPU related commands from the GPU process to | |
| // happen on a separate thread. This is a pre-requisite for emulation of | |
| // serialized asynchronous APIs, i.e. mapSync. | |
| name: "WebGPUMultithreadDawnWireOnWorkers", | |
| status: "experimental", | |
| implied_by: ["WebGPUMapSyncOnWorkers"], | |
| }, | |
| { | |
| name: "WebHaptics", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebHID", | |
| status: "stable", | |
| }, | |
| { | |
| // It is only enabled in extension environment for now. | |
| name: "WebHIDOnServiceWorkers", | |
| depends_on: ["WebHID"], | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| // Restricts the sharing of HIDDevice instances across different V8 | |
| // worlds (e.g., main world and isolated worlds) to prevent cross-world | |
| // leaks. | |
| name: "WebHIDWorldIsolatedCache", | |
| status: "stable", | |
| }, | |
| { | |
| name: "WebIdentityDigitalCredentials", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebIdentityDigitalCredentialsCreation", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| // Kill switch for making BigInt handling in WebIDL use ToBigInt. | |
| { | |
| name: "WebIDLBigIntUsesToBigInt", | |
| status: "stable", | |
| }, | |
| { | |
| // Imperative WebMCP: `document.modelContext` and its tool | |
| // registration/execution APIs. See also `DeclarativeWebMCP`. | |
| name: "WebMCP", | |
| origin_trial_feature_name: "WebMCP", | |
| origin_trial_allows_third_party: true, | |
| public: true, | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| // Note that `depends_on` isn't supported by origin trials. | |
| implied_by: [ | |
| "WebMCPContinuations", | |
| "WebMCPDeclarativeFileInput", | |
| "WebMCPFormAssociatedCustomElements" | |
| ], | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebMCPContinuations", | |
| public: true, | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebMCPDeclarativeFileInput", | |
| status: "test", | |
| }, | |
| { | |
| // Support for form-associated custom elements in declarative | |
| // WebMCP tools. | |
| name: "WebMCPFormAssociatedCustomElements", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebNFC", | |
| public: true, | |
| status: {"Android": "stable", "iOS": "stable", "default": "test"}, | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebOTP", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebOTPAssertionFeaturePolicy", | |
| depends_on: ["WebOTP"], | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| // https://wicg.github.io/web-preferences-api/ | |
| name: "WebPreferences", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebPrinting", | |
| status: {"Android": "", "ChromeOS": "stable", "default": "test"}, | |
| }, | |
| { | |
| // Experimental implementation of | |
| // https://www.ietf.org/archive/id/draft-hancke-tsvwg-snap-00.html | |
| name: "WebRtcSctpSnap", | |
| origin_trial_feature_name: "WebRtcSctpSnap", | |
| status: "experimental", | |
| }, | |
| { | |
| // Restricts the sharing of SerialPort instances across different V8 | |
| // worlds (e.g., main world and isolated worlds) to prevent cross-world | |
| // leaks. | |
| name: "WebSerialWorldIsolatedCache", | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| // WebShare is enabled by default on Android (non-WebView), Win, ChromeOS, and Mac. | |
| // This is done in chrome/renderer/chrome_content_renderer_client.cc to prevent | |
| // making the API available to Linux and WebView. Ideally we would set the status | |
| // below to "stable" once we can do so without significant test expectation duplication. | |
| { | |
| name: "WebShare", | |
| public: true, | |
| status: "test", | |
| }, | |
| { | |
| name: "WebSocketOptionBag", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebSocketStream", | |
| status: "stable", | |
| }, | |
| { | |
| name: "WebSocketStreamStandardBinaryChunkType", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebSpeechRecognitionContext", | |
| status: { | |
| "Win": "stable", | |
| "Mac": "stable", | |
| "Linux": "stable", | |
| "ChromeOS": "experimental", | |
| "default": "", | |
| }, | |
| }, | |
| { | |
| name: "WebSpeechTimestamps", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebSpeechUnspokenPunctuation", | |
| status: { | |
| "Win": "stable", | |
| "Mac": "stable", | |
| "Linux": "stable", | |
| "ChromeOS": "stable", | |
| "default": "", | |
| }, | |
| }, | |
| { | |
| name: "WebTransportAnticipatedConcurrentIncomingStreams", | |
| status: "stable", | |
| }, | |
| { | |
| name: "WebTransportApplicationProtocol", | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebTransportCongestionControl", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebTransportCreateStreamsBeforeReady", | |
| status: "stable", | |
| }, | |
| { | |
| name: "WebTransportCustomCertificates", | |
| origin_trial_feature_name: "WebTransportCustomCertificates", | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebTransportDatagramsReadableType", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebTransportDatagramsWritable", | |
| status: "experimental", | |
| base_feature: "none", | |
| depends_on: ["WebTransportSendGroup"], | |
| }, | |
| { | |
| name: "WebTransportDraining", | |
| status: "stable", | |
| }, | |
| { | |
| name: "WebTransportExportKeyingMaterial", | |
| status: "stable", | |
| }, | |
| { | |
| name: "WebTransportHeaders", | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebTransportReceiveStream", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebTransportReliability", | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebTransportSendGroup", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Note: enabling this without setting WebTransportCongestionControl to | |
| // either BBRv1 or BBRv2 will produce poor bandwidth estimates. | |
| name: "WebTransportStats", | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| // Fetches the WebUI code cache from the resource bundle asynchronously | |
| // on a worker thread. | |
| name: "WebUIBundledCodeCacheAsyncFetch", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebUSB", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebUSBOnDedicatedWorkers", | |
| status: "stable", | |
| depends_on: ["WebUSB"], | |
| }, | |
| { | |
| // It is only enabled in extension environment for now. | |
| name: "WebUSBOnServiceWorkers", | |
| depends_on: ["WebUSB"], | |
| base_feature: "none", | |
| public: true, | |
| }, | |
| { | |
| name: "WebViewEnvReorderFix", | |
| status: "stable", | |
| }, | |
| { | |
| // Kill switch for sizing and placing WebVTT cue boxes by the computed | |
| // position alignment instead of the CSS text alignment. | |
| // Spec: https://w3c.github.io/webvtt/#cue-computed-position-alignment | |
| name: "WebVTTCueLayoutByPositionAlignment", | |
| status: "stable", | |
| }, | |
| { | |
| // Killswitch for sizing each cue line box using the cue text font | |
| // instead of the text track container font, keeping the cue box tight | |
| // around the rendered cue text. | |
| name: "WebVTTCueTightLineBox", | |
| status: "stable", | |
| }, | |
| { | |
| name: "WebVTTLineAndPositionAlignment", | |
| status: "experimental", | |
| // No base::Feature while experimental: avoids a mutable-constant | |
| // binary-size cost on Android. Add one (for the Finch killswitch) | |
| // when this ships. | |
| 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: "WebXRGPUBinding", | |
| depends_on: ["WebXR"], | |
| public: true, | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebXRHitTestEntityTypes", | |
| depends_on: ["WebXR"], | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebXRImageTracking", | |
| depends_on: ["WebXR"], | |
| origin_trial_feature_name: "WebXRImageTracking", | |
| public: true, | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebXRLayers", | |
| depends_on: ["WebXR"], | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebXRLayersCommon", | |
| implied_by: ["WebXRLayers", "WebXRGPUBinding"], | |
| public: true, | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebXRMediaBinding", | |
| depends_on: ["WebXRLayers"], | |
| public: true, | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebXRMeshDetection", | |
| depends_on: ["WebXR"], | |
| public: true, | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebXRPlaneDetection", | |
| depends_on: ["WebXR"], | |
| origin_trial_feature_name: "WebXRPlaneDetection", | |
| public: true, | |
| status: "stable", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebXRPoseMotionData", | |
| depends_on: ["WebXR"], | |
| public: true, | |
| status: "experimental", | |
| base_feature: "none", | |
| }, | |
| { | |
| name: "WebXRSpecParity", | |
| depends_on: ["WebXR"], | |
| public: true, | |
| status: "experimental", | |
| }, | |
| { | |
| name: "WebXRVisibilityMask", | |
| depends_on: ["WebXR"], | |
| status: "stable", | |
| }, | |
| // Normalize DOM wheel pixel deltas for inherited pinch zoom in child | |
| // widgets without changing the native event used for scrolling. | |
| { | |
| name: "WheelEventDeltaExternalPageScale", | |
| status: "stable", | |
| }, | |
| // Expose the momentum field in mouse wheel events that indicates whether an | |
| // event is synthesized by the platform to simulate scroll inertia after the | |
| // user has ended the physical scroll interaction. | |
| // https://crbug.com/40704952 | |
| { | |
| name: "WheelEventMomentum", | |
| 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", | |
| }, | |
| { | |
| name: "WindowOpenAlwaysOnTop", | |
| status: "test", | |
| }, | |
| { | |
| // If enabled, "attributionsrc" in window.open() features will not | |
| // disable UI features (avoiding opening as a popup instead of a new tab) | |
| // when Attribution Reporting is disabled/removed. Can be removed once | |
| // kAttributionReportingWindowOpen usage is sufficiently low. | |
| // https://crbug.com/553155942 | |
| name: "WindowOpenAttributionSrc", | |
| status: "stable", | |
| }, | |
| { | |
| // Supports the "split", "splitposition", and "splitsize" features in | |
| // window.open(), and the "windowfeatures" content attribute on <a>, | |
| // <area>, and <form>, which request that the new content be opened in a | |
| // split tab alongside the opener. | |
| // | |
| // The base::Feature is enabled by default, and serves as a kill switch | |
| // for the browser-side implementation. The Blink side follows the | |
| // RuntimeEnabledFeature status unless the base::Feature is overridden, | |
| // in which case both sides follow the override. This keeps the renderer | |
| // and browser consistent, so that the browser can reject split requests | |
| // from a renderer when the base::Feature is disabled. | |
| name: "WindowOpenSplitTab", | |
| status: "experimental", | |
| base_feature_status: "enabled", | |
| copied_from_base_feature_if: "overridden", | |
| }, | |
| { | |
| // Fixes an issue where Ctrl+Right Arrow skips punctuation before a newline. | |
| name: "WordSkipSpacesPunctuationFix", | |
| status: "stable", | |
| }, | |
| { | |
| // Moving to the Rust parser requires deprecation of the niche feature | |
| // of synchronously including external entities. | |
| // https://crbug.com/455813733 | |
| name: "XMLNoExternalEntities", | |
| status: "stable", | |
| }, | |
| { | |
| // Replaces lone surrogates in the XML source with U+FFFD so that the | |
| // parser makes a best-effort parse instead of rejecting the whole | |
| // document. This feature acts as a kill switch for | |
| // https://crbug.com/40814739. This flag was shipped in M153, and can be | |
| // removed in M155. | |
| name: "XMLParserReplaceLoneSurrogates", | |
| status: "stable", | |
| }, | |
| { | |
| // Switches from XML parsing through libxml2 to parsing XML using the | |
| // Rust xml crate. When an XSL processing instruction is encountered, | |
| // the Rust backend creates an ad-hoc libxml2 xmlDocPtr tree for libxslt | |
| // if XSLT is enabled (e.g. reverse origin trial or CAP alerts). | |
| // https://crbug.com/441911594 | |
| name: "XMLParsingRust", | |
| status: "experimental", | |
| }, | |
| { | |
| // Enables the Rust XML parser for situations where we know | |
| // no XSLT processing will be required. This covers usage of | |
| // JS DOMParser API to parse XML, and usage of XMLHttpRequest | |
| // with its responseXML document. | |
| // https://crbug.com/466303347 | |
| name: "XMLRustForNonXslt", | |
| status: "experimental", | |
| }, | |
| { | |
| name: "XMLSerializerConsistentDefaultNsDeclMatching", | |
| status: "test", | |
| }, | |
| { | |
| name: "XMLViewerForIframes", | |
| status: "experimental", | |
| }, | |
| { | |
| // A feature flag that controls whether XSLT is supported by the browser. | |
| // The current default state is XSLT-enabled. Note that there is a Finch | |
| // trial underway that sets this flag to false for pre-stable channels. | |
| // See XSLTSpecialTrial below. | |
| // crbug.com/435623334. | |
| name: "XSLT", | |
| public: true, | |
| origin_trial_feature_name: "XSLT", | |
| origin_trial_type: "deprecation", | |
| origin_trial_allows_insecure: true, | |
| origin_trial_allows_third_party: true, | |
| }, | |
| { | |
| // A feature flag that will be used for a "special trial" of disabling | |
| // XSLT on pre-stable channels only. This flag does *not* control the | |
| // actual enabled state of XSLT. It merely changes the console error that | |
| // gets emitted if XSLT is disabled. When this flag is true, a "special | |
| // trial run" message is used. | |
| // crbug.com/435623334. | |
| name: "XSLTSpecialTrial", | |
| }, | |
| ], | |
| } |