{ | |
// See third_party/blink/renderer/platform/RuntimeEnabledFeatures.md | |
// | |
// This list is used to generate runtime_enabled_features.h/cc which contains | |
// a class that stores static enablers for all experimental features. | |
parameters: { | |
// Each feature can be assigned a "status". The "status" can be either | |
// one of the values in the |valid_values| list or a dictionary of | |
// the platforms listed in |valid_keys| to |valid_values|. | |
// Use "default" as the key if you want to specify the status of | |
// the platforms other than the ones declared in the dictionary. | |
// ** Omitting "default" means the feature is not enabled on | |
// the platforms not listed in the status dictionary | |
// | |
// Definition of each status: | |
// * status=stable: Enable this in all Blink configurations. We are | |
// committed to these APIs indefinitely. | |
// * status=experimental: In-progress features, Web Developers might play | |
// with, but are not on by default in stable. These features may be | |
// turned on using the "Experimental Web Platform features" flag in | |
// chrome://flags/#enable-experimental-web-platform-features. | |
// * status=test: Enabled in ContentShell for testing, otherwise off. | |
// Features without a status are not enabled anywhere by default. | |
// | |
// Example of the dictionary value use: | |
// { | |
// name: "ExampleFeature", | |
// status: {"Android": "stable", "Win": "experimental"}, | |
// } | |
// "ExampleFeature" will be stable on Android/WebView/WebLayer, experimental | |
// on Windows and not enabled on any other platform. | |
// | |
// Note that the Android status key implies Chrome for Android, WebView and | |
// WebLayer. | |
// | |
// "stable" features listed here should be rare, as anything which we've | |
// shipped stable can have its runtime flag removed soon after. | |
status: { | |
valid_values: ["stable", "experimental", "test"], | |
valid_keys: ["Android", "Win", "ChromeOS_Ash", "Mac", "Linux", "iOS"] | |
}, | |
// "implied_by" or "depends_on" specifies relationship to other features: | |
// * implied_by: ["feature1","feature2",...] | |
// The feature is automatically enabled if any implied_by features is | |
// enabled. To effectively disable the feature, you must disable the | |
// feature and all the implied_by features. | |
// * depends_on: ["feature1","feature2",...] | |
// The feature can be enabled only if all depends_on features are enabled. | |
// Only one of "implied_by" and "depends_on" can be specified. | |
implied_by: { | |
default: [], | |
valid_type: "list", | |
}, | |
// *DO NOT* specify features that depend on origin trial features. | |
// It is NOT supported. As a workaround, you can either specify the same | |
// |origin_trial_feature_name| for the feature or add the OT feature to | |
// the |implied_by| list. | |
// TODO(https://crbug.com/954679): Add support for origin trial features in 'depends_on' list | |
depends_on: { | |
default: [], | |
valid_type: "list", | |
}, | |
// origin_trial_feature_name: "FEATURE_NAME" is used to integrate the | |
// feature with the Origin Trials framework. The framework allows the | |
// feature to be enabled at runtime on a per-page basis through a signed | |
// token for the corresponding feature name. Declaring the | |
// origin_trial_feature_name will modify the generation of the static | |
// methods in runtime_enabled_features.h/cpp -- the no-parameter version | |
// will not be generated, so all callers have to use the version that takes | |
// a const FeatureContext* argument. | |
origin_trial_feature_name: { | |
}, | |
// origin_trial_os specifies the platforms where the trial is available. | |
// The default is empty, meaning all platforms. | |
origin_trial_os: { | |
default: [], | |
valid_type: "list", | |
}, | |
// origin_trial_type specifies the unique type of the trial, when not the | |
// usual trial for a new experimental feature. | |
origin_trial_type: { | |
default: "", | |
valid_type: "str", | |
valid_values: ["deprecation", "intervention", ""], | |
}, | |
// origin_trial_allows_insecure specifies whether the trial can be enabled | |
// in an insecure context, with default being false. This can only be set | |
// to true for a "deprecation" type trial. | |
origin_trial_allows_insecure: { | |
valid_type: "bool", | |
}, | |
// origin_trial_allows_third_party specifies whether the trial can be enabled | |
// from third party origins, with default being false. | |
origin_trial_allows_third_party: { | |
valid_type: "bool", | |
}, | |
// settable_from_internals specifies whether a feature can be set from | |
// internals.runtimeFlags, with the default being false. | |
settable_from_internals: { | |
valid_type: "bool", | |
}, | |
// public specifies whether a feature can be accessed via | |
// third_party/blink/public/platform/web_runtime_features.h with dedicated | |
// methods. The default is false. This should be rare because | |
// WebRuntimeFeatures::EnableFeatureFromString() works in most cases. | |
public: { | |
valid_type: "bool", | |
}, | |
// Feature policy IDL extended attribute (see crrev.com/2247923004). | |
feature_policy: { | |
}, | |
// The string name of a base::Feature. The C++ variable name in | |
// blink::features is built with this string by prepending 'k'. | |
// As long as this field isn't "none", a base::Feature is automatically | |
// generated in features_generated.{h,cc}. By default the "name" field | |
// is used for the feature name, but can be overridden here. | |
// | |
// The default value of the base::Feature instance is: | |
// base::FEATURE_ENABLED_BY_DEFAULT if 'status' field is 'stable", and | |
// base::FEATURE_DISABLED_BY_DEFAULT otherwise. | |
// It can be overridden by 'base_feature_status' field. | |
// | |
// If the flag should be associated with a feature not in blink::features, | |
// we need to specify `base_feature: "none"` and map the features in | |
// content/child/runtime_features.cc. `base_feature: "none"` is strongly | |
// discouraged if the feature doesn't have an associated base feature | |
// because the feature would lack a killswitch controllable via finch. | |
base_feature: { | |
valid_type: "str", | |
default: "", | |
}, | |
// Specify the default value of the base::Feature instance. This field | |
// works only if base_feature is not "none". | |
// If the field is missing or "", the default value depends on the 'status' | |
// field. See the comment above. | |
// "disabled" sets base::FEATURE_DISABLED_BY_DEFAULT, and "enabled" sets | |
// base::FEATURE_ENABLED_BY_DEFAULT. | |
base_feature_status: { | |
valid_type: "str", | |
valid_values: ["", "disabled", "enabled"], | |
default: "", | |
}, | |
// Specify how the flag value is updated from the base::Feature value. This | |
// field is used only if base_feature is not empty. | |
// | |
// * "enabled_or_overridden" | |
// - If the base::Feature status is overridden to the enabled or disabled | |
// state by field trial or command line, set Blink feature to the state | |
// of the base::Feature. Note: "Override to Default" doesn't affect the | |
// Blink feature. | |
// - Otherwise if the base::Feature is enabled, enable the Blink feature. | |
// - Otherwise no change. | |
// | |
// * "overridden" | |
// Enables the Blink feature when the base::Feature status is overridden | |
// to the enabled or disabled state by field trial or command line. | |
// Otherwise no change. Its difference from "enabled_or_overridden" is | |
// that the Blink feature isn't affected by the default state of the | |
// base::Feature. Note: "Override to Default" deosn't affect the Blink | |
// feature. | |
// | |
// This is useful for Blink origin trial features especially those | |
// implemented in both Chromium and Blink. As origin trial only controls | |
// the Blink features, for now we require the base::Feature to be enabled | |
// by default, but we don't want the default enabled status affect the | |
// Blink feature. See also https://crbug.com/1048656#c10. | |
// This can also be used for features that are enabled by default in | |
// Chromium but not in Blink on all platforms and we want to use the Blink | |
// status. However, we would prefer consistent Chromium and Blink status | |
// to this. | |
copied_from_base_feature_if: { | |
valid_type: "str", | |
valid_values: ["enabled_or_overridden", "overridden"], | |
default: "enabled_or_overridden", | |
}, | |
// browser_process_read_access indicates the runtime feature state should be | |
// readable in the browserprocess via RuntimeFeatureStateReadContext. | |
// TODO(crbug.com/1377000): this feature does not support origin trial | |
// tokens provided in HTTP headers. Any tokens provided via HTTP header will | |
// be dropped. | |
browser_process_read_access: { | |
default: false, | |
value_type: "bool", | |
}, | |
// browser_process_read_write_access indicates the runtime feature state | |
// should be writable in the browserprocess via RuntimeFeatureStateContext. | |
// TODO(crbug.com/1377000): this feature does not support origin trial | |
// tokens provided in HTTP headers. Any tokens provided via HTTP header will | |
// be dropped. | |
browser_process_read_write_access: { | |
default: false, | |
value_type: "bool", | |
}, | |
// is_protected_feature indicates whether the feature enablement state should | |
// be tracked using a base::Protected<bool> 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, | |
}, | |
// 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: "AIPromptAPI", | |
public: true, | |
status: "test", | |
implied_by: ["AIPromptAPIForWebPlatform", "AIPromptAPIMultimodalInput"], | |
}, | |
{ | |
name: "AIPromptAPIForExtension", | |
public: true, | |
origin_trial_feature_name: "AIPromptAPIForExtension", | |
status: "test", | |
base_feature_status: "enabled", | |
copied_from_base_feature_if: "overridden", | |
}, | |
{ | |
name: "AIPromptAPIForWebPlatform", | |
public: true, | |
status: "test", | |
}, | |
{ | |
name: "AIPromptAPIMultimodalInput", | |
public: true, | |
status: "test", | |
}, | |
{ | |
name: "AIRewriterAPI", | |
public: true, | |
status: "test", | |
}, | |
{ | |
name: "AISummarizationAPI", | |
public: true, | |
status: "test", | |
origin_trial_feature_name: "AISummarizationAPI", | |
base_feature_status: "enabled", | |
copied_from_base_feature_if: "overridden", | |
}, | |
{ | |
name: "AIWriterAPI", | |
public: true, | |
status: "test", | |
}, | |
{ | |
name: "AllowContentInitiatedDataUrlNavigations", | |
base_feature: "none", | |
}, | |
// Fix for https://crbug.com/41238177. | |
{ | |
name: "AllowCopyingEmptyLastTableCell", | |
status: "stable", | |
}, | |
// If enabled, blink will not set the autofill state of a field after JS | |
// modifies its value, and will instead leave it to the WebAutofillClient to | |
// take care of the state setting. | |
// This feature should be enabled with | |
// autofill::features::kAutofillFixCachingOnJavaScriptChanges. | |
{ | |
name: "AllowJavaScriptToResetAutofillState", | |
status: "experimental", | |
}, | |
{ | |
name: "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: "AllowSyntheticTimingForCanvasCapture", | |
base_feature: "none", | |
status: { | |
"Mac": "stable", | |
"default": "" | |
} | |
}, | |
{ | |
name: "AllowURNsInIframes", | |
base_feature: "none", | |
}, | |
{ | |
name: "AndroidDownloadableFontsMatching", | |
base_feature: "none", | |
public: true, | |
}, | |
{ | |
// https://chromestatus.com/feature/5083257285378048 | |
name: "AnimationProgressAPI", | |
status: "stable", | |
}, | |
{ | |
name: "AnimationWorklet", | |
}, | |
{ | |
name: "AnonymousIframe", | |
status: "stable", | |
}, | |
{ | |
name: "AOMAriaRelationshipProperties", | |
public: true, | |
status: "experimental", | |
}, | |
{ | |
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: "test", | |
}, | |
{ | |
name: "AriaRowColIndexText", | |
status: "stable", | |
}, | |
// See https://crbug.com/40150299, | |
// https://github.com/whatwg/dom/issues/1255, and | |
// https://github.com/whatwg/dom/pull/1307. | |
{ | |
name: "AtomicMoveAPI", | |
status: "stable", | |
}, | |
// This flag specifically guards live Range (and by extension, selection) | |
// preservation for atomic move (`moveBefore()`). This is not part of the | |
// launching proposal, per discussion in | |
// https://github.com/whatwg/dom/pull/1307, but because it could come later | |
// and was already mostly implemented, we flag-guard the implementation for | |
// later use. | |
{ | |
name: "AtomicMoveRangePreservation", | |
}, | |
{ | |
name: "AttributionReporting", | |
status: "stable", | |
base_feature: "none", | |
public: true, | |
}, | |
{ | |
name: "AudioContextInterruptedState", | |
status: "test", | |
}, | |
{ | |
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 does not yet support switching of audio output devices | |
status: {"Android": "", "default": "stable"}, | |
}, | |
{ | |
name: "AudioVideoTracks", | |
status: "experimental", | |
}, | |
// Killswitch. | |
{ | |
name: "AuraScrollbarUsesNinePatchTrack", | |
status: "stable", | |
}, | |
{ | |
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", | |
}, | |
// 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: "BackForwardCacheUpdateNotRestoredReasonsName", | |
status: "experimental", | |
}, | |
{ | |
// 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_Ash": "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: "BlinkExtensionDiagnostics", | |
depends_on: ["BlinkExtensionChromeOS"], | |
browser_process_read_write_access: true, | |
base_feature: "none", | |
}, | |
{ | |
name: "BlinkExtensionWebView", | |
public: true, | |
}, | |
{ | |
name: "BlinkExtensionWebViewMediaIntegrity", | |
public: true, | |
}, | |
{ | |
name: "BlinkLifecycleScriptForbidden", | |
}, | |
{ | |
name: "BlinkRuntimeCallStats", | |
}, | |
{ | |
name: "BlockingFocusWithoutUserActivation", | |
status: "experimental", | |
}, | |
// crbug.com/1147998: Mouse and Pointer boundary event dispatch (i.e. dispatch | |
// of enter, leave, over, out events) tracks DOM node removal to fix event | |
// pairing on ancestor nodes. | |
{ | |
name: "BoundaryEventDispatchTracksNodeRemoval", | |
public: true, | |
status: "experimental", | |
}, | |
{ | |
// Full support for box-decoration-break, including block fragmentation, | |
// not just -webkit-box-decoration-break with inlines at line breaks. | |
name: "BoxDecorationBreak", | |
status: "stable", | |
}, | |
{ | |
name: "BrowserVerifiedUserActivationKeyboard", | |
base_feature: "none", | |
public: true, | |
}, | |
{ | |
name: "BrowserVerifiedUserActivationMouse", | |
base_feature: "none", | |
public: true, | |
}, | |
{ | |
name: "BufferedBytesConsumerLimitSize", | |
status: "stable", | |
}, | |
{ | |
name: "BuiltInAIAPI", | |
status: "test", | |
base_feature_status: "enabled", | |
// A origin trial is feature is required for the build to success. | |
// The feature reuses the AISummarizationAPI. Any other origin trial | |
// features in the `implied_by` list will enable this feature as well. | |
origin_trial_feature_name: "AISummarizationAPI", | |
copied_from_base_feature_if: "overridden", | |
implied_by: [ | |
"AIPromptAPI", | |
"AIRewriterAPI", | |
"AISummarizationAPI", | |
"AIWriterAPI", | |
"LanguageDetectionAPI", | |
"TranslationAPIEntryPoint", | |
"TranslationAPI", | |
] | |
}, | |
{ | |
// crbug.com/40681980 | |
name: "ButtonNoAlignItems", | |
status: "stable", | |
}, | |
{ | |
// Bypasses the enforcement of the Page Embedded Permission Control | |
// security checks. This flag is disabled by default and should only be | |
// enabled in automated tests in order to allow them to avoid needing to | |
// wait until the PEPC is validated and also to use JS-initiated clicks. | |
name: "BypassPepcSecurityForTesting", | |
}, | |
{ | |
name: "CacheStorageCodeCacheHint", | |
origin_trial_feature_name: "CacheStorageCodeCacheHint", | |
status: "experimental", | |
base_feature: "none", | |
}, | |
{ | |
// Increase disabled color on calendar picker's month-popup-button to 0.9. | |
// Enabled by default on M132. Remove flag on or after M135. | |
name: "CalendarPickerMonthPopupButtonDisabledColor", | |
status: "stable", | |
}, | |
{ | |
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", | |
}, | |
{ | |
// This is a kill switch for shaping directly in TextMetrics when | |
// ctx.measureText() is called. Disabled after speedometer regression: | |
// https://crbug.com/362784008. | |
name: "Canvas2dTextMetricsShaping", | |
status: "experimental", | |
}, | |
{ | |
name: "CanvasFloatingPoint", | |
status: "experimental", | |
}, | |
{ | |
name: "CanvasHDR", | |
status: "experimental", | |
}, | |
{ | |
// https://crbug.com/377325952 | |
name: "CanvasInterventions", | |
browser_process_read_write_access: true, | |
}, | |
{ | |
// https://github.com/Igalia/explainers/blob/main/canvas-formatted-text/html-in-canvas.md | |
name: "CanvasPlaceElement", | |
status: "experimental", | |
}, | |
{ | |
// Kill switch for https://crbug.com/330506337. | |
name: "CanvasUsesArcPaintOp", | |
status: "stable", | |
}, | |
{ | |
name: "CapabilityDelegationDisplayCaptureRequest", | |
status: "experimental", | |
}, | |
{ | |
name: "CaptureController", | |
status: {"Android": "", "default": "stable"}, | |
}, | |
{ | |
// TODO(crbug.com/1444712): Before enabling that flag by default, | |
// make sure MouseCursorOverlayController does not transmit mouse | |
// events to a CaptureController that don't have any | |
// capturedmousechange listener attached to it. | |
// See https://github.com/screen-share/mouse-events/issues/14 | |
name: "CapturedMouseEvents", | |
"depends_on": ["CaptureController"], | |
status: {"Android": "", "default": "test"}, | |
}, | |
{ | |
name: "CapturedSurfaceControl", | |
origin_trial_feature_name: "CapturedSurfaceControl", | |
status: {"Android": "", "default": "experimental"}, | |
}, | |
{ | |
name: "CaptureHandle", | |
depends_on: ["GetDisplayMedia"], | |
status: {"Android": "", "default": "stable"}, | |
}, | |
{ | |
// https://www.w3.org/TR/cssom-view-1/#dom-document-caretpositionfrompoint | |
name: "CaretPositionFromPoint", | |
status: "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", | |
}, | |
{ | |
// crbug.com/40702380 | |
name: "CheckIfHighestRootContainsPositionAnchorNode", | |
status: "stable", | |
}, | |
{ | |
name: "CheckVisibilityExtraProperties", | |
status: "stable", | |
}, | |
// crbug.com/40851596: Send click to the capture pointer target instead of | |
// the common ancestor of pointerdown and pointerup targets. | |
{ | |
name: "ClickToCapturedPointer", | |
status: "experimental", | |
}, | |
{ | |
// 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", | |
}, | |
// 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<DOMString> type according to spec | |
// https://w3c.github.io/clipboard-apis/#typedefdef-clipboarditemdata | |
name: "ClipboardItemWithDOMStringSupport", | |
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: "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: "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: "ConcurrentViewTransitionsSPA", | |
status: "stable", | |
}, | |
{ | |
name: "ConsiderFullChildNodeContentForListify", | |
status: "stable", | |
}, | |
{ | |
name: "ContactsManager", | |
status: {"Android": "stable", "default": "test"}, | |
}, | |
{ | |
name: "ContactsManagerExtraProperties", | |
status: {"Android": "stable", "default": "test"}, | |
}, | |
{ | |
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 <form> elements nested within <template> tags | |
// in HTML parsing. See https://crbug.com/352896478 for details. | |
name: "CorrectTemplateFormParsing", | |
status: "experimental" | |
}, | |
{ | |
name: "CorsRFC1918", | |
}, | |
{ | |
// Allow WebAuthn relying parties to report information about existing | |
// credentials back to credential storage providers. | |
// Enabled by default on M132. Remove flag on or after M135. | |
name: "CredentialManagerReport", | |
status: "stable", | |
}, | |
{ | |
name: "CSPReportHash", | |
status: "stable", | |
}, | |
{ | |
// The AccentColor And AccentColorText CSS system color keywords | |
name: "CSSAccentColorKeyword", | |
status: "experimental", | |
}, | |
{ | |
// CSS attr() function that accepts not only string types | |
// and can be used in all properties. | |
// https://drafts.csswg.org/css-values-5/#attr-notation | |
name: "CSSAdvancedAttrFunction", | |
status: "stable", | |
}, | |
{ | |
// Let the visual position of the default anchor affect IMCB for | |
// position-area. | |
// This means taking scroll offset into account, if an element is aligned | |
// to the default anchor at one edge, and at the actual containing block | |
// at the other edge. | |
name: "CSSAnchorPositionAreaVisualPosition", | |
status: "experimental", | |
}, | |
{ | |
// Support for the anchor-scope property. | |
// https://drafts.csswg.org/css-anchor-position-1/#anchor-scope | |
name: "CSSAnchorScope", | |
status: "stable", | |
}, | |
{ | |
// Support anchor-size() values in inset and margin properties. | |
name: "CSSAnchorSizeInsetsMargins", | |
status: "stable", | |
}, | |
{ | |
// https://github.com/w3c/csswg-drafts/issues/8942 | |
name: "CSSAnimationTrigger", | |
status: "test", | |
}, | |
{ | |
name: "CSSAnimationTriggerRange", | |
status: "test", | |
implied_by: ["CSSAnimationTrigger"], | |
}, | |
{ | |
name: "CSSAnimationTriggerTimeline", | |
status: "test", | |
implied_by: ["CSSAnimationTrigger"], | |
}, | |
{ | |
name: "CSSAnimationTriggerType", | |
status: "test", | |
implied_by: ["CSSAnimationTrigger"], | |
}, | |
{ | |
// Support for <string> syntax in @property | |
// https://drafts.css-houdini.org/css-properties-values-api-1/#syntax-strings | |
name: "CSSAtPropertyStringSyntax", | |
status: "stable", | |
}, | |
{ | |
// 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://chromestatus.com/feature/5125388091260928 | |
name: "CSSBackgroundClipUnprefix", | |
status: "stable", | |
}, | |
{ | |
// Support CSS Values Level 4 calc simplification and serialization | |
// as specified in the specs below. | |
// https://drafts.csswg.org/css-values-4/#calc-simplification | |
// https://drafts.csswg.org/css-values-4/#calc-serialize | |
name: "CSSCalcSimplificationAndSerialization", | |
}, | |
{ | |
// https://chromestatus.com/feature/5082469066604544 | |
name: "CSSCaretAnimation", | |
status: "experimental", | |
}, | |
{ | |
// Support case-sensitive attribute selector modifier | |
// https://drafts.csswg.org/selectors-4/#attribute-case | |
name: "CSSCaseSensitiveSelector", | |
status: "test", | |
}, | |
{ | |
name: "CSSColorContrast", | |
status: "experimental", | |
}, | |
{ | |
name: "CSSColorTypedOM", | |
status: "experimental", | |
}, | |
{ | |
name: "CSSComputedStyleFullPseudoElementParser", | |
status: "stable", | |
}, | |
{ | |
// https://drafts.csswg.org/css-borders-4/#corner-shaping | |
name: "CSSCornerShape", | |
status: "experimental", | |
}, | |
{ | |
// 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: "CSSDynamicRangeLimit", | |
status: "stable", | |
}, | |
{ | |
// Include custom properties in CSSComputedStyleDeclaration::item/length. | |
// https://crbug.com/949807 | |
name: "CSSEnumeratedCustomProperties", | |
status: "test", | |
}, | |
{ | |
name: "CSSExponentialFunctions", | |
status: "stable", | |
}, | |
{ | |
name: "CSSFontSizeAdjust", | |
status: "stable", | |
}, | |
{ | |
name: "CSSFunctions", | |
status: "test", | |
}, | |
{ | |
// https://chromestatus.com/feature/5157805733183488 | |
name: "CSSGapDecoration", | |
}, | |
{ | |
// 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", | |
}, | |
{ | |
// Support making elements inert through the interactivity property. | |
name: "CSSInert", | |
status: "experimental", | |
}, | |
{ | |
// CSS if() function for custom properties. Supports only style | |
// queries in conditions. | |
// https://github.com/w3c/csswg-drafts/issues/10064. | |
name: "CSSInlineIfForStyleQueries", | |
status: "test", | |
}, | |
{ | |
// https://chromestatus.com/feature/6289894144212992 | |
name: "CSSKeyframesRuleLength", | |
status: "stable", | |
}, | |
{ | |
name: "CSSLayoutAPI", | |
status: "experimental", | |
}, | |
{ | |
name: "CSSLineClamp", | |
status: "experimental", | |
}, | |
{ | |
name: "CSSLineClampLineBreakingEllipsis", | |
depends_on: ["CSSLineClamp"], | |
}, | |
{ | |
name: "CSSLogicalOverflow", | |
status: "test", | |
}, | |
{ | |
name: "CSSMarkerNestedPseudoElement", | |
status: "experimental", | |
}, | |
{ | |
name: "CSSMasonryLayout", | |
status: "test", | |
}, | |
{ | |
name: "CSSMixins", | |
status: "test", | |
}, | |
{ | |
name: "CSSNestedPseudoElements", | |
status: "experimental", | |
}, | |
{ | |
name: "CSSPaintAPIArguments", | |
status: "experimental", | |
}, | |
{ | |
// Ignore the stylesheet encoding when parsing URLs, always using UTF-8. | |
// See crbug.com/1485525. | |
name: "CSSParserIgnoreCharsetForURLs", | |
}, | |
{ | |
name: "CSSPositionStickyStaticScrollPosition", | |
status: "test", | |
}, | |
// https://drafts.csswg.org/css-values-5/#progress | |
// progress(), media-progress(), container-progress() | |
{ | |
name: "CSSProgressNotation", | |
status: "experimental", | |
}, | |
{ | |
// For ::column pseudo element for fragment styling. | |
// https://github.com/flackr/carousel/blob/main/fragmentation/README.md | |
name: "CSSPseudoColumn", | |
status: "experimental", | |
}, | |
{ | |
// Enables the :has-slotted pseudo-selector. | |
// https://chromestatus.com/feature/5134941143433216 | |
name: "CSSPseudoHasSlotted", | |
status: "experimental", | |
}, | |
{ | |
// Enables the :open pseudo-selector. | |
// https://chromestatus.com/feature/5085419215781888 | |
name: "CSSPseudoOpen", | |
status: "stable", | |
}, | |
{ | |
// When an audio, video, or similar resource is "playing" | |
// or "paused". | |
// https://www.w3.org/TR/selectors-4/#video-state | |
name: "CSSPseudoPlayingPaused", | |
status: "test", | |
}, | |
{ | |
// For ::scroll-up-button and ::scroll-down-button pseudo elements for Carousel. | |
// https://github.com/flackr/carousel/tree/main/scroll-button | |
name: "CSSPseudoScrollButtons", | |
status: "experimental", | |
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: "experimental", | |
depends_on: ["PseudoElementsFocusable"], | |
}, | |
{ | |
// TODO(crbug.com/40932006): Non-standard 'reading-flow' keyword | |
// for reading of grid and flexbox items. | |
// https://drafts.csswg.org/css-display-4/#reading-flow | |
name: "CSSReadingFlow", | |
status: "experimental", | |
}, | |
{ | |
// https://drafts.csswg.org/css-color-5/#relative-colors | |
name: "CSSRelativeColor", | |
status: "stable", | |
}, | |
{ | |
// crbug.com/359616070 | |
name: "CSSRelativeColorLateResolveAlways", | |
status: "experimental", | |
}, | |
{ | |
// crbug.com/365818844 | |
name: "CSSRelativeColorPreserveNone", | |
status: "stable", | |
}, | |
{ | |
// crbug.com/325309578 | |
name: "CSSRelativeColorSupportsCurrentcolor", | |
status: "stable", | |
}, | |
{ | |
// Non-standard 'auto' keyword for the CSS resize property. Used for | |
// selectively enable resize corner for textarea via UA stylesheet, but | |
// unintentionally exposed to author sheets. UA rule is now using | |
// -internal-textarea-auto instead. | |
name: "CSSResizeAuto", | |
status: "stable", | |
}, | |
{ | |
// Enables env(safe-area-max-inset-*). | |
// https://github.com/w3c/csswg-drafts/issues/11019 | |
name: "CSSSafeAreaMaxInset" | |
}, | |
{ | |
// The "@import scope(...)" syntax. | |
// https://github.com/w3c/csswg-drafts/issues/7348 | |
name: "CSSScopeImport", | |
status: "experimental", | |
}, | |
{ | |
name: "CSSScrollableContainerQueries", | |
status: "stable", | |
}, | |
{ | |
// https://drafts.csswg.org/css-scroll-snap-2#scroll-initial-target | |
name: "CSSScrollInitialTarget", | |
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/#snap-events | |
name: "CSSScrollSnapEvents", | |
status: "stable", | |
implied_by: ["CSSScrollSnapChangeEvent", "CSSScrollSnapChangingEvent"], | |
}, | |
{ | |
// https://drafts.csswg.org/css-scroll-snap-2#scroll-start | |
name: "CSSScrollStart", | |
status: "test", | |
}, | |
{ | |
// Flag for supporting scroll-state() and container-type: scroll-state | |
// Implied by supporting at least one of the scroll-state query features. | |
name: "CSSScrollStateContainerQueries", | |
implied_by: ["CSSStickyContainerQueries", "CSSSnapContainerQueries", "CSSScrollableContainerQueries"], | |
}, | |
{ | |
name: "CSSSelectorFragmentAnchor", | |
status: "experimental", | |
base_feature: "CssSelectorFragmentAnchor", | |
}, | |
{ | |
// https://drafts.csswg.org/css-shapes-2/#shape-function | |
name: "CSSShapeFunction", | |
status: "experimental", | |
}, | |
{ | |
name: "CSSShapeFunctionCompositeAnimation", | |
status: "experimental", | |
depends_on: ["CSSShapeFunction", "CompositeClipPathAnimation"] | |
}, | |
{ | |
// sibling-index() and sibling-count() | |
name: "CSSSiblingFunctions", | |
status: "experimental", | |
}, | |
{ | |
name: "CSSSignRelatedFunctions", | |
status: "experimental", | |
}, | |
{ | |
name: "CSSSnapContainerQueries", | |
status: "stable", | |
}, | |
{ | |
// Explainer: https://drafts.csswg.org/css-values/#round-func | |
name: "CSSSteppedValueFunctions", | |
status: "stable", | |
}, | |
{ | |
name: "CSSStickyContainerQueries", | |
status: "stable", | |
}, | |
{ | |
name: "CSSSupportsAtRuleFunction", | |
status: "experimental", | |
}, | |
{ | |
name: "CSSSupportsForImportRules", | |
status: "stable", | |
}, | |
{ | |
// Allows the CSS "accent-color" property to support the system accent color as the default option. | |
name: "CSSSystemAccentColor", | |
status: "experimental", | |
}, | |
{ | |
// crbug.com/1463890: CSS `text-autospace` property | |
name: "CSSTextAutoSpace", | |
status: "experimental", | |
}, | |
{ | |
// TODO(https://crbug.com/1411581): | |
// https://w3c.github.io/csswg-drafts/css-inline-3/#propdef-leading-trim | |
name: "CSSTextBoxTrim", | |
status: "stable", | |
}, | |
{ | |
// crbug.com/1463890, crbug.com/1463891: CSS `text-spacing` shorthand | |
name: "CSSTextSpacing", | |
depends_on: ["CSSTextAutoSpace"], | |
}, | |
{ | |
// Support for tree-scoped [1] timeline names (e.g. produced by | |
// scroll-timeline). | |
// | |
// [1] https://drafts.csswg.org/css-scoping-1/#shadow-names | |
name: "CSSTreeScopedTimelines", | |
}, | |
// Support for `user-select:contain`. | |
{ | |
name: "CSSUserSelectContain", | |
status: "test", | |
}, | |
{ | |
name: "CSSVideoDynamicRangeMediaQueries", | |
status: "experimental", | |
}, | |
{ | |
// https://chromestatus.com/feature/5064894363992064 | |
name: "CSSViewTransitionAutoName", | |
status: "experimental", | |
depends_on: ["CSSViewTransitionMatchElement"], | |
}, | |
{ | |
// https://chromestatus.com/feature/5064894363992064 | |
name: "CSSViewTransitionMatchElement", | |
status: "experimental" | |
}, | |
{ | |
name: "CursorAnchorInfoMojoPipe", | |
status: { | |
"Android": "stable", | |
"default": "", | |
} | |
}, | |
{ | |
// Adds the appearance:base-select CSS value which makes <select> | |
// rendering using alternate content in the UA shadowroot which is | |
// customizable. | |
name: "CustomizableSelect", | |
status: "experimental", | |
// SelectParserRelaxation is needed to allow more content in <select> | |
// than just <option>s etc. | |
depends_on: ["SelectParserRelaxation"], | |
}, | |
{ | |
// If a node within a customizable <select> doesn't obey the content model, an Issue is reported to DevTools so that web authors get more context on why this can impact the accessibility behavior of the <select>. | |
name: "CustomizableSelectElementAccessibilityIssues", | |
status: "experimental", | |
depends_on: ["CustomizableSelect"], | |
}, | |
{ | |
name: "Database", | |
public: true, | |
status: "experimental", | |
base_feature: "none", | |
origin_trial_feature_name: "WebSQL", | |
origin_trial_allows_third_party: true, | |
origin_trial_type: "deprecation", | |
}, | |
// This allows pages to opt out of the unload deprecation. Enabling this | |
// allows unload event handers to be used in the frame regardless of any | |
// Permissions-Policy setting. | |
// https://crbug.com/1432116 | |
{ | |
name: "DeprecateUnloadOptOut", | |
origin_trial_feature_name: "DeprecateUnloadOptOut", | |
origin_trial_type: "deprecation", | |
origin_trial_allows_third_party: true, | |
origin_trial_allows_insecure: true, | |
}, | |
{ | |
name: "DesktopCaptureDisableLocalEchoControl", | |
status: "experimental", | |
}, | |
{ | |
name: "DesktopPWAsAdditionalWindowingControls", | |
status: "test", | |
}, | |
{ | |
name: "DesktopPWAsSubApps", | |
status: "test", | |
}, | |
{ | |
name: "DeviceAttributes", | |
status: { | |
"ChromeOS_Ash": "stable", | |
"default": "experimental", | |
}, | |
}, | |
{ | |
name: "DeviceOrientationRequestPermission", | |
status: "experimental", | |
}, | |
{ | |
name: "DevicePosture", | |
status: "stable", | |
}, | |
{ | |
// This feature makes the <dialog> element close properly when its "open" | |
// attribute is removed. https://github.com/whatwg/html/issues/5802 and | |
// https://github.com/whatwg/html/pull/10124. | |
name: "DialogCloseWhenOpenRemoved", | |
status: "experimental", | |
}, | |
{ | |
// This feature makes the dialog element fire beforetoggle and toggle | |
// events every time it is closed or opened. | |
// https://bugs.chromium.org/p/chromium/issues/detail?id=1521813 | |
name: "DialogElementToggleEvents", | |
status: "stable", | |
}, | |
{ | |
name: "DialogNewFocusBehavior", | |
status: "experimental", | |
depends_on: ["NewGetFocusableAreaBehavior"], | |
}, | |
{ | |
name: "DigitalGoods", | |
origin_trial_feature_name: "DigitalGoodsV2", | |
origin_trial_os: ["android", "chromeos"], | |
public: true, | |
status: { | |
"Android": "stable", | |
"ChromeOS_Ash": "stable", | |
// crbug.com/1143079: Web tests cannot differentiate ChromeOS and Linux, | |
// so enable the API on all platforms for testing. | |
"default": "test" | |
}, | |
base_feature: "none", | |
}, | |
{ | |
name: "DigitalGoodsV2_1", | |
status: { | |
"Android": "stable", | |
"ChromeOS_Ash": "stable", | |
// crbug.com/1143079: Web tests cannot differentiate ChromeOS and Linux, | |
// so enable the API on all platforms for testing. | |
"default": "test" | |
}, | |
}, | |
{ | |
name: "DirectSockets", | |
public: true, | |
status: "stable", | |
}, | |
{ | |
// Disables anti-aliasing for the Ahem font. Anti-aliasing this font breaks a | |
// significant amount of WPT test expectations. | |
name: "DisableAhemAntialias", | |
}, | |
{ | |
name: "DisableDifferentOriginSubframeDialogSuppression", | |
base_feature: "none", | |
origin_trial_feature_name: "DisableDifferentOriginSubframeDialogSuppression", | |
origin_trial_type: "deprecation", | |
origin_trial_allows_insecure: true, | |
}, | |
{ | |
name: "DisableHardwareNoiseSuppression", | |
origin_trial_feature_name: "DisableHardwareNoiseSuppression", | |
status: "experimental", | |
base_feature: "none", | |
}, | |
{ | |
name: "DisableReduceAcceptLanguage", | |
origin_trial_feature_name: "DisableReduceAcceptLanguage", | |
origin_trial_type: "deprecation", | |
origin_trial_allows_insecure: true, | |
origin_trial_allows_third_party: true, | |
base_feature: "none", | |
}, | |
{ | |
name: "DisableSelectAllForEmptyText", | |
status: "stable", | |
}, | |
// This feature will represent the extension of a deprecation trial that | |
// allows first parties to temporarily use unpartitioned storage in embeds | |
// loaded on their site. It replaces an old DT named | |
// DisableThirdPartyStoragePartitioning which expired in M126 and | |
// DisableThirdPartyStoragePartitioning2 which expired in M132. | |
{ | |
name: "DisableThirdPartyStoragePartitioning3", | |
origin_trial_feature_name: "DisableThirdPartyStoragePartitioning3", | |
origin_trial_type: "deprecation", | |
origin_trial_allows_insecure: true, | |
origin_trial_allows_third_party: true, | |
status: "experimental", | |
base_feature: "none", | |
browser_process_read_write_access: true, | |
}, | |
{ | |
// `kHidden` and `kHiddenButPainting` visibility states are treated as | |
// hidden in the sense of `document.visibilityState`. However, they are | |
// handled differently internally. For example, video playback should | |
// continue in `kHiddenButPainting`, such as when the page is being | |
// background captured. When enabled, this feature causes blink to | |
// notify internal observers about visibility changes between the two | |
// hidden states, in addition to transitions to/from `kVisible`. | |
// | |
// Since the two hidden states are exposed to the web identically, there | |
// is no `visibilitychanged` event fired when switching between them. | |
// | |
// When this feature is disabled, blink reverts to its original behavior | |
// of eliding transitions between the two hidden states, including to | |
// internal observers. This behavior causes problems with capture and | |
// picture-in-picture, but is preserved as a safe fallback. | |
name: "DispatchHiddenVisibilityTransitions", | |
status: "stable", | |
base_feature: "DispatchHiddenVisibilityTransitions", | |
}, | |
{ | |
// Dispatch selectionchange event per element according to the new spec: | |
// https://w3c.github.io/selection-api/#selectionchange-event | |
name: "DispatchSelectionchangeEventPerElement", | |
status: "stable", | |
}, | |
{ | |
// Allowing elements with display:contents to have focus. | |
// See https://crbug.com/1366037 | |
name: "DisplayContentsFocusable", | |
status: "experimental", | |
}, | |
{ | |
name: "DisplayCutoutAPI", | |
base_feature: "none", | |
public: true, | |
}, | |
{ | |
// Scale very large height and width of HTML Element | |
// to allow DnD. | |
name: "DnDScaleHeightAndWidthToMaxDimension", | |
status: "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", | |
}, | |
{ | |
name: "DocumentOpenOriginAliasRemoval", | |
status: "experimental", | |
copied_from_base_feature_if: "overridden", | |
}, | |
{ | |
name: "DocumentOpenSandboxInheritanceRemoval", | |
status: "stable", | |
copied_from_base_feature_if: "overridden", | |
}, | |
{ | |
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", | |
origin_trial_feature_name: "DocumentPolicyIncludeJSCallStacksInCrashReports", | |
status: "experimental", | |
base_feature_status: "enabled", | |
copied_from_base_feature_if: "overridden", | |
}, | |
{ | |
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 | |
// SyncXHR. | |
{ | |
name: "DocumentPolicySyncXHR", | |
status: "experimental", | |
}, | |
{ | |
name: "DocumentWrite", | |
}, | |
{ | |
// This is a flag for performance improvements that shipped in M134, | |
// for use as a kill-switch and for other finch measurement in Q2 2025. | |
name: "DOMInsertionFaster", | |
status: "stable", | |
}, | |
{ | |
name: "DOMPartsAPI", | |
status: "experimental", | |
implied_by: ["DOMPartsAPIMinimal"], | |
}, | |
{ | |
name: "DOMPartsAPIMinimal", | |
}, | |
{ | |
name: "DragImageNoNodeId", | |
status: "stable", | |
}, | |
// Dynamically change the safe area insets based on the bottom browser | |
// controls visibility. | |
{ | |
name: "DynamicSafeAreaInsets", | |
}, | |
// Dynamically change the safe area insets as browser controls scrolls. | |
{ | |
name: "DynamicSafeAreaInsetsOnScroll", | |
depends_on: ["DynamicSafeAreaInsets"] | |
}, | |
{ | |
// Fix for https://crbug.com/40821646. When enabled, it prevents | |
// returning empty position when the position's anchor node is not | |
// a descendant of the anchor's highest editable root. | |
name: "EditableBoundaryAdjustment", | |
status: "stable", | |
}, | |
{ | |
name: "ElementCapture", | |
status: {"Android": "", "default": "stable"}, | |
}, | |
{ | |
name: "ElementInnerTextHandleFirstLineStyle", | |
status: "stable", | |
}, | |
{ | |
name: "EnforceAnonymityExposure", | |
status: "stable", | |
}, | |
{ | |
// Experiment with preventing some instances of mutation XSS | |
// by escaping "<" and ">" in attribute values. | |
// See: crbug.com/1175016 | |
name: "EscapeLtGtInAttributes", | |
status: "experimental", | |
}, | |
{ | |
name: "EventTimingHandleKeyboardEventSimulatedClick", | |
status: "stable", | |
}, | |
{ | |
name: "EventTimingInteractionCount", | |
status: "experimental", | |
}, | |
{ | |
// Event Timings should not get interactionId assigned if the next paint | |
// was affected by autoscroll, i.e. from text selection. | |
name: "EventTimingSelectionAutoScrollNoInteractionId", | |
status: "experimental", | |
}, | |
{ | |
name: "ExperimentalContentSecurityPolicyFeatures", | |
status: "experimental", | |
base_feature: "none", | |
}, | |
{ | |
name: "ExperimentalJSProfilerMarkers", | |
status: "experimental", | |
}, | |
{ | |
name: "ExperimentalMachineLearningNeuralNetwork", | |
// Enabled by webnn::mojom::features::kExperimentalWebMachineLearningNeuralNetwork. | |
base_feature: "none", | |
}, | |
{ | |
name: "ExperimentalPolicies", | |
status: "experimental", | |
}, | |
{ | |
name: "ExposeCoarsenedRenderTime", | |
status: "stable", | |
}, | |
{ | |
name: "ExposeCSSFontFeatureValuesRule", | |
status: "stable", | |
}, | |
{ | |
name: "ExposeRenderTimeNonTaoDelayedImage", | |
}, | |
{ | |
name: "ExtendedTextMetrics", | |
status: "experimental", | |
}, | |
{ | |
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_Ash": "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", | |
}, | |
// Kill switch. | |
{ | |
name: "FastClearNeedsRepaint", | |
status: "stable", | |
}, | |
// Kill switch. | |
{ | |
name: "FastPathSingleSelectorExactMatch", | |
status: "stable", | |
}, | |
{ | |
name: "FastPositionIterator", | |
// Not enabled due to a RTL issue. crbug.com/1421016. | |
}, | |
{ | |
name: "FedCm", | |
public: true, | |
status: "stable", | |
base_feature: "none", | |
}, | |
{ | |
name: "FedCmAuthz", | |
depends_on: ["FedCm"], | |
public: true, | |
browser_process_read_access: true, | |
status: "stable", | |
base_feature: "none", | |
origin_trial_feature_name: "FedCmContinueOnBundle", | |
origin_trial_allows_third_party: true, | |
}, | |
{ | |
name: "FedCmAutoSelectedFlag", | |
depends_on: ["FedCm"], | |
public: true, | |
status: "stable", | |
base_feature: "none", | |
}, | |
{ | |
name: "FedCmButtonMode", | |
depends_on: ["FedCm"], | |
public: true, | |
status: "stable", | |
base_feature: "none", | |
origin_trial_feature_name: "FedCmButtonMode", | |
origin_trial_allows_third_party: true, | |
}, | |
{ | |
name: "FedCmDelegation", | |
depends_on: ["FedCm"], | |
public: true, | |
status: "test", | |
base_feature: "none", | |
}, | |
{ | |
name: "FedCmDisconnect", | |
depends_on: ["FedCm"], | |
base_feature: "none", | |
status: "stable", | |
public: true, | |
}, | |
{ | |
name: "FedCmDomainHint", | |
depends_on: ["FedCm"], | |
public: true, | |
status: "stable", | |
base_feature: "none", | |
}, | |
{ | |
name: "FedCmError", | |
depends_on: ["FedCm"], | |
public: true, | |
status: "stable", | |
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"], | |
base_feature: "none", | |
public: true, | |
origin_trial_feature_name: "FedCmMultipleIdentityProviders", | |
origin_trial_os: ["win", "mac", "linux", "chromeos"], | |
origin_trial_allows_third_party: true, | |
}, | |
{ | |
name: "FedCmSelectiveDisclosure", | |
depends_on: ["FedCm"], | |
public: true, | |
base_feature: "none", | |
}, | |
{ | |
name: "FedCmWithStorageAccessAPI", | |
depends_on: ["FedCm"], | |
base_feature_status: "enabled", | |
browser_process_read_access: true, | |
origin_trial_feature_name: "FedCmWithStorageAccessAPI", | |
copied_from_base_feature_if: "overridden", | |
status: "stable", | |
}, | |
{ | |
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", | |
}, | |
{ | |
name: "FencedFramesDefaultMode", | |
base_feature_status: "disabled", | |
copied_from_base_feature_if: "enabled_or_overridden", | |
public: true, | |
}, | |
{ | |
// 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. | |
name: "FetchLaterAPI", | |
status: "experimental", | |
origin_trial_feature_name: "FetchLaterAPI", | |
origin_trial_allows_third_party: true, | |
base_feature: "FetchLaterAPI", | |
// 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: "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", | |
}, | |
{ | |
name: "FileHandlingIcons", | |
depends_on: ["FileHandling"], | |
status: {"Android": "test", "default": "experimental"}, | |
base_feature: "none", | |
}, | |
{ | |
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_Ash": "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", | |
}, | |
{ | |
// The FileSystemObserver interface for the File System Access API. | |
// See https://crbug.com/1019297. | |
name: "FileSystemObserver", | |
depends_on: ["FileSystemAccess"], | |
status: { | |
"Android": "experimental", | |
"iOS": "experimental", | |
"default": "stable", | |
}, | |
}, | |
{ | |
// The unobserve function of the FileSystemObserver. | |
// See https://crbug.com/321980469. | |
name: "FileSystemObserverUnobserve", | |
status: "experimental", | |
}, | |
{ | |
// crbug.com/40755728 | |
name: "FindRubyInPage", | |
status: "stable", | |
}, | |
{ | |
name: "FindTextInReadonlyTextInput", | |
status: "experimental", | |
}, | |
{ | |
name: "Fledge", | |
status: "stable", | |
base_feature: "none", | |
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", | |
}, | |
{ | |
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 using a 'reportingTimeout' field within the Protected Audience | |
// ad auction config. | |
name: "FledgeReportingTimeout", | |
status: "stable", | |
}, | |
{ | |
// Enables the ability to set seller nonces on the header response and | |
// use bidNonce in bids. | |
name: "FledgeSellerNonce", | |
status: "stable", | |
}, | |
{ | |
name: "FledgeTrustedSignalsKVv1CreativeScanning", | |
status: "test", | |
}, | |
{ | |
name: "FledgeTrustedSignalsKVv2Support", | |
status: "test", | |
}, | |
{ | |
name: "FluentOverlayScrollbars", | |
// The associated base feature is defined in | |
// ui/native_theme/native_theme_features.cc. | |
base_feature: "none", | |
}, | |
{ | |
name: "FluentScrollbars", | |
// The associated base feature is defined in | |
// ui/native_theme/native_theme_features.cc. | |
base_feature: "none", | |
}, | |
{ | |
name: "FluentScrollbarUsesNinePatchTrack", | |
status: "stable", | |
}, | |
{ | |
name: "Focusgroup", | |
status: "experimental", | |
base_feature: "none", | |
origin_trial_feature_name: "Focusgroup", | |
}, | |
{ | |
name: "FontAccess", | |
status: {"Android": "", "default": "stable"}, | |
}, | |
{ | |
name: "FontationsFontBackend", | |
status: "stable", | |
}, | |
{ | |
name: "FontationsForSelectedFormats", | |
status: "stable", | |
}, | |
{ | |
name: "FontFamilyPostscriptMatchingCTMigration", | |
}, | |
{ | |
name: "FontFamilyStyleMatchingCTMigration", | |
}, | |
{ | |
name: "FontPresentWin", | |
status: "stable", | |
}, | |
{ | |
name: "FontSrcLocalMatching", | |
base_feature: "none", | |
// No status, as the web platform runtime enabled feature is controlled by | |
// a Chromium level feature. | |
}, | |
{ | |
name: "FontSystemFallbackNotoCjk", | |
status: "stable", | |
}, | |
{ | |
name: "FontVariantEmoji", | |
status: "stable", | |
}, | |
{ | |
name: "FontVariationSequences", | |
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", | |
}, | |
{ | |
name: "ForceTallerSelectPopup", | |
status: {"ChromeOS_Ash": "stable"}, | |
}, | |
{ | |
// TODO(crbug.com/1419161): Remove this feature after M113 has been stable | |
// for a few weeks or more. This is a kill switch that, when enabled, goes | |
// back to the old behavior, which was to restore the state for <input> | |
// and <select> even when they had `autocomplete=off`. | |
name: "FormControlRestoreStateIfAutocompleteOff", | |
}, | |
{ | |
// TODO(crbug.com/1432009) Allow form controls with vertical writing mode | |
// to have direction affect the flow of the control. | |
name: "FormControlsVerticalWritingModeDirectionSupport", | |
status: "stable", | |
}, | |
{ | |
// TODO(crbug.com/389587444): Remove this feature after M134 is stable. | |
// Form-associated custom elements should check isFocusable on the | |
// focus delegate if the shadow host has delegatesFocus=true. | |
name: "FormValidationCustomElementsDelegatesFocusFix", | |
status: "stable", | |
}, | |
{ | |
name: "FractionalScrollOffsets", | |
base_feature: "none", | |
public: true, | |
}, | |
{ | |
name: "FreezeFramesOnVisibility", | |
status: "experimental", | |
}, | |
{ | |
name: "GamepadMultitouch", | |
status: "experimental", | |
public: true, | |
}, | |
{ | |
name: "GetAllScreensMedia", | |
depends_on: ["GetDisplayMedia"], | |
origin_trial_feature_name: "GetAllScreensMedia", | |
origin_trial_os: ["chromeos"], | |
public: true, | |
status: "test", | |
}, | |
{ | |
name: "GetComputedStyleOutsideFlatTree", | |
status: "stable", | |
}, | |
{ | |
name: "GetDisplayMedia", | |
public: true, | |
status: { | |
"Android": "experimental", | |
"default": "stable", | |
}, | |
base_feature: "none", | |
}, | |
{ | |
name: "GetDisplayMediaRequiresUserActivation", | |
depends_on: ["GetDisplayMedia"], | |
status: "experimental", | |
}, | |
{ | |
name: "GroupEffect", | |
status: "test", | |
}, | |
{ | |
name: "HandwritingRecognition", | |
status: { | |
"ChromeOS_Ash": "stable", | |
"default": "experimental", | |
}, | |
}, | |
{ | |
name: "HasUAVisualTransition", | |
status: "stable", | |
}, | |
{ | |
name: "HighlightInheritance", | |
status: "stable", | |
}, | |
{ | |
name: "HighlightPointerEvents", | |
}, | |
{ | |
name: "HighlightsFromPoint", | |
}, | |
{ | |
name: "HrefTranslate", | |
depends_on: ["TranslateService"], | |
origin_trial_feature_name: "HrefTranslate", | |
status: "stable", | |
base_feature: "none", | |
}, | |
// The `anchor` attribute, supported by both anchor positioning and the | |
// popover API. | |
{ | |
name: "HTMLAnchorAttribute", | |
status: "experimental", | |
}, | |
{ | |
// TODO(crbug.com/376516550): Enables dialog light dismiss functionality. | |
// This feature shipped in M134, so this flag can be removed in M136. | |
name: "HTMLDialogLightDismiss", | |
status: "stable", | |
}, | |
// The `<embed>` should follow the specification, layout is not forced | |
// when the `type` attribute is set to `image`. | |
// https://html.spec.whatwg.org/C/#the-embed-element | |
// This feature was shipped in M131, so this flag can be removed in M133. | |
{ | |
name: "HTMLEmbedElementNotForceLayout", | |
status: "stable", | |
}, | |
// The width attribute on the hr element, previously converted 0 values to 1px. | |
// This will ship in M133, so should be safe to remove in M135. | |
{ | |
name: "HTMLHRWidthAllowZero", | |
status: "stable" | |
}, | |
// Return a natural width/height of zero from | |
// HTMLImageElement.naturalWidth/Height for SVG images that don't have a | |
// natural width/height set. | |
{ | |
name: "HTMLImageElementActualNaturalSize", | |
status: "test", | |
}, | |
// Adds support for the experimental `interesttarget` | |
// attributes, as specified in the open-ui "Interest Invokers" explainer. | |
// https://open-ui.org/components/interest-invokers.explainer/ | |
{ | |
name: "HTMLInterestTargetAttribute", | |
status: "experimental", | |
}, | |
// Additional default invoke actions that aren't part of v1 of invokers. | |
// When this flag is disabled only v1 actions (popover and dialog defaults) will work. | |
{ | |
name: "HTMLInvokeActionsV2", | |
status: "test", | |
}, | |
// Adds support for the experimental `invoketarget` and `invokeaction` | |
// attributes, as specified in the open-ui "Invokers" explainer. | |
// https://open-ui.org/components/invokers.explainer/ | |
{ | |
name: "HTMLInvokeTargetAttribute", | |
status: "experimental", | |
}, | |
{ | |
// 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", | |
}, | |
{ | |
// TODO(crbug.com/1416284): Enables popover=hint functionality. | |
// This shipped in M133, and this flag can be removed in M135. | |
name: "HTMLPopoverHint", | |
status: "stable", | |
}, | |
{ | |
name: "HTMLSelectElementShowPicker", | |
status: "stable", | |
}, | |
{ | |
name: "ImageDataPixelFormat", | |
status: "experimental", | |
}, | |
{ | |
name: "ImplicitRootScroller", | |
public: true, | |
settable_from_internals: true, | |
status: {"Android": "stable"}, | |
base_feature: "none", | |
}, | |
// This change, although technically breaking, is expected to be fully web-compatible | |
// due to how import attributes are currently used in the ecosystem. However, this is | |
// a killswitch just in case. This can be removed once it ships to stable and no | |
// regressions are reported. | |
{ | |
name: "ImportAttributesDisallowUnknownKeys", | |
status: "stable" | |
}, | |
{ | |
name: "ImportMapIntegrity", | |
status: "stable" | |
}, | |
// This ensures that list element tag is included in extended selection. | |
// https://crbug.com/40658772 | |
{ | |
name: "IncludeListElementTagInExtendedSelection", | |
status: "stable", | |
}, | |
// This ensures that table tag is included in extended selection. | |
// https://crbug.com/40833812 | |
{ | |
name: "IncludeTableTagInExtendedSelection", | |
status: "stable", | |
}, | |
{ | |
name: "IncomingCallNotifications", | |
}, | |
{ | |
// When enabled, every traversable mainframe same-doc navigation will | |
// increment the `viz::LocalSurfaceId` from the impl thread. | |
name: "IncrementLocalSurfaceIdForMainframeSameDocNavigation", | |
status: {"Android": "stable"}, | |
}, | |
{ | |
name: "IndexedDbGetAllRecords", | |
status: "experimental", | |
}, | |
{ | |
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", | |
}, | |
{ | |
// crbug.com/370217727 | |
name: "InitialLetterRaiseBySpecified", | |
status: "stable", | |
}, | |
{ | |
name: "InlineBlockInSameLine", | |
status: "stable", | |
}, | |
{ | |
// 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", | |
}, | |
{ | |
// Makes the HTML parser close <select> tags before inserting <input> | |
// tags to match the old parser behavior in case we have compat issues | |
// launching SelectParserRelaxation. If SelectParserRelaxation stays | |
// stable in M131, then this flag can be removed in M133. | |
name: "InputClosesSelect", | |
depends_on: ["SelectParserRelaxation"], | |
}, | |
{ | |
name: "InputEventConstructorThrows", | |
status: "stable", | |
}, | |
{ | |
name: "InputMultipleFieldsUI", | |
// No plan to support complex UI for date/time INPUT types on Android and | |
// iOS. | |
status: {"Android": "test", "iOS": "test", "default": "stable"}, | |
}, | |
// 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: "InsertLineBreakIfInlineListItem", | |
status: "stable", | |
}, | |
{ | |
// crbug.com/1420675 | |
name: "InsertLineBreakIfPhrasingContent", | |
status: {"Android": "test", "default": "stable"}, | |
}, | |
{ | |
// Improved support for debugging CSSNestedDeclarations. | |
name: "InspectorGhostRules", | |
}, | |
{ | |
name: "InstalledApp", | |
public: true, | |
status: "stable", | |
base_feature: "none", | |
}, | |
{ | |
name: "InstallOnDeviceSpeechRecognition", | |
}, | |
{ | |
name: "InterestGroupsInSharedStorageWorklet", | |
public: true, | |
status: "stable", | |
}, | |
{ | |
name: "InteroperablePrivateAttribution", | |
status: "experimental", | |
}, | |
{ | |
// If enabled, IntersectionObserverScrollMargin will be parsed. | |
name: "IntersectionObserverScrollMargin", | |
status: "stable", | |
}, | |
{ | |
name: "InvertedColors", | |
status: "experimental", | |
}, | |
{ | |
name: "InvisibleSVGAnimationThrottling", | |
status: "stable", | |
}, | |
{ | |
name: "IsSecurePaymentConfirmationAvailableAPI", | |
status: "experimental", | |
}, | |
{ | |
name: "JavaScriptCompileHintsMagicAlwaysRuntime", | |
status: "experimental", | |
origin_trial_feature_name: "JavaScriptCompileHintsMagicAlways", | |
}, | |
{ | |
name: "JavaScriptCompileHintsMagicRuntime", | |
status: "experimental", | |
origin_trial_feature_name: "JavaScriptCompileHintsMagic", | |
}, | |
{ | |
name: "KeyboardAccessibleTooltip", | |
status: "experimental", | |
base_feature: "none", | |
}, | |
{ | |
// TODO(crbug.com/40113891): This feature allows scrollers to be | |
// keyboard focusable by default. This was enabled by default in M130, | |
// but this flag should not be removed until the origin trial and | |
// enterprise policies have both expired. See the | |
// KeyboardFocusableScrollersOptOut flag. | |
name: "KeyboardFocusableScrollers", | |
status: "stable", | |
public: true, | |
}, | |
{ | |
// TODO(crbug.com/40113891): Disables KeyboardFocusableScrollers. | |
// This feature only takes effect if KeyboardFocusableScrollers is | |
// enabled. It will overwrite the behavior and not allow scrollers to be | |
// keyboard focusable by default. | |
name: "KeyboardFocusableScrollersOptOut", | |
origin_trial_feature_name: "KeyboardFocusableScrollersOptOut", | |
// This is not a feature that is being deprecated, but the origin trial | |
// *is* being used to allow sites to opt back out of the feature launch. | |
// So we're marking it as a "deprecation" trial. | |
origin_trial_type: "deprecation", | |
origin_trial_allows_insecure: true, | |
origin_trial_allows_third_party: true, | |
}, | |
{ | |
name: "LangAttributeAwareFormControlUI", | |
settable_from_internals: true, | |
}, | |
{ | |
name: "LanguageDetectionAPI", | |
status: "experimental", | |
origin_trial_feature_name: "LanguageDetectionAPI", | |
base_feature_status: "enabled", | |
copied_from_base_feature_if: "overridden", | |
}, | |
{ | |
name: "LayoutDisableWebkitBoxQuirks", | |
status: "stable", | |
}, | |
{ | |
name: "LayoutFlexNewRowAlgorithmV3", | |
status: "test", | |
}, | |
{ | |
name: "LayoutIgnoreMarginsForSticky", | |
}, | |
{ | |
name: "LayoutImageForceAspectRatioOfOneOnError", | |
}, | |
{ | |
name: "LayoutJustifySelfForBlocks", | |
status: "stable", | |
}, | |
{ | |
name: "LayoutNGShapeCache", | |
status: "test", | |
base_feature: "LayoutNGShapeCache", | |
}, | |
{ | |
name: "LayoutStretch", | |
status: "experimental", | |
}, | |
{ | |
name: "LazyInitializeMediaControls", | |
base_feature: "none", | |
public: true, | |
// This is enabled by features::kLazyInitializeMediaControls. | |
}, | |
{ | |
// If enabled, the lazy load image observer will use a scroll margin in | |
// its init dictionary instead of a root margin. | |
name: "LazyLoadScrollMargin", | |
public: true, | |
status: "stable", | |
}, | |
{ | |
// If enabled, the lazy load iframe observer will use a scroll margin in | |
// its init dictionary instead of a root margin. | |
name: "LazyLoadScrollMarginIframe", | |
public: true, | |
status: "stable", | |
}, | |
{ | |
name: "LimitThirdPartyCookies", | |
origin_trial_feature_name: "LimitThirdPartyCookies", | |
status: "experimental", | |
base_feature: "none", | |
}, | |
{ | |
// crbug.com/365814218 | |
name: "LineBoxBelowLeadingFloats", | |
status: "stable", | |
}, | |
{ | |
name: "ListItemWithCounterSetNotSetExplicitValue", | |
status: "stable", | |
}, | |
{ | |
name: "LockedMode", | |
status: "test", | |
// Enabled by features::kLockedMode. | |
public: true, | |
}, | |
{ | |
// Enable sourceCharPosition for the invoke-type resolve-promise | |
// https://issues.chromium.org/issues/381529126 | |
name: "LongAnimationFrameSourceCharPosition", | |
status: "experimental", | |
}, | |
{ | |
// Long press on a link selects the link text instead of bringing up | |
// context menu. Enabled only on Android AuthView. | |
name: "LongPressLinkSelectText", | |
}, | |
{ | |
// Use LongAnimationFrameMonitor to emit longtask entries | |
name: "LongTaskFromLongAnimationFrame", | |
status: "test", | |
}, | |
{ | |
name: "MachineLearningNeuralNetwork", | |
// Enabled by webnn::mojom::features::kWebMachineLearningNeuralNetwork. | |
base_feature: "none", | |
}, | |
{ | |
name: "ManagedConfiguration", | |
status: "stable", | |
}, | |
{ | |
name:"MeasureMemory", | |
status:"stable", | |
}, | |
{ | |
name: "MediaCapabilitiesEncodingInfo", | |
status: "experimental", | |
}, | |
{ | |
name: "MediaCapabilitiesSpatialAudio", | |
status: "test", | |
}, | |
{ | |
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", | |
}, | |
// Set to reflect the MediaCastOverlayButton feature. | |
{ | |
name: "MediaCastOverlayButton", | |
base_feature: "none", | |
public: true, | |
}, | |
{ | |
name: "MediaControlsExpandGesture", | |
base_feature: "none", | |
public: true, | |
}, | |
{ | |
name: "MediaControlsOverlayPlayButton", | |
public: true, | |
settable_from_internals: true, | |
status: {"Android": "stable"}, | |
base_feature: "none", | |
}, | |
{ | |
name: "MediaElementVolumeGreaterThanOne", | |
}, | |
// Set to reflect the kMediaEngagementBypassAutoplayPolicies feature. | |
{ | |
name: "MediaEngagementBypassAutoplayPolicies", | |
base_feature: "none", | |
public: true, | |
}, | |
{ | |
name: "MediaLatencyHint", | |
status: "test", | |
}, | |
{ | |
name: "MediaPlaybackWhileNotVisiblePermissionPolicy", | |
status: "test", | |
}, | |
{ | |
name: "MediaPreviewsOptOut", | |
base_feature: "none", | |
origin_trial_feature_name: "MediaPreviewsOptOutPersistent", | |
origin_trial_allows_third_party: true, | |
}, | |
{ | |
name: "MediaQueryNavigationControls", | |
}, | |
{ | |
// This uses media::VideoEncoder implementation in MediaRecorder API | |
// instead of using MediaRecorder own video encoder implementation. | |
name: "MediaRecorderUseMediaVideoEncoder", | |
}, | |
{ | |
name: "MediaSession", | |
public: true, | |
status: "stable", | |
base_feature: "none", | |
}, | |
{ | |
name: "MediaSessionChapterInformation", | |
status: "stable", | |
}, | |
{ | |
name: "MediaSessionEnterPictureInPicture", | |
public: true, | |
status: "stable", | |
}, | |
{ | |
name: "MediaSourceExperimental", | |
status: "experimental", | |
}, | |
{ | |
name: "MediaSourceExtensionsForWebCodecs", | |
status: "experimental", | |
base_feature: "none", | |
origin_trial_feature_name: "MediaSourceExtensionsForWebCodecs", | |
}, | |
{ | |
name: "MediaSourceNewAbortAndDuration", | |
status: "experimental", | |
}, | |
{ | |
name: "MediaStreamTrackTransfer", | |
status: "test", | |
base_feature: "none", | |
}, | |
{ | |
name: "MediaStreamTrackWebSpeech", | |
}, | |
{ | |
name: "MessagePortCloseEvent", | |
status: "test", | |
}, | |
// This is a killswitch for <meta http-equiv="refresh"> no | |
// longer accepting fractions, landed around M125. | |
// It can be removed in M127 if there are no problems. | |
{ | |
name: "MetaRefreshNoFractional", | |
status: "stable", | |
}, | |
// 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. Remove after 1 or 2 stable releases. | |
{ | |
name: "MinimimalResourceRequestPrepBeforeCacheLookup", | |
status: "stable", | |
}, | |
{ | |
name: "MobileLayoutTheme", | |
}, | |
{ | |
name: "ModifyParagraphCrossEditingoundary", | |
status: "stable", | |
}, | |
{ | |
name: "MojoJS", | |
status: "test", | |
is_protected_feature: true, | |
}, | |
// MojoJSTest is used exclusively in testing environments, whereas MojoJS | |
// may also be used elsewhere. | |
{ | |
name: "MojoJSTest", | |
status: "test", | |
base_feature: "none", | |
is_protected_feature: true, | |
}, | |
{ | |
// Fix HandleMouseFocus and FrameSelection to use FlatTree parent so | |
// correct fallback element receives focus. | |
// See https://crbug.com/41420461 | |
// This feature was shipped in M133, so this flag can be removed in M135. | |
name: "MouseFocusFlatTreeParent", | |
status: "stable", | |
}, | |
// Move the selection to the last position in the list item. See | |
// https://crbug.com/331841851 | |
{ | |
name: "MoveEndingSelectionToListChild", | |
status: "stable", | |
}, | |
{ | |
name: "MoveToParagraphStartOrEndSkipsNonEditable", | |
status: "stable", | |
}, | |
{ | |
name: "MultipleImportMaps", | |
status: "stable", | |
}, | |
{ | |
name: "MultiSelectDeselectWhenOnlyOption", | |
status: "test", | |
}, | |
{ | |
// https://chromestatus.com/feature/6270155647352832 | |
name: "MultiSmoothScrollIntoView", | |
status: "stable", | |
}, | |
// crbug.com/1446498: This feature is being used for the deprecation/removal | |
// of Mutation Events. Timeline summary: | |
// - Events disabled for the open web: M127 (July 23, 2024) | |
// - Reminder email sent to all Origin trial registrants: December 12, 2024 | |
// - Origin trial disabled: M135 (April 1, 2025) | |
// - Enterprise policy disabled: {not yet} | |
// - Flag/code can be removed: {2 milestones after EP removal} | |
{ | |
name: "MutationEvents", | |
public: true, | |
}, | |
{ | |
name: "NavigateEventCommitBehavior", | |
status: "experimental", | |
}, | |
{ | |
name: "NavigateEventSourceElement", | |
status: "experimental", | |
}, | |
{ | |
name: "NavigationActivation", | |
status: "stable", | |
}, | |
{ | |
name: "NavigationId", | |
status: "experimental", | |
origin_trial_feature_name: "SoftNavigationHeuristics", | |
}, | |
{ | |
name: "NavigatorContentUtils", | |
// Android does not yet support NavigatorContentUtils. | |
status: {"Android": "", "default": "stable"}, | |
}, | |
{ | |
name: "NestedViewTransition", | |
status: "experimental", | |
}, | |
{ | |
name: "NetInfoConstantType", | |
}, | |
{ | |
name: "NetInfoDownlinkMax", | |
public: true, | |
// Only Android, ChromeOS support NetInfo downlinkMax, type and ontypechange now | |
status: { | |
"Android": "stable", | |
"ChromeOS_Ash": "stable", | |
"default": "experimental", | |
}, | |
base_feature: "none", | |
}, | |
{ | |
// This is a killswitch for the behavior of Element::GetFocusableArea | |
// on delegatesFocus shadow hosts. This flag can be removed in M127 if | |
// things are stable. | |
name: "NewGetFocusableAreaBehavior", | |
status: "stable", | |
}, | |
{ | |
// crbug.com/376097115 | |
name: "NoCollapseSpaceBeforeRuby", | |
status: "stable", | |
}, | |
{ | |
name: "NoIdleEncodingForWebTests", | |
status: "test", | |
}, | |
// Doesn't increase the end offset on getting the range for a new line | |
// character. See https://crbug.com/326888905 | |
{ | |
name: "NoIncreasingEndOffsetOnSplittingTextNodes", | |
status: "stable", | |
}, | |
// Doesn't insert empty blockquotes on outdenting a blockquote. See | |
// https://crbug.com/323960902 | |
{ | |
name: "NonEmptyBlockquotesOnOutdenting", | |
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", | |
}, | |
{ | |
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", | |
}, | |
{ | |
name: "ObservableAPI", | |
status: "experimental", | |
public: true, | |
}, | |
{ | |
name: "OffMainThreadCSSPaint", | |
status: "stable", | |
}, | |
{ | |
name: "OffscreenCanvasCommit", | |
status: "experimental", | |
}, | |
{ | |
name: "OffscreenCanvasGetContextAttributes", | |
status: "stable", | |
}, | |
{ | |
name: "OmitBlurEventOnElementRemoval", | |
status: "test" | |
}, | |
{ | |
name: "OnDeviceChange", | |
status: "stable" | |
}, | |
{ | |
name: "OnDeviceWebSpeechAvailable", | |
}, | |
{ | |
name: "OrientationEvent", | |
status: {"Android": "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: "OverscrollCustomization", | |
status: "experimental", | |
}, | |
// Support for page margin boxes. | |
// https://www.w3.org/TR/css-page-3/#margin-boxes | |
{ | |
name: "PageMarginBoxes", | |
status: "stable", | |
}, | |
{ | |
name: "PagePopup", | |
// Android does not have support for PagePopup | |
status: {"Android": "", "iOS": "", "default": "stable"}, | |
}, | |
{ | |
name: "PageRevealEvent", | |
status: "stable", | |
}, | |
{ | |
name: "PageSwapEvent", | |
status: "stable", | |
}, | |
{ | |
name: "PaintHighlightsForFirstLetter", | |
status: "stable", | |
}, | |
{ | |
name: "PaintHoldingForIframes", | |
status: "stable", | |
}, | |
{ | |
name: "PaintHoldingForLocalIframes", | |
status: "stable", | |
}, | |
// Kill switch. | |
{ | |
name: "PaintLayerUpdateOptimizations", | |
status: "stable", | |
}, | |
{ | |
name: "PaintTimingMixin", | |
status: "experimental", | |
}, | |
{ | |
name: "PaintUnderInvalidationChecking", | |
settable_from_internals: true, | |
}, | |
{ | |
// PARAKEET ad serving runtime flag/JS API. | |
name: "Parakeet", | |
origin_trial_feature_name: "Parakeet", | |
}, | |
{ | |
name: "PartitionedPopins", | |
status: "experimental", | |
}, | |
{ | |
name: "PartitionVisitedLinkDatabaseWithSelfLinks", | |
status: {"iOS": "", "default": "experimental"}, | |
}, | |
// This is to add an option to enable the Reveal button on password inputs while waiting ::reveal gets standardized. | |
{ | |
name: "PasswordReveal", | |
}, | |
{ | |
// https://crbug.com/41247646 | |
name: "PasteListItemOutsidePreviousListItem", | |
status: "stable", | |
}, | |
{ | |
name: "PaymentApp", | |
depends_on: ["PaymentRequest"], | |
public: true, | |
status: "experimental", | |
base_feature: "none", | |
}, | |
{ | |
name: "PaymentInstruments", | |
depends_on: ["PaymentApp"], | |
}, | |
{ | |
// https://chromestatus.com/feature/5198846820352000 | |
name: "PaymentLinkDetection", | |
status: "experimental", | |
}, | |
{ | |
name: "PaymentMethodChangeEvent", | |
depends_on: ["PaymentRequest"], | |
status: "stable", | |
}, | |
// PaymentRequest is enabled by default on Android | |
{ | |
name: "PaymentRequest", | |
public: true, | |
status: "experimental", | |
base_feature: "none", | |
}, | |
{ | |
name: "PerformanceManagerInstrumentation", | |
base_feature: "none", | |
public: true, | |
}, | |
{ | |
// Enables performance.mark('mark_feature_usage'): crbug.com/1517170 | |
name: "PerformanceMarkFeatureUsage", | |
status: "experimental" | |
}, | |
{ | |
name: "PerformanceNavigateSystemEntropy", | |
status: "experimental", | |
}, | |
{ | |
name: "PerformanceNavigationTimingConfidence", | |
status: "experimental", | |
}, | |
{ | |
name: "PeriodicBackgroundSync", | |
public: true, | |
status: "stable", | |
base_feature: "none", | |
}, | |
{ | |
name: "PerMethodCanMakePaymentQuota", | |
origin_trial_feature_name: "PerMethodCanMakePaymentQuota", | |
status: "experimental", | |
base_feature: "none", | |
}, | |
{ | |
// Tracking bug for the implementation: https://crbug.com/1462930 | |
name: "PermissionElement", | |
origin_trial_feature_name: "PermissionElement", | |
origin_trial_os: ["win", "mac", "linux", "fuchsia", "chromeos", "android"], | |
status: "experimental", | |
public: true, | |
base_feature_status: "enabled", | |
copied_from_base_feature_if: "overridden", | |
}, | |
{ | |
name: "Permissions", | |
public: true, | |
status: "stable", | |
base_feature: "none", | |
}, | |
{ | |
name: "PermissionsRequestRevoke", | |
status: "experimental", | |
}, | |
// 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, | |
}, | |
{ | |
name: "PointerEventDeviceId", | |
status: "stable", | |
}, | |
// Coalesced/predicted event targets in untrusted events. | |
// See https://crbug.com/353538500 | |
{ | |
name: "PointerEventTargetsInEventLists", | |
status: "stable", | |
}, | |
// TODO(crbug.com/364669918) This enables these two new functionalities: | |
// 1. add an imperative way to set invoker relationships between popovers. | |
// 2. invoker relationships create implicit anchor element references. | |
// This was shipped in M133, and this flag can be removed in M135. | |
{ | |
name: "PopoverAnchorRelationships", | |
status: "stable", | |
}, | |
// TODO(crbug.com/379241451): This controls the behavior when a popover is | |
// nested inside an invoker button. This was shipped in M133, and this flag | |
// can be removed in M135. | |
{ | |
name: "PopoverButtonNestingBehavior", | |
status: "stable", | |
}, | |
{ | |
name: "PositionOutsideTabSpanCheckSiblingNode", | |
status: "stable", | |
}, | |
{ | |
name: "PotentialPermissionsPolicyReporting", | |
status: "experimental", | |
}, | |
{ | |
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", | |
status: "test", | |
}, | |
{ | |
name: "PrefersReducedData", | |
status: "experimental", | |
}, | |
{ | |
// Used to allow preloading data: URLs with link rel=preload. | |
name: "PreloadLinkRelDataUrls", | |
}, | |
{ | |
// 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", | |
}, | |
{ | |
name: "Presentation", | |
public: true, | |
status: "stable", | |
base_feature: "none", | |
}, | |
{ | |
// When enabled, styling for the content within heading will be | |
// preserved after merge. | |
name: "PreserveFollowingBlockStylesDuringBlockMerge", | |
status: "stable", | |
}, | |
{ | |