{ // See third_party/blink/renderer/platform/RuntimeEnabledFeatures.md // // This list is used to generate runtime_enabled_features.h/cc which contains // a class that stores static enablers for all experimental features. parameters: { // Each feature can be assigned a "status". The "status" can be either // one of the values in the |valid_values| list or a dictionary of // the platforms listed in |valid_keys| to |valid_values|. // Use "default" as the key if you want to specify the status of // the platforms other than the ones declared in the dictionary. // ** Omitting "default" means the feature is not enabled on // the platforms not listed in the status dictionary // // Definition of each status: // * status=stable: Enable this in all Blink configurations. We are // committed to these APIs indefinitely. // * status=experimental: In-progress features, Web Developers might play // with, but are not on by default in stable. These features may be // turned on using the "Experimental Web Platform features" flag in // chrome://flags/#enable-experimental-web-platform-features. // * status=test: Enabled in ContentShell for testing, otherwise off. // Features without a status are not enabled anywhere by default. // // Example of the dictionary value use: // { // name: "ExampleFeature", // status: {"Android": "stable", "Win": "experimental"}, // } // "ExampleFeature" will be stable on Android/WebView, experimental // on Windows and not enabled on any other platform. // // Note that the Android status key implies Chrome for Android and WebView. // // "stable" features listed here should be rare, as anything which we've // shipped stable can have its runtime flag removed soon after. status: { valid_values: ["stable", "experimental", "test"], valid_keys: ["Android", "Win", "ChromeOS", "Mac", "Linux", "iOS"] }, // "implied_by" or "depends_on" specifies relationship to other features: // * implied_by: ["feature1","feature2",...] // The feature is automatically enabled if any implied_by features is // enabled. To effectively disable the feature, you must disable the // feature and all the implied_by features. // * depends_on: ["feature1","feature2",...] // The feature can be enabled only if all depends_on features are enabled. // Only one of "implied_by" and "depends_on" can be specified. implied_by: { default: [], valid_type: "list", }, // *DO NOT* specify features that depend on origin trial features. // It is NOT supported. As a workaround, you can either specify the same // |origin_trial_feature_name| for the feature or add the OT feature to // the |implied_by| list. // TODO(https://crbug.com/954679): Add support for origin trial features in 'depends_on' list depends_on: { default: [], valid_type: "list", }, // origin_trial_feature_name: "FEATURE_NAME" is used to integrate the // feature with the Origin Trials framework. The framework allows the // feature to be enabled at runtime on a per-page basis through a signed // token for the corresponding feature name. Declaring the // origin_trial_feature_name will modify the generation of the static // methods in runtime_enabled_features.h/cpp -- the no-parameter version // will not be generated, so all callers have to use the version that takes // a const FeatureContext* argument. origin_trial_feature_name: { }, // origin_trial_os specifies the platforms where the trial is available. // The default is empty, meaning all platforms. origin_trial_os: { default: [], valid_type: "list", }, // origin_trial_type specifies the unique type of the trial, when not the // usual trial for a new experimental feature. origin_trial_type: { default: "", valid_type: "str", valid_values: ["deprecation", "intervention", ""], }, // origin_trial_allows_insecure specifies whether the trial can be enabled // in an insecure context, with default being false. This can only be set // to true for a "deprecation" type trial. origin_trial_allows_insecure: { valid_type: "bool", }, // origin_trial_allows_third_party specifies whether the trial can be enabled // from third party origins, with default being false. origin_trial_allows_third_party: { valid_type: "bool", }, // settable_from_internals specifies whether a feature can be set from // internals.runtimeFlags, with the default being false. settable_from_internals: { valid_type: "bool", }, // public specifies whether a feature can be accessed via // third_party/blink/public/platform/web_runtime_features.h with dedicated // methods. The default is false. This should be rare because // WebRuntimeFeatures::EnableFeatureFromString() works in most cases. public: { valid_type: "bool", }, // Feature policy IDL extended attribute (see crrev.com/2247923004). feature_policy: { }, // The string name of a base::Feature. The C++ variable name in // blink::features is built with this string by prepending 'k'. // As long as this field isn't "none", a base::Feature is automatically // generated in features_generated.{h,cc}. By default the "name" field // is used for the feature name, but can be overridden here. // // The default value of the base::Feature instance is: // base::FEATURE_ENABLED_BY_DEFAULT if 'status' field is 'stable", and // base::FEATURE_DISABLED_BY_DEFAULT otherwise. // It can be overridden by 'base_feature_status' field. // // If the flag should be associated with a feature not in blink::features, // we need to specify `base_feature: "none"` and map the features in // content/child/runtime_features.cc. `base_feature: "none"` is strongly // discouraged if the feature doesn't have an associated base feature // because the feature would lack a killswitch controllable via finch. base_feature: { valid_type: "str", default: "", }, // Specify the default value of the base::Feature instance. This field // works only if base_feature is not "none". // If the field is missing or "", the default value depends on the 'status' // field. See the comment above. // "disabled" sets base::FEATURE_DISABLED_BY_DEFAULT, and "enabled" sets // base::FEATURE_ENABLED_BY_DEFAULT. base_feature_status: { valid_type: "str", valid_values: ["", "disabled", "enabled"], default: "", }, // Specify how the flag value is updated from the base::Feature value. This // field is used only if base_feature is not empty. // // * "enabled_or_overridden" // - If the base::Feature status is overridden to the enabled or disabled // state by field trial or command line, set Blink feature to the state // of the base::Feature. Note: "Override to Default" doesn't affect the // Blink feature. // - Otherwise if the base::Feature is enabled, enable the Blink feature. // - Otherwise no change. // // * "overridden" // Enables the Blink feature when the base::Feature status is overridden // to the enabled or disabled state by field trial or command line. // Otherwise no change. Its difference from "enabled_or_overridden" is // that the Blink feature isn't affected by the default state of the // base::Feature. Note: "Override to Default" deosn't affect the Blink // feature. // // This is useful for Blink origin trial features especially those // implemented in both Chromium and Blink. As origin trial only controls // the Blink features, for now we require the base::Feature to be enabled // by default, but we don't want the default enabled status affect the // Blink feature. See also https://crbug.com/1048656#c10. // This can also be used for features that are enabled by default in // Chromium but not in Blink on all platforms and we want to use the Blink // status. However, we would prefer consistent Chromium and Blink status // to this. copied_from_base_feature_if: { valid_type: "str", valid_values: ["enabled_or_overridden", "overridden"], default: "enabled_or_overridden", }, // browser_process_read_access indicates the runtime feature state should be // readable in the browserprocess via RuntimeFeatureStateReadContext. // TODO(crbug.com/1377000): this feature does not support origin trial // tokens provided in HTTP headers. Any tokens provided via HTTP header will // be dropped. Please inform developers they must embed the token in HTML. browser_process_read_access: { default: false, value_type: "bool", }, // browser_process_read_write_access indicates the runtime feature state // should be writable in the browserprocess via RuntimeFeatureStateContext. // TODO(crbug.com/1377000): this feature does not support origin trial // tokens provided in HTTP headers. Any tokens provided via HTTP header will // be dropped. Please inform developers they must embed the token in HTML. browser_process_read_write_access: { default: false, value_type: "bool", }, // is_protected_feature indicates whether the feature enablement state should // be tracked using a base::Protected value or just a regular bool // value. is_protected_feature: { default: false, value_type: "bool", } }, data: [ { name: "Accelerated2dCanvas", settable_from_internals: true, status: "stable", }, { name: "AcceleratedSmallCanvases", status: "stable", }, { name: "AccessibilityAriaVirtualContent", public: true, status: "experimental", base_feature: "none", }, { name: "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, }, { name: "AddressSpace", status: "experimental", implied_by: ["CorsRFC1918"], }, { // Interest Group JS API/runtimeflag. name: "AdInterestGroupAPI", status: "stable", origin_trial_feature_name: "AdInterestGroupAPI", implied_by: ["Fledge", "Parakeet"], public: true, }, // Fix for crbug.com/403358869 { name: "AdjustDOMOffsetToLayoutOffsetForSecureText", status: "stable", }, // Adjust the end of the next paragraph if the end position for the // paragraph is updated while moving the paragraph. See // https://crbug.com/329121649 { name: "AdjustEndOfNextParagraphIfMovedParagraphIsUpdated", status: "stable", }, { name: "AdTagging", public: true, status: "test", base_feature: "none", }, { name: "AIPageContentPaidContentAnnotation", status: "stable" }, { name: "AIPromptAPI", public: true, status: { "Win": "experimental", "Mac": "experimental", "Linux": "experimental", "default": "", }, origin_trial_feature_name: "AIPromptAPIMultimodalInput", origin_trial_os: ["win", "mac", "linux"], origin_trial_allows_third_party: true, implied_by: ["AIPromptAPIMultimodalInput"], }, { // Extension access to "AIPromptAPI". name: "AIPromptAPIForExtension", public: true, status: { "Win": "stable", "Mac": "stable", "Linux": "stable", "default": "", }, }, { name: "AIPromptAPIForWorkers", public: true, }, { name: "AIPromptAPIMultimodalInput", status: { "Win": "experimental", "Mac": "experimental", "Linux": "experimental", "default": "", }, origin_trial_feature_name: "AIPromptAPIMultimodalInput", origin_trial_os: ["win", "mac", "linux"], origin_trial_allows_third_party: true, base_feature_status: "enabled", copied_from_base_feature_if: "overridden", }, { // Gates access to the responseConstraint enhancement for "AIPromptAPI". // This feature alone does not expose any "AIPromptAPI" feature access. name: "AIPromptAPIStructuredOutput", status: "stable", }, { name: "AIProofreadingAPI", status: "test", }, { name: "AIRewriterAPI", status: { "Win": "experimental", "Mac": "experimental", "Linux": "experimental", "default": "", }, origin_trial_feature_name: "AIRewriterAPI", 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", "default": "", }, }, { name: "AISummarizationAPIForWorkers", public: true, }, { name: "AIWriterAPI", status: { "Win": "experimental", "Mac": "experimental", "Linux": "experimental", "default": "", }, origin_trial_feature_name: "AIWriterAPI", origin_trial_allows_third_party: true, base_feature_status: "enabled", copied_from_base_feature_if: "overridden", }, { name: "AIWriterAPIForWorkers", public: true, }, { name: "AlignZoomToCenter", status: "stable", }, { name: "AllowContentInitiatedDataUrlNavigations", base_feature: "none", }, // Fix for https://crbug.com/41238177. { name: "AllowCopyingEmptyLastTableCell", status: "stable", }, { name: "AllowPreloadingWithCSPMetaTag", status: "experimental", }, { name: "AllowSameSiteNoneCookiesInSandbox", base_feature: "none", // No status because this blink runtime feature doesn't work by itself. // It's controlled by the corresponding Chromium feature, // net::features::kAllowSameSiteNoneCookiesInSandbox, which needs to be // enabled to make the whole feature work. }, { // https://crbug.com/40681200 name: "AllowSkippingEditingBoundaryToMergeEnd", status: "stable", }, { name: "AllowSvgUseToReferenceExternalDocumentRoot", status: "stable", }, { name: "AllowSyntheticTimingForCanvasCapture", base_feature: "none", status: { "Mac": "stable", "default": "" } }, { name: "AllowURNsInIframes", base_feature: "none", }, { // 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/5083257285378048 name: "AnimationProgressAPI", status: "stable", }, { // https://drafts.csswg.org/web-animations-2/#triggers name: "AnimationTrigger", status: "experimental", }, { name: "AnimationWorklet", }, { name: "AnonymousIframe", status: "stable", }, { name: "AOMAriaRelationshipProperties", public: true, status: "stable", }, { name: "AOMAriaRelationshipPropertiesAriaOwns", public: true, status: "experimental", depends_on: ["AOMAriaRelationshipProperties"], }, { name: "AppTitle", status: "experimental", origin_trial_feature_name: "AppTitle", origin_trial_os: ["win", "mac", "linux", "chromeos"], base_feature: "WebAppEnableAppTitle", }, { name: "AriaActions", status: "experimental", }, { name: "AriaNotify", status: {"Android": "experimental", "Win": "experimental", "Mac": "experimental", "Linux": "experimental"}, implied_by: ["AriaNotifyV2"], }, { name: "AriaNotifyV2", status: {"Android": "test", "Win": "test", "Mac": "test", "Linux": "test"}, }, { name: "AriaRowColIndexText", status: "stable", }, { // When enabled, perform async IPCs from CookieJar::SetCookie to the // network service. name: "AsyncSetCookie", }, { name: "AttributeDirectionality", status: "stable", }, { name: "AttributionReporting", status: "stable", base_feature: "none", public: true, }, { name: "AudioContextInterruptedState", status: "stable", }, { name: "AudioContextOnError", status: "stable", }, { // AudioContext.playoutStats interface. // https://chromestatus.com/feature/5172818344148992 name: "AudioContextPlayoutStats", origin_trial_feature_name: "AudioContextPlayoutStats", status: "experimental", }, { name: "AudioContextSetSinkId", status: "stable", }, { name: "AudioOutputDevices", // Android support for switching audio output devices is not stable status: {"Android": "", "default": "stable"}, public: true, base_feature: "none" }, { name: "AudioVideoTracks", status: "experimental", }, { name: "AutoDarkMode", base_feature: "none", origin_trial_feature_name: "AutoDarkMode", }, { name: "AutomationControlled", base_feature: "none", public: true, settable_from_internals: true, }, { name: "AutoPictureInPictureVideoHeuristics", status: "experimental", }, { // If the start and end positions are the same in MoveParagraph, // there is no need to collapse the whitespace between them. // https://crbug.com/406053617 name: "AvoidNormalizingVisiblePositionsWhenStartEqualsEnd", status: "stable", }, // When enabled, clicking on canvas element will not update the selection. // See crbug.com/40130450. { name: "AvoidSelectionChangeOnCanvasClick", 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", }, { // Used to enable Blink side of features flags for Default Nav Transition. name: "BackForwardTransitions", }, { name: "BackgroundFetch", public: true, status: "stable", base_feature: "none", }, // A developer opt-out for background page freezing. { name: "BackgroundPageFreezeOptOut", base_feature: "none", origin_trial_feature_name: "BackgroundPageFreezeOptOut", origin_trial_type: "deprecation", }, { name: "BarcodeDetector", status: { // Built-in barcode detection APIs are only available from some // platforms. See //services/shape_detection. "Android": "stable", "ChromeOS": "stable", "Mac": "stable", "default": "test", }, }, { name: "BidiCaretAffinity", }, { name: "BlinkExtensionChromeOS", browser_process_read_write_access: true, }, { name: "BlinkExtensionChromeOSKiosk", depends_on: ["BlinkExtensionChromeOS"], browser_process_read_write_access: true, }, { name: "BlinkExtensionWebView", public: true, }, { name: "BlinkExtensionWebViewMediaIntegrity", public: true, }, { name: "BlinkLifecycleScriptForbidden", }, { name: "BlinkRuntimeCallStats", }, { name: "BlockingFocusWithoutUserActivation", status: "experimental", }, // crbug.com/1147998: Mouse and Pointer boundary event dispatch (i.e. dispatch // of enter, leave, over, out events) tracks DOM node removal to fix event // pairing on ancestor nodes. { name: "BoundaryEventDispatchTracksNodeRemoval", public: true, status: "experimental", }, { name: "BrowserInitiatedAutomaticPictureInPicture", public: true, status: "experimental", }, { name: "BrowserVerifiedUserActivationKeyboard", base_feature: "none", public: true, }, { name: "BrowserVerifiedUserActivationMouse", base_feature: "none", public: true, }, { name: "BufferedBytesConsumerLimitSize", status: "stable", }, { name: "BuiltInAIAPI", status: "experimental", base_feature_status: "enabled", // An OT feature name is required to satisfy `implied_by` build checks. // The feature reuses AIPromptAPIMultimodalInput, but any origin trial // features in the `implied_by` list will enable this feature as well. origin_trial_feature_name: "AIPromptAPIMultimodalInput", copied_from_base_feature_if: "overridden", implied_by: [ "AIPromptAPI", "AIPromptAPIMultimodalInput", "AIRewriterAPI", "AISummarizationAPI", "AIWriterAPI", "LanguageDetectionAPI", "TranslationAPI", "AIProofreadingAPI", ] }, { // Bypasses the enforcement of the Page Embedded Permission Control // security checks. This flag is disabled by default and should only be // enabled in automated tests in order to allow them to avoid needing to // wait until the PEPC is validated and also to use JS-initiated clicks. name: "BypassPepcSecurityForTesting", }, { name: "CacheStorageCodeCacheHint", origin_trial_feature_name: "CacheStorageCodeCacheHint", status: "experimental", base_feature: "none", }, { name: "CallExitNodeWithoutLayoutObject", status: "stable", }, { name: "Canvas2dCanvasFilter", status: "experimental", }, { name: "Canvas2dGPUTransfer", status: "experimental", }, { name: "Canvas2dImageChromium", base_feature: "none", public: true, }, { name: "Canvas2dLayers", }, { name: "Canvas2dLayersWithOptions", status: "experimental", depends_on: ["Canvas2dLayers"], }, { name: "Canvas2dMesh", origin_trial_feature_name: "Canvas2dMesh", origin_trial_allows_third_party: true, status: "test", }, { // https://github.com/WICG/html-in-canvas/blob/main/README.md name: "CanvasDrawElement", status: "test", }, { name: "CanvasFloatingPoint", status: "stable", }, { // https://crbug.com/394052224 name: "CanvasGradientCSSColor4", status: "experimental", }, { name: "CanvasHDR", status: "experimental", }, { // No status because this blink runtime feature doesn't work by itself. // It's controlled by the corresponding Chromium feature, // fingerprinting_protection_interventions::features::kCanvasNoise through // modified_runtime_features and setting its status in the browser // process. name: "CanvasInterventions", browser_process_read_write_access: true, base_feature: "none", }, { // https://chromestatus.com/feature/5066778773028864 name: "CanvasTextLang", status: "stable", }, { // crbug.com/389726691. name: "CanvasTextNg", origin_trial_feature_name: "CanvasTextNg", status: "stable", }, { // Kill switch for https://crbug.com/330506337. name: "CanvasUsesArcPaintOp", status: "stable", }, { name: "CapabilityDelegationDisplayCaptureRequest", status: "experimental", }, { name: "CaptureController", status: {"Android": "", "default": "stable"}, }, { // TODO(crbug.com/1444712): Before enabling that flag by default, // make sure MouseCursorOverlayController does not transmit mouse // events to a CaptureController that don't have any // capturedmousechange listener attached to it. // See https://github.com/screen-share/mouse-events/issues/14 name: "CapturedMouseEvents", "depends_on": ["CaptureController"], status: {"Android": "", "default": "test"}, }, { name: "CapturedSurfaceControl", status: {"Android": "", "default": "stable"} }, { name: "CapturedSurfaceResolution", status: { "Win": "stable", "Mac": "stable", "ChromeOS": "stable", "default": ""}, }, { name: "CaptureHandle", depends_on: ["GetDisplayMedia"], status: {"Android": "", "default": "stable"}, }, { // https://www.w3.org/TR/cssom-view-1/#dom-document-caretpositionfrompoint name: "CaretPositionFromPoint", status: "stable", }, { // Changes the caret's affinity to upstream, preventing spaces // from appearing in the previous line when typing at the start // of a wrapped line. See https://crbug.com/40677155 name: "CaretWithTextAffinityUpstream", status: "stable", }, { name: "CascadedAfterChangeStyle", status: "stable", }, { // Kill switch for changes to RenderFrameMetadataObserverImpl in connection with Engagement // Signals. See https://crrev.com/c/4544201 and https://crbug.com/1458640. name: "CCTNewRFMPushBehavior", base_feature_status: "enabled", }, { // If focus is not at canonical position then spellcheck should be deactivated. // crbug.com/396485529 name: "CheckForCanonicalPositionInIdleSpellCheck", status: "stable", }, { name: "CheckVisibilityExtraProperties", status: "stable", }, // This flag shifts the timing of clearing the popover invoker so that it // happens after the `beforetoggle` event is fired. This is something of a // bug fix: see the spec discussion at // https://github.com/whatwg/html/issues/11246#issuecomment-2860876897. // This is enabled by default, and is a kill switch. It shipped in M138, // and can be removed in M140. { name: "ClearPopoverInvokerAfterBeforeToggle", status: "stable", }, { // Allows top-level sites to restrict collection of high-entropy UA client // hints (from 3Ps, or itself) via the getHighEntropyValues API. // crbug.com/385161047 name: "ClientHintUAHighEntropyValuesPermissionPolicy", status: "test", }, { // Enables clipboardchange event API for listening for changes to the // system clipboard // https://chromestatus.com/feature/5085102657503232 name: "ClipboardChangeEvent", base_feature: "none", }, { // Enables the API for getting a unique token of the system clipboard's // current state. // https://chromestatus.com/feature/5124993439236096 name: "ClipboardContentsId", status: "test", }, // This ensures that clipboard event fires on a target node which is // focused in case no visible selection is present. // crbug.com/40735783 { name: "ClipboardEventTargetCanBeFocusedElement", status: "stable", }, { // Support ClipboardItemData of Promise type according to spec // https://w3c.github.io/clipboard-apis/#typedefdef-clipboarditemdata name: "ClipboardItemWithDOMStringSupport", status: "stable", }, { // Enables the ability to reset the clipboard snapshot when clipboard write // operations are performed. This feature ensures that stale clipboard data // is cleared and a fresh snapshot is created when necessary. // See crbug.com/388081043 name: "ClipboardSnapshotResetOnWrite", status: "stable", }, { name: "ClipElementVisibleBoundsInLocalRoot", status: "stable", }, { name: "ClipPathNestedRasterOptimization", status: "stable", }, { // Avoid queuing a task to fire a selectionchange event when there is already a task scheduled // to do that for the target according to the new spec: // https://w3c.github.io/selection-api/#scheduling-selectionhange-event name: "CoalesceSelectionchangeEvent", status: "stable", }, { name: "CoepReflection", status: "test", }, { name: "CollapseZeroWidthSpaceWhenReuseItem", status: "stable", }, { // Killswitch for https://crbug.com/414827239 name: "ColorInputDatalistLooksNormal", status: "stable", }, { name: "CompositeBGColorAnimation", public: true, status: "experimental", base_feature: "none", }, { name: "CompositeBoxShadowAnimation", }, { name: "CompositeClipPathAnimation", status: "experimental", public: true, }, { name: "CompositedAnimationsCancelledAsynchronously", status: "stable" }, { name: "CompositedSelectionUpdate", public: true, status: {"Android": "stable"}, base_feature: "none", }, { name: "CompositingDecisionAtAnimationPhaseBoundaries" }, { name: "CompositionForegroundMarkers", status: { "Android": "stable", "default": "", } }, { name: "CompressionDictionaryTransport", base_feature: "none", public: true, }, { name: "CompressionDictionaryTransportBackend", base_feature: "none", public: true, }, { name: "ComputedAccessibilityInfo", status: "experimental", }, { name: "ComputeInsertionPositionBasedOnAnchorType", status: "stable", }, { name: "ComputePressure", status: { "Android": "", "default": "stable", } }, { name: "ComputePressureOwnContributionEstimate", status: { "Android": "", "default": "experimental", } }, { name: "ConsiderFullChildNodeContentForListify", status: "stable", }, { name: "ContactsManager", status: {"Android": "stable", "default": "test"}, }, { name: "ContactsManagerExtraProperties", status: {"Android": "stable", "default": "test"}, }, { name: "ContainerTiming", status: "experimental", }, { name: "ContainerTypeNoLayoutContainment", status: "stable", }, { name: "ContentIndex", status: {"Android": "stable", "default": "experimental"}, }, { name: "ContextMenu", status: "experimental", }, { name: "ContinueEventTimingRecordingWhenBufferIsFull", status: "stable", }, { // 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: "experimental", base_feature_status: "disabled", }, { name: "CookieDeprecationFacilitatedTesting", base_feature: "none", }, { name: "CoopRestrictProperties", origin_trial_feature_name: "CoopRestrictProperties", base_feature: "none", }, { // Corrects the handling of
elements nested within