| { |
| // 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"], |
| }, |
| { |
| // Interest Group JS API/runtimeflag. |
| name: "AdInterestGroupAPI", |
| origin_trial_feature_name: "AdInterestGroupAPI", |
| implied_by: ["Fledge", "Parakeet"], |
| public: true, |
| }, |
| // Adjust the end of the next paragraph if the end position for the |
| // paragraph is updated while moving the paragraph. See |
| // https://crbug.com/329121649 |
| { |
| name: "AdjustEndOfNextParagraphIfMovedParagraphIsUpdated", |
| status: "stable", |
| }, |
| { |
| name: "AdTagging", |
| public: true, |
| status: "test", |
| base_feature: "none", |
| }, |
| { |
| name: "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: "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: "AllImagesPaintedSentToElementTiming", |
| status: "experimental", |
| }, |
| { |
| 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", |
| status: "stable", |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| // The transition to "running" after construction happens asynchronously. |
| // Same for the transition to "suspended" after suspend() is called. |
| // https://webaudio.github.io/web-audio-api/#AudioContext-constructors |
| name: "AudioContextAsyncStateTransitions", |
| status: "experimental", |
| }, |
| { |
| // AudioContext.playbackStats interface. |
| name: "AudioContextPlaybackStats", |
| status: "stable", |
| }, |
| { |
| 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", |
| }, |
| { |
| // 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: "experimental", |
| 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // 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: "CompositeBGColorAnimation", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "CompositeBoxShadowAnimation", |
| }, |
| { |
| name: "CompositeClipPathAnimation", |
| status: "stable", |
| public: true, |
| }, |
| { |
| name: "CompositedSelectionUpdate", |
| public: true, |
| status: { |
| "Android": "stable", |
| "ChromeOS": "stable", |
| "Fuchsia": "stable", |
| "Linux": "stable", |
| "Win": "stable", |
| }, |
| base_feature: "none", |
| }, |
| { |
| name: "CompositingDecisionAtAnimationPhaseBoundaries" |
| }, |
| { |
| name: "CompositionForegroundMarkers", |
| status: { |
| "Android": "stable", |
| "default": "", |
| } |
| }, |
| { |
| // When enabled, EventTriggers[1] will function via cc::EventTrigger |
| // objects that live on the compositor thread. |
| // [1] https://drafts.csswg.org/css-animations-2/#event-triggers |
| name: "CompositorEventTrigger" |
| }, |
| { |
| // When enabled, TimelineTriggers[1] will function via cc::TimelineTrigger |
| // objects that live on the compositor thread. |
| // [1] https://drafts.csswg.org/css-animations-2/#timeline-triggers |
| name: "CompositorTimelineTrigger", |
| 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: "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 |
| name: "CSSBackgroundLayerCountIndependence", |
| 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: "experimental", |
| }, |
| { |
| 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: "experimental", |
| }, |
| { |
| // 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: "experimental", |
| 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: "experimental", |
| }, |
| { |
| // https://drafts.csswg.org/css-values-5/#progress |
| // media-progress() |
| name: "CSSMediaProgressNotation", |
| status: "experimental", |
| }, |
| { |
| name: "CSSMixins", |
| status: "experimental", |
| }, |
| { |
| name: "CSSNestedPseudoElements", |
| status: "stable", |
| }, |
| { |
| // https://drafts.csswg.org/cssom/#dom-window-getcomputedstyle |
| name: "CSSOMGetComputedStylePseudoElementRequiresColon", |
| status: "experimental", |
| }, |
| { |
| name: "CSSPaintAPIArguments", |
| status: "experimental", |
| }, |
| { |
| // Ignore the stylesheet encoding when parsing URLs, always using UTF-8. |
| // See crbug.com/1485525. |
| name: "CSSParserIgnoreCharsetForURLs", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // Kill switch for integrity() enforcement on CSS image and SVG |
| // document resources. See also: CSSURLRequestModifiers |
| name: "CSSResourceIntegrityEnforcement", |
| 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: "stable", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // 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: "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", |
| }, |
| { |
| // Kill switch for including non-exposed <object> and <embed> elements in |
| // document named properties. crbug.com/551807991 |
| // Lands in M155 and can be removed in M157. |
| name: "DocumentNamedPropertiesIgnoreExposedness", |
| status: "stable", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| name: "EnforceAnonymityExposure", |
| 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", |
| }, |
| { |
| 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 ChromeOS, Linux (x11), Mac, and Win. |
| // This list should match the supported operating systems for the |
| // kEyeDropper base::Feature. |
| "ChromeOS": "stable", |
| "Linux": "stable", |
| "Mac": "stable", |
| "Win": "stable", |
| }, |
| // When running under experimental platform variants, such as |
| // Linux/Wayland, EyeDropper base::Feature defined in the browser |
| // process is used to disable it at runtime, if needed. |
| base_feature: "none", |
| public: true, |
| }, |
| { |
| name: "FaceDetector", |
| status: "experimental", |
| }, |
| { |
| name: "FastPositionIterator", |
| // Not enabled due to a RTL issue. crbug.com/1421016. |
| }, |
| { |
| name: "FedCm", |
| public: true, |
| status: "stable", |
| base_feature: "none", |
| }, |
| { |
| name: "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", |
| }, |
| { |
| // 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: "Fledge", |
| public: true, |
| }, |
| { |
| // Enables deal support within auctions. |
| name: "FledgeAuctionDealSupport", |
| status: "test", |
| }, |
| { |
| name: "FledgeBiddingAndAuctionServerAPI", |
| origin_trial_feature_name: "FledgeBiddingAndAuctionServer", |
| origin_trial_allows_third_party: true, |
| base_feature: "none", |
| status: "stable", |
| }, |
| { |
| name: "FledgeBiddingAndAuctionServerAPIMultiSeller", |
| status: "stable", |
| }, |
| { |
| name: "FledgeClickiness", |
| status: "test", |
| }, |
| { |
| name: "FledgeCustomMaxAuctionAdComponents", |
| status: "stable", |
| }, |
| { |
| // Enables using a 'deprecatedRenderURLReplacements' field within the |
| // Protected Audience ad auction config. |
| name: "FledgeDeprecatedRenderURLReplacements", |
| public: true, |
| status: "stable", |
| }, |
| { |
| name: "FledgeDirectFromSellerSignalsHeaderAdSlot", |
| status: "stable", |
| }, |
| { |
| // Feature flag to control removal, in case we run into unexpected |
| // breakage. |
| // |
| // TODO(crbug.com/384481095): Remove in a few milestones, along with the |
| // implementation code. |
| name: "FledgeDirectFromSellerSignalsWebBundles", |
| }, |
| { |
| name: "FledgeMultiBid", |
| public: true, |
| status: "stable", |
| }, |
| { |
| // Enables the private model training API in Protected Audience. |
| // https://github.com/WICG/turtledove/blob/main/PA_private_model_training.md |
| name: "FledgePrivateModelTraining", |
| status: "test", |
| }, |
| { |
| // Enables real time reporting API in Protected Audience. |
| // https://github.com/WICG/turtledove/blob/main/PA_real_time_monitoring.md |
| name: "FledgeRealTimeReporting", |
| public: true, |
| status: "stable", |
| }, |
| { |
| // Enables the ability to set seller nonces on the header response and |
| // use bidNonce in bids. |
| name: "FledgeSellerNonce", |
| status: "stable", |
| }, |
| { |
| // Enables having `executionMode` in the auctionConfig to use for seller scripts. |
| name: "FledgeSellerScriptExecutionMode", |
| status: "test", |
| }, |
| { |
| name: "FledgeTrustedSignalsKVv1CreativeScanning", |
| status: "test", |
| }, |
| { |
| name: "FledgeTrustedSignalsKVv2ContextualData", |
| depends_on: ["FledgeTrustedSignalsKVv2Support"], |
| status: "test", |
| }, |
| { |
| name: "FledgeTrustedSignalsKVv2Support", |
| status: "stable", |
| }, |
| { |
| name: "FlexWrapBalance", |
| status: "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: "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 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", |
| }, |
| { |
| 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", |
| }, |
| { |
| // 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: "experimental", |
| }, |
| { |
| 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", |
| }, |
| { |
| 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", |
| }, |
| { |
| // See crbug.com/40695399 |
| name: "InlineBlockLineNavigation", |
| status: "stable", |
| }, |
| { |
| // See crbug.com/40910996 crbug.com/569803503 |
| name: "InlineContainingBlockSkipOpaque", |
| status: "test", |
| }, |
| { |
| 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": "", "default": "test"}, |
| origin_trial_feature_name: "InstallElement", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| public: true, |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| 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", |
| }, |
| { |
| 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", |
| }, |
| { |
| // Checks interactive content using EventPath captured at |
| // dispatch start instead of current DOM state. This was |
| // added in M145 and can be removed after M147. |
| // https://issues.chromium.org/issues/452084024 |
| name: "LabelInteractiveContentCheckBeforeHandler", |
| status: "stable", |
| }, |
| { |
| name: "LangAttributeAwareFormControlUI", |
| settable_from_internals: true, |
| }, |
| { |
| name: "LanguageDetectionAPI", |
| status: { |
| "Win": "stable", |
| "Mac": "stable", |
| "Linux": "stable", |
| "ChromeOS": "stable", |
| "Android": "test", |
| "default": "", |
| }, |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| name: "LanguageDetectionAPIForWorkers", |
| public: true, |
| }, |
| { |
| name: "LayoutCloneForScrollableOverflowChange", |
| status: "stable", |
| }, |
| { |
| name: "LayoutContainingBlockReturnsBox", |
| status: "stable", |
| }, |
| { |
| 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", |
| }, |
| { |
| // 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", |
| origin_trial_feature_name: "LongAnimationFrameStyleDuration", |
| origin_trial_allows_third_party: true, |
| status: "experimental", |
| }, |
| { |
| // 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: "MaskDeserializationTimeForCrossOriginMessages", |
| status: "stable", |
| }, |
| { |
| name: "MaskWaitForAllImages", |
| status: "stable", |
| }, |
| { |
| // Enables MathMLAnchorElement |
| name: "MathMLAnchorElement", |
| status: "test", |
| }, |
| { |
| // 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", |
| }, |
| { |
| 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", |
| }, |
| { |
| // Killswitch M149. Functionality changed in M151. |
| name: "MergeStickyLayers", |
| status: "stable", |
| }, |
| { |
| 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", |
| }, |
| // 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", |
| }, |
| { |
| // Support Nastaliq script. crbug.com/569667449 |
| name: "NastaliqScript", |
| }, |
| { |
| 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/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"] |
| }, |
| { |
| // 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: "experimental", |
| }, |
| { |
| 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", |
| }, |
| { |
| name: "PaintUnderInvalidationChecking", |
| settable_from_internals: true, |
| }, |
| { |
| // PARAKEET ad serving runtime flag/JS API. |
| name: "Parakeet", |
| origin_trial_feature_name: "Parakeet", |
| }, |
| { |
| name: "PartitionVisitedLinkDatabaseWithSelfLinks", |
| status: {"iOS": "", "default": "stable"}, |
| }, |
| // This is to add an option to enable the Reveal button on password inputs while waiting ::reveal gets standardized. |
| { |
| name: "PasswordReveal", |
| }, |
| { |
| name: "PaymentApp", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // https://chromestatus.com/feature/5198846820352000 |
| name: "PaymentLinkDetection", |
| status: "stable", |
| }, |
| { |
| name: "PaymentMethodChangeEvent", |
| depends_on: ["PaymentRequest"], |
| status: "stable", |
| }, |
| // PaymentRequest is enabled by default on Android |
| { |
| name: "PaymentRequest", |
| public: true, |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| name: "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", |
| }, |
| { |
| 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/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", |
| }, |
| { |
| name: "PrePaintBoxInvalidatorUsesFragments", |
| 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, both Accept-Language HTTP header and JavaScript getter will |
| // be reduced. |
| { |
| name: "ReduceAcceptLanguage", |
| base_feature: "none", |
| }, |
| // 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| name: "ResponsiveIframes", |
| 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: "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"], |
| }, |
| { |
| // 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", |
| }, |
| { |
| // 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 `shadowRoots` 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", |
| 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", |
| }, |
| { |
| // 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", |
| }, |
| }, |
| { |
| 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. |
| name: "SourceSpecificMulticastInDirectSockets", |
| status: "test", |
| }, |
| { |
| // 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", |
| }, |
| // 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", |
| }, |
| { |
| // 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, |
| }, |
| { |
| // Killswitch M149. |
| name: "StickyPositionHasOverflowPerAxis", |
| status: "stable", |
| }, |
| { |
| // 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: "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: "experimental", |
| }, |
| { |
| name: "SvgUseNestedResourceDocuments", |
| status: "stable", |
| }, |
| { |
| name: "SvgUseNestedResourceDocumentsDelayLoad", |
| 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", |
| }, |
| { |
| // Remove <table>'s explicit `border-color: gray` UA stylesheet rule, |
| // since it is non-standard. See crbug.com/494554835. |
| // This shipped in M149, was updated in M151, and can be removed in M153. |
| name: "TableDefaultBorderColorCurrentColor", |
| 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", |
| }, |
| { |
| 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", |
| }, |
| { |
| 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, |
| status: "stable", |
| }, |
| // 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", |
| }, |
| { |
| name: "TrackAnimatedSources", |
| status: "test", |
| }, |
| { |
| 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", |
| }, |
| { |
| 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", |
| }, |
| }, |
| { |
| // 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/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", |
| }, |
| { |
| // 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": "", "default": "test"}, |
| origin_trial_feature_name: "WebAppInstallation", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| public: true, |
| base_feature_status: "enabled", |
| copied_from_base_feature_if: "overridden", |
| }, |
| { |
| // This needs to be kept as a runtime flag |
| // in order to disable the API in WebView. |
| name: "WebAppLaunchQueue", |
| status: "stable", |
| }, |
| { |
| name: "WebAppScopeExtensions", |
| origin_trial_feature_name: "WebAppScopeExtensions", |
| origin_trial_os: ["win", "mac", "linux", "chromeos"], |
| status: "experimental", |
| base_feature: "none", |
| }, |
| { |
| // If enabled, form controls will only render the OS accent color in a |
| // web app context 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: [ |
| "WebMCPDeclarativeFileInput", |
| "WebMCPFormAssociatedCustomElements" |
| ], |
| 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: "experimental", |
| base_feature: "none", |
| }, |
| { |
| 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: "experimental", |
| }, |
| { |
| name: "WebTransportExportKeyingMaterial", |
| status: "experimental", |
| }, |
| { |
| 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", |
| }, |
| // 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", |
| }, |
| { |
| // 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", |
| }, |
| { |
| // 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: "stable", |
| }, |
| { |
| 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", |
| status: "stable", |
| 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", |
| }, |
| ], |
| } |