# Copyright (c) 2020-2021 Apple Inc. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF # THE POSSIBILITY OF SUCH DAMAGE. # For experimental features: # The type should be boolean. # They must include a humanReadableName and humanReadableDescription. This is # the text exposed to the user from the WebKit client. AccentColorEnabled: type: bool humanReadableName: "CSS Accent Color" humanReadableDescription: "Enable accent-color CSS property" defaultValue: WebKitLegacy: "PLATFORM(COCOA)" : true default: false WebKit: "PLATFORM(COCOA) || PLATFORM(GTK) || PLATFORM(WPE)": true default: false WebCore: "PLATFORM(COCOA) || PLATFORM(GTK) || PLATFORM(WPE)": true default: false AccessHandleEnabled: type: bool humanReadableName: "AccessHandle API" humanReadableDescription: "Enable AccessHandle API" defaultValue: WebKitLegacy: default: false WebKit: "PLATFORM(COCOA)" : true default: false WebCore: "PLATFORM(COCOA)" : true default: false AccessibilityObjectModelEnabled: type: bool humanReadableName: "Accessibility Object Model" humanReadableDescription: "Accessibility Object Model support" webcoreBinding: RuntimeEnabledFeatures defaultValue: WebKitLegacy: default: false WebKit: default: false AriaReflectionForElementReferencesEnabled: type: bool humanReadableName: "ARIA Reflection for Element References" humanReadableDescription: "Enable ARIA reflection for attributes that refer to elements" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false AspectRatioEnabled: type: bool humanReadableName: "CSS Aspect Ratio" humanReadableDescription: "Enable aspect-ratio CSS property" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true AspectRatioOfImgFromWidthAndHeightEnabled: type: bool humanReadableName: "Aspect ratio of from width and height" humanReadableDescription: "Map HTML attributes width/height to the default aspect ratio of " defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true # FIXME: This is on by default in WebKit2 PLATFORM(COCOA). Perhaps we should consider turning it on for WebKitLegacy as well. AsyncClipboardAPIEnabled: type: bool humanReadableName: "Async clipboard API" humanReadableDescription: "Enable the async clipboard API" defaultValue: WebKitLegacy: default: false WebKit: "PLATFORM(COCOA)" : true default: false WebCore: default: false BlankAnchorTargetImpliesNoOpenerEnabled: type: bool humanReadableName: "Blank anchor target implies rel=noopener" humanReadableDescription: "target=_blank on anchor elements implies rel=noopener" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true # We would have to partition BroadcastChannel based on PageGroups if we wanted to enable this for WebKitLegacy. BroadcastChannelEnabled: type: bool humanReadableName: "BroadcastChannel API" humanReadableDescription: "BroadcastChannel API" defaultValue: WebKitLegacy: default: false WebKit: default: true WebCore: default: true BroadcastChannelOriginPartitioningEnabled: type: bool humanReadableName: "BroadcastChannel Origin Partitioning" humanReadableDescription: "BroadcastChannel Origin Partitioning" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true BuiltInNotificationsEnabled: type: bool humanReadableName: "Built-In Web Notifications" humanReadableDescription: "Enable built-in WebKit managed notifications" webcoreBinding: RuntimeEnabledFeatures condition: ENABLE(BUILT_IN_NOTIFICATIONS) defaultValue: WebCore: default: false WebKit: default: false CFNetworkNetworkLoaderEnabled: type: bool humanReadableName: "Experimental network loader" humanReadableDescription: "Enable experimental network loader" webcoreBinding: none condition: HAVE(NETWORK_LOADER) exposed: [ WebKit ] defaultValue: WebKit: default: false CSS3DTransformInteroperabilityEnabled: type: bool humanReadableName: "CSS 3D Transform Interoperability" humanReadableDescription: "Enable 3D transform behavior that is specification-compliant but backwards incompatible" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false CSSCascadeLayersEnabled: type: bool humanReadableName: "CSS Cascade Layers" humanReadableDescription: "Enable CSS Cascade Layers" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true CSSColor4: type: bool humanReadableName: "CSS Color 4 Color Types" humanReadableDescription: "Enable support for CSS Color 4 Color Types" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true CSSColorContrastEnabled: type: bool humanReadableName: "CSS color-contrast()" humanReadableDescription: "Enable support for CSS color-contrast() defined in CSS Color 5" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false CSSColorMixEnabled: type: bool humanReadableName: "CSS color-mix()" humanReadableDescription: "Enable support for CSS color-mix() defined in CSS Color 5" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false CSSContainIntrinsicSizeEnabled: type: bool humanReadableName: "CSS Contain Intrinsic Size" humanReadableDescription: "Enable contain-intrinsic-size CSS property" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false CSSContainerQueriesEnabled: type: bool humanReadableName: "CSS Container Queries" humanReadableDescription: "Enable CSS Container Queries" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true CSSContainmentEnabled: type: bool humanReadableName: "CSS Containment" humanReadableDescription: "Enable contain CSS property" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true CSSCounterStyleAtRuleImageSymbolsEnabled: type: bool humanReadableName: "CSS @counter-style symbols" humanReadableDescription: "Enable support for symbols in CSS @counter-style rules" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false CSSCounterStyleAtRulesEnabled: type: bool humanReadableName: "CSS @counter-style" humanReadableDescription: "Enable support for CSS @counter-style rules" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false CSSCustomPropertiesAndValuesEnabled: type: bool humanReadableName: "CSS Custom Properties and Values API" humanReadableDescription: "Enable CSS Custom Properties and Values API" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false CSSGradientInterpolationColorSpacesEnabled: type: bool humanReadableName: "CSS Gradient Interpolation Color Spaces" humanReadableDescription: "Enable custom interpolation in CSS gradients" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false CSSGradientPremultipliedAlphaInterpolationEnabled: type: bool humanReadableName: "CSS Gradient Premultiplied Alpha Interpolation" humanReadableDescription: "Enable premultiplied alpha interpolated CSS gradients" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true CSSIndividualTransformPropertiesEnabled: type: bool humanReadableName: "CSS Individual Transform Properties" humanReadableDescription: "Support for the translate, scale and rotate CSS properties" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true CSSInputSecurityEnabled: type: bool humanReadableName: "CSS Input Security" humanReadableDescription: "Enable input-security CSS property" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false CSSMotionPathEnabled: type: bool humanReadableName: "CSS Motion Path" humanReadableDescription: "Enable CSS Motion Path support" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true CSSOMViewSmoothScrollingEnabled: type: bool humanReadableName: "CSSOM View Smooth Scrolling" humanReadableDescription: "Enable DOM API and CSS property for 'smooth' scroll behavior" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: false CSSPaintingAPIEnabled: type: bool humanReadableName: "CSS Painting API" humanReadableDescription: "Enable the CSS Painting API" webcoreBinding: RuntimeEnabledFeatures condition: ENABLE(CSS_PAINTING_API) defaultValue: WebKitLegacy: default: false WebKit: "ENABLE(EXPERIMENTAL_FEATURES)": true default: false CSSRelativeColorSyntaxEnabled: type: bool humanReadableName: "CSS Relative Color Syntax" humanReadableDescription: "Enable support for CSS Relative Color Syntax defined in CSS Color 5" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false CSSTextAlignLastEnabled: type: bool humanReadableName: "CSS text-align-last property" humanReadableDescription: "Enable the property text-align-last, defined in CSS Text 3" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true CSSTextJustifyEnabled: type: bool humanReadableName: "CSS text-justify property" humanReadableDescription: "Enable the property text-justify, defined in CSS Text 3" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false CSSTypedOMEnabled: type: bool humanReadableName: "CSS Typed OM" humanReadableDescription: "Enable the CSS Typed OM" condition: ENABLE(CSS_TYPED_OM) defaultValue: WebKitLegacy: default: false WebKit: "ENABLE(EXPERIMENTAL_FEATURES)": true default: false WebCore: default: false CanvasColorSpaceEnabled: type: bool humanReadableName: "Canvas Color Spaces" humanReadableDescription: "Enable use of predefined canvas color spaces" defaultValue: WebKitLegacy: "PLATFORM(COCOA)": true default: false WebKit: "PLATFORM(COCOA)": true default: false WebCore: default: false ContactPickerAPIEnabled: type: bool humanReadableName: "Contact Picker API" humanReadableDescription: "Enable the Contact Picker API" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false CoreMathMLEnabled: type: bool webcoreOnChange: setNeedsRecalcStyleInAllFrames humanReadableName: "MathML Core" humanReadableDescription: "Disable features removed from the MathML Core spec." defaultValue: WebKitLegacy: default: false WebKit: "PLATFORM(GTK) || PLATFORM(WPE)": true default: false WebCore: default: false CrossOriginEmbedderPolicyEnabled: type: bool humanReadableName: "Cross-Origin-Embedder-Policy (COEP) header" humanReadableDescription: "Support for Cross-Origin-Embedder-Policy (COEP) header" defaultValue: WebKitLegacy: default: false WebKit: default: true WebCore: default: false CrossOriginOpenerPolicyEnabled: type: bool humanReadableName: "Cross-Origin-Opener-Policy (COOP) header" humanReadableDescription: "Support for Cross-Origin-Opener-Policy (COOP) header" defaultValue: WebKitLegacy: default: false WebKit: default: true WebCore: default: false DialogElementEnabled: type: bool humanReadableName: "Dialog Element" humanReadableDescription: "Enable the Dialog Element" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true # FIXME: Starting the preference name with "Disable" is inconsistent with most other preferences and should be changed. DisableMediaExperiencePIDInheritance: type: bool webcoreBinding: RuntimeEnabledFeatures humanReadableName: "Disable Media Experience PID Inheritance" humanReadableDescription: "Disable Media Experience PID Inheritance" condition: HAVE(CELESTIAL) defaultValue: WebKitLegacy: default: false WebKit: default: false DisallowSyncXHRDuringPageDismissalEnabled: type: bool humanReadableName: "Disallow sync XHR during page dismissal" humanReadableDescription: "Disallow synchronous XMLHttpRequest during page dismissal" defaultValue: WebKitLegacy: default: true WebKit: "PLATFORM(MAC) || PLATFORM(IOS_FAMILY)": WebKit::defaultDisallowSyncXHRDuringPageDismissalEnabled() default: true WebCore: default: true # FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely. ExposeSpeakersEnabled: type: bool humanReadableName: "Allow speaker device selection" humanReadableDescription: "Allow speaker device selection" condition: ENABLE(MEDIA_STREAM) defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false FTPEnabled: type: bool humanReadableName: "FTP support enabled" humanReadableDescription: "FTP support enabled" defaultValue: WebCore: default: false WebKit: default: false WebKitLegacy: default: false # FIXME: This seems to be accidentally enabled for WebKit1 right now due to the old code using the # wrong preference key in some places. We should identify whether it really makes sense to keep this # enabled. FetchAPIKeepAliveEnabled: type: bool humanReadableName: "Fetch API Request KeepAlive" humanReadableDescription: "Enable Fetch API Request KeepAlive" webcoreBinding: RuntimeEnabledFeatures defaultValue: WebKitLegacy: default: true WebKit: default: true FetchMetadataEnabled: type: bool humanReadableName: "Fetch Metadata" humanReadableDescription: "Enable Fetch Metadata headers" defaultValue: WebCore: default: false WebKit: default: false WebKitLegacy: default: false FileSystemAccessEnabled: type: bool humanReadableName: "File System Access API" humanReadableDescription: "Enable File System Access API" defaultValue: WebKitLegacy: default: false WebKit: "PLATFORM(COCOA)" : true default: false WebCore: "PLATFORM(COCOA)" : true default: false FocusVisibleEnabled: type: bool humanReadableName: ":focus-visible pseudo-class" humanReadableDescription: "Enable the focus-indicated pseudo-class :focus-visible" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true # FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well. GenericCueAPIEnabled: type: bool condition: ENABLE(VIDEO) humanReadableName: "Generic Text Track Cue API" humanReadableDescription: "Enable Generic Text Track Cue API" defaultValue: WebKitLegacy: default: false WebKit: default: true WebCore: default: false GoogleAntiFlickerOptimizationQuirkEnabled: type: bool humanReadableName: "Quirk to prevent delayed initial painting on sites using Google's Anti-Flicker optimization" humanReadableDescription: "Quirk to prevent delayed initial painting on sites using Google's Anti-Flicker optimization" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true # FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well. HDRMediaCapabilitiesEnabled: type: bool humanReadableName: "HDR Media Capabilities" humanReadableDescription: "HDR Media Capabilities" defaultValue: WebKitLegacy: default: false WebKit: default: true WebCore: default: false HTTP3Enabled: type: bool humanReadableName: "HTTP/3" humanReadableDescription: "Enable HTTP/3" webcoreBinding: none condition: HAVE(CFNETWORK_ALTERNATIVE_SERVICE) exposed: [ WebKit ] defaultValue: WebKit: default: false HasPseudoClassEnabled: type: bool humanReadableName: ":has() pseudo-class" humanReadableDescription: "Enable :has() pseudo-class" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true HighlightAPIEnabled: type: bool humanReadableName: "Highlight API" humanReadableDescription: "Highlight API support" webcoreBinding: RuntimeEnabledFeatures defaultValue: WebKitLegacy: default: false WebKit: default: false ImageBitmapEnabled: type: bool humanReadableName: "ImageBitmap" humanReadableDescription: "Support for the ImageBitmap APIs" webcoreBinding: RuntimeEnabledFeatures defaultValue: WebKitLegacy: default: true WebKit: default: true # FIXME: This is not relevent for WebKitLegacy, so should be excluded from WebKitLegacy entirely. InProcessCookieCacheEnabled: type: bool humanReadableName: "In-Process Cookie Cache" humanReadableDescription: "In-Process DOM Cookie Cache" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: false InertAttributeEnabled: type: bool humanReadableName: "inert attribute" humanReadableDescription: "Enable inert attribute support" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true # FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well. IntersectionObserverEnabled: type: bool humanReadableName: "Intersection Observer" humanReadableDescription: "Enable Intersection Observer support" defaultValue: WebKitLegacy: default: false WebKit: default: true WebCore: default: false # FIXME: The 'Is' prefix is inconsistent with most other preferences and should be removed. IsFirstPartyWebsiteDataRemovalDisabled: type: bool humanReadableName: "Disable Removal of Non-Cookie Data After 7 Days of No User Interaction (ITP)" humanReadableDescription: "Disable removal of all non-cookie website data after seven days of no user interaction when Intelligent Tracking Prevention is enabled" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false # FIXME: The 'Is' prefix is inconsistent with most other preferences and should be removed. IsLoggedInAPIEnabled: type: bool humanReadableName: "IsLoggedIn web API" humanReadableDescription: "Enable the proposed IsLoggedIn web API" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false # FIXME: The 'Is' prefix is inconsistent with most other preferences and should be removed. # FIXME: This is not implemented for WebKitLegacy, so should be excluded from WebKitLegacy entirely. IsNSURLSessionWebSocketEnabled: type: bool humanReadableName: "NSURLSession WebSocket" humanReadableDescription: "Use NSURLSession WebSocket API" webcoreBinding: RuntimeEnabledFeatures condition: HAVE(NSURLSESSION_WEBSOCKET) defaultValue: WebKitLegacy: default: false WebKit: default: true # FIXME: The 'Is' prefix is inconsistent with most other preferences and should be removed. IsSameSiteStrictEnforcementEnabled: type: bool humanReadableName: "SameSite strict enforcement (ITP)" humanReadableDescription: "Enable SameSite strict enforcement to mitigate bounce tracking" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false # FIXME: The 'Is' prefix is inconsistent with most other preferences and should be removed. IsThirdPartyCookieBlockingDisabled: type: bool humanReadableName: "Disable Full 3rd-Party Cookie Blocking (ITP)" humanReadableDescription: "Disable full third-party cookie blocking when Intelligent Tracking Prevention is enabled" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false LazyIframeLoadingEnabled: type: bool humanReadableName: "Lazy iframe loading" humanReadableDescription: "Enable lazy iframe loading support" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false LazyImageLoadingEnabled: type: bool humanReadableName: "Lazy image loading" humanReadableDescription: "Enable lazy image loading support" defaultValue: WebKitLegacy: default: false WebKit: default: true WebCore: default: false LinkPrefetchEnabled: type: bool humanReadableName: "LinkPrefetch" humanReadableDescription: "Enable LinkedPrefetch" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false LinkPreloadResponsiveImagesEnabled: type: bool humanReadableName: "Link preload responsive images" humanReadableDescription: "Enable link preload responsive images" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false LinkSanitizerEnabled: type: bool humanReadableName: "Link Sanitizer" humanReadableDescription: "Enable link sanitizer" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false MaskWebGLStringsEnabled: type: bool humanReadableName: "Mask WebGL Strings" humanReadableDescription: "Mask WebGL Vendor, Renderer, Shader Language Strings" condition: ENABLE(WEBGL) || ENABLE(WEBGL2) defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true # FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well. MediaCapabilitiesExtensionsEnabled: type: bool humanReadableName: "Media Capabilities Extensions" humanReadableDescription: "Media Capabilities Extensions" defaultValue: WebKitLegacy: default: false WebKit: default: true WebCore: default: false # FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely. MediaRecorderEnabled: type: bool humanReadableName: "MediaRecorder" humanReadableDescription: "MediaRecorder" condition: ENABLE(MEDIA_RECORDER) defaultValue: WebKitLegacy: default: false WebKit: "PLATFORM(COCOA)": true "USE(GSTREAMER_TRANSCODER)": true default: false WebCore: default: false MediaSessionCoordinatorEnabled: type: bool humanReadableName: "Experimental MediaSession coordinator API" humanReadableDescription: "Enable experimental MediaSession coordinator API" condition: ENABLE(MEDIA_SESSION_COORDINATOR) defaultValue: WebKitLegacy: default: true WebKit: default: WebKit::defaultMediaSessionCoordinatorEnabled() WebCore: default: true MediaSessionEnabled: type: bool humanReadableName: "Media Session API" humanReadableDescription: "Media Session API" condition: ENABLE(MEDIA_SESSION) defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true MediaSessionPlaylistEnabled: type: bool humanReadableName: "Experimental MediaSession playlist API" humanReadableDescription: "Enable experimental MediaSession playlist API" condition: ENABLE(MEDIA_SESSION_COORDINATOR) && ENABLE(MEDIA_SESSION_PLAYLIST) defaultValue: WebKitLegacy: default: false WebKit: default: WebKit::defaultMediaSessionCoordinatorEnabled() WebCore: default: true MediaSourceInlinePaintingEnabled: type: bool humanReadableName: "Experimental MediaSource Inline Painting" humanReadableDescription: "Experimental MediaSource Inline Painting" condition: ENABLE(MEDIA_SOURCE) && (HAVE(AVSAMPLEBUFFERVIDEOOUTPUT) || USE(GSTREAMER)) webcoreBinding: RuntimeEnabledFeatures defaultValue: WebKitLegacy: default: false WebKit: "HAVE(AVSAMPLEBUFFERDISPLAYLAYER_COPYDISPLAYEDPIXELBUFFER)": true default: false ModelDocumentEnabled: type: bool humanReadableName: "HTML elements for stand-alone document" humanReadableDescription: "HTML element for model documents" condition: ENABLE(MODEL_ELEMENT) webcoreBinding: RuntimeEnabledFeatures defaultValue: WebKitLegacy: default: false WebKit: "ENABLE(SEPARATED_MODEL)": true default: false ModelElementEnabled: type: bool humanReadableName: "HTML element" humanReadableDescription: "HTML element" condition: ENABLE(MODEL_ELEMENT) defaultValue: WebKitLegacy: default: false WebKit: "ENABLE(SEPARATED_MODEL)": true default: false WebCore: default: false OpusDecoderEnabled: type: bool humanReadableName: "Opus audio decoder" humanReadableDescription: "Enable Opus audio decoder" condition: ENABLE(OPUS) webcoreBinding: RuntimeEnabledFeatures defaultValue: WebKitLegacy: default: true WebKit: default: true OverflowClipEnabled: type: bool humanReadableName: "CSS overflow: clip support" humanReadableDescription: "Enable CSS overflow: clip support" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true OverscrollBehaviorEnabled: type: bool humanReadableName: "CSS Overscroll Behavior" humanReadableDescription: "Enable CSS overscroll-behavior" defaultValue: WebKitLegacy: default: false WebKit: "PLATFORM(WIN) || PLATFORM(GTK) || PLATFORM(WPE)": false default: true WebCore: "PLATFORM(WIN) || PLATFORM(GTK) || PLATFORM(WPE)": false default: true PageAtRuleSupportEnabled: type: bool humanReadableName: "@page CSS at-rule support" humanReadableDescription: "Enable @page support" webcoreBinding: RuntimeEnabledFeatures defaultValue: WebKitLegacy: default: false WebKit: default: false # FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well. PaintTimingEnabled: type: bool humanReadableName: "Paint Timing" humanReadableDescription: "Enable PaintTiming API" webcoreBinding: RuntimeEnabledFeatures defaultValue: WebKitLegacy: default: false WebKit: default: true PassiveWheelListenersAsDefaultOnDocument: type: bool humanReadableName: "Wheel Event listeners on the root made passive" humanReadableDescription: "Force wheel event listeners registered on the window, document or body to be passive" defaultValue: WebKitLegacy: "PLATFORM(MAC)": WebKit::defaultPassiveWheelListenersAsDefaultOnDocument() default: true WebKit: "PLATFORM(MAC)": WebKit::defaultPassiveWheelListenersAsDefaultOnDocument() default: true WebCore: default: true # FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely. PerElementSpeakerSelectionEnabled: type: bool humanReadableName: "Allow per media element speaker device selection" humanReadableDescription: "Allow per media element speaker device selection" condition: ENABLE(MEDIA_STREAM) defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false PerformanceNavigationTimingAPIEnabled: type: bool humanReadableName: "PerformanceNavigationTiming" humanReadableDescription: "Enable PerformanceNavigationTiming API" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true # Note: This is off by default because of privacy concerns # such as https://github.com/w3c/resource-timing/issues/238 PerformanceResourceTimingSensitivePropertiesEnabled: type: bool humanReadableName: "PerformanceResourceTiming.transferSize, encodedBodySize, and decodedBodySize" humanReadableDescription: "Enable all properties of PerformanceResourceTiming API" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false PermissionsAPIEnabled: type: bool humanReadableName: "Permissions API" humanReadableDescription: "Enable Permissions API" defaultValue: WebKitLegacy: default: false WebKit: "PLATFORM(COCOA)" : true default: false WebCore: default: false PreferPageRenderingUpdatesNear60FPSEnabled: type: bool humanReadableName: "Prefer Page Rendering Updates near 60fps" humanReadableDescription: "Prefer page rendering updates near 60 frames per second rather than using the display's refresh rate" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true PrivateClickMeasurementDebugModeEnabled: type: bool humanReadableName: "Private Click Measurement Debug Mode" humanReadableDescription: "Enable Private Click Measurement Debug Mode" webcoreBinding: RuntimeEnabledFeatures defaultValue: WebKitLegacy: default: false WebKit: default: false PrivateClickMeasurementFraudPreventionEnabled: type: bool humanReadableName: "Private Click Measurement Fraud Prevention" humanReadableDescription: "Enable Private Click Measurement Fraud Prevention" webcoreBinding: RuntimeEnabledFeatures defaultValue: WebKit: "HAVE(RSA_BSSA)": true default: false ProcessSwapOnCrossSiteNavigationEnabled: type: bool humanReadableName: "Swap Processes on Cross-Site Navigation" humanReadableDescription: "Swap WebContent Processes on cross-site navigations" webcoreBinding: none exposed: [ WebKit ] defaultValue: WebKit: "PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(GTK) || PLATFORM(WPE)": true default: false PushAPIEnabled: type: bool condition: ENABLE(SERVICE_WORKER) humanReadableName: "Push API" humanReadableDescription: "Enable Push API" defaultValue: WebCore: default: false WebKitLegacy: default: false WebKit: default: false ReadableByteStreamAPIEnabled: type: bool humanReadableName: "ReadableByteStream" humanReadableDescription: "Enable Readable Byte Streams" webcoreBinding: RuntimeEnabledFeatures defaultValue: WebKitLegacy: default: false WebKit: default: false # FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well. ReferrerPolicyAttributeEnabled: type: bool humanReadableName: "Referrer Policy attribute" humanReadableDescription: "Enable Referrer Policy attribute" defaultValue: WebKitLegacy: default: false WebKit: default: true WebCore: default: true # FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well. RemotePlaybackEnabled: type: bool humanReadableName: "Remote Playback API" humanReadableDescription: "Enable Remote Playback API" condition: ENABLE(WIRELESS_PLAYBACK_TARGET) defaultValue: WebKitLegacy: default: false WebKit: default: true WebCore: default: true RequestIdleCallbackEnabled: type: bool humanReadableName: "requestIdleCallback" humanReadableDescription: "Enable requestIdleCallback support" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false RequestSubmitEnabled: type: bool humanReadableName: "Form requestSubmit" humanReadableDescription: "Form requestSubmit method" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true RequestVideoFrameCallbackEnabled: type: bool humanReadableName: "RequestVideoFrameCallback" humanReadableDescription: "Enable RequestVideoFrameCallback API" defaultValue: WebKitLegacy: "PLATFORM(COCOA) && HAVE(AVSAMPLEBUFFERVIDEOOUTPUT)" : true default: false WebKit: "PLATFORM(COCOA) && HAVE(AVSAMPLEBUFFERVIDEOOUTPUT)" : true "USE(GSTREAMER)": true default: false WebCore: "PLATFORM(COCOA) && HAVE(AVSAMPLEBUFFERVIDEOOUTPUT)" : true "USE(GSTREAMER)": true default: false ResizeObserverEnabled: type: bool humanReadableName: "Resize Observer" humanReadableDescription: "Enable Resize Observer support" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true ResolutionMediaFeatureEnabled: type: bool humanReadableName: "Resolution media feature" humanReadableDescription: "Enable resolution media feature support" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true SKAttributionEnabled: type: bool humanReadableName: "SKAttribution" humanReadableDescription: "SKAttribution" defaultValue: WebCore: default: false WebKitLegacy: default: false WebKit: default: false SampleBufferContentKeySessionSupportEnabled: type: bool humanReadableName: "ContentKeySession support for SampleBuffer Renderers" humanReadableDescription: "ContentKeySession support for SampleBuffer Renderers Enabled" condition: HAVE(AVCONTENTKEYSPECIFIER) defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false # FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely. # FIXME: This should have it's own ENABLE. ScreenCaptureEnabled: type: bool condition: ENABLE(MEDIA_STREAM) humanReadableName: "ScreenCapture" humanReadableDescription: "Enable ScreenCapture" defaultValue: WebKitLegacy: default: false WebKit: "PLATFORM(MAC) || USE(GSTREAMER)": true default: false WebCore: default: false ScrollToTextFragmentEnabled: type: bool humanReadableName: "Scroll To Text Fragment" humanReadableDescription: "Enable Scroll To Text Fragment" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false ServerTimingEnabled: type: bool humanReadableName: "Server Timing" humanReadableDescription: "Enable Server Timing API" webcoreBinding: RuntimeEnabledFeatures defaultValue: WebKitLegacy: default: false WebKit: "ENABLE(EXPERIMENTAL_FEATURES)": true default: false ServiceWorkerNavigationPreloadEnabled: type: bool humanReadableName: "Service Worker Navigation Preload" humanReadableDescription: "Enable Service Worker Navigation Preload API" condition: ENABLE(SERVICE_WORKER) defaultValue: WebCore: default: true WebKitLegacy: default: false WebKit: default: true SharedWorkerEnabled: type: bool humanReadableName: "SharedWorker" humanReadableDescription: "Enabled SharedWorker API" defaultValue: WebCore: default: false WebKitLegacy: default: false WebKit: default: true ShouldDeferAsynchronousScriptsUntilAfterDocumentLoadOrFirstPaint: type: bool humanReadableName: "Defer async scripts until DOMContentLoaded or first-paint" humanReadableDescription: "Defer async scripts until DOMContentLoaded or first-paint" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true SpeechRecognitionEnabled: type: bool humanReadableName: "SpeechRecognition API" humanReadableDescription: "Enable SpeechRecognition of WebSpeech API" defaultValue: WebKitLegacy: default: false WebKit: "HAVE(SPEECHRECOGNIZER) && ENABLE(MEDIA_STREAM)": true default: false WebCore: default: false SpringTimingFunctionEnabled: type: bool humanReadableName: "CSS Spring Animations" humanReadableDescription: "CSS Spring Animation prototype" defaultValue: WebKitLegacy: default: false WebKit: "ENABLE(EXPERIMENTAL_FEATURES)" : true default: false WebCore: default: false StorageAPIEnabled: type: bool humanReadableName: "Storage API" humanReadableDescription: "Enable Storage API" defaultValue: WebKitLegacy: default: false WebKit: "PLATFORM(COCOA)" : true default: false WebCore: "PLATFORM(COCOA)" : true default: false SubgridEnabled: type: bool humanReadableName: "CSS subgrid support" humanReadableDescription: "Enable CSS subgrid support" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true SyntheticEditingCommandsEnabled: type: bool humanReadableName: "Synthetic Editing Commands" humanReadableDescription: "Enable Synthetic Editing Commands" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true ThirdPartyIframeRedirectBlockingEnabled: type: bool humanReadableName: "Block top-level redirects by third-party iframes" humanReadableDescription: "Block top-level redirects by third-party iframes" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true TrackConfigurationEnabled: type: bool humanReadableName: "Track Configuration API" humanReadableDescription: "Track Configuration API" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false TransformStreamAPIEnabled: type: bool humanReadableName: "TransformStream API" humanReadableDescription: "Enable Transform Stream API" defaultValue: WebCore: default: true WebKitLegacy: default: true WebKit: default: true UseGPUProcessForDOMRenderingEnabled: type: bool humanReadableName: "GPU Process: DOM Rendering" humanReadableDescription: "Enable DOM rendering in GPU Process" webcoreBinding: none condition: ENABLE(GPU_PROCESS) exposed: [ WebKit ] defaultValue: WebKit: "ENABLE(GPU_PROCESS_BY_DEFAULT) && PLATFORM(IOS_FAMILY) && !PLATFORM(WATCHOS) && !HAVE(UIKIT_WEBKIT_INTERNALS)": true default: false UseGPUProcessForDisplayCapture: type: bool humanReadableName: "GPU Process: Screen and Window capture" humanReadableDescription: "Display capture in GPU Process" webcoreBinding: none condition: HAVE(SC_CONTENT_SHARING_SESSION) exposed: [ WebKit ] defaultValue: WebKit: default: false UseGPUProcessForWebGLEnabled: type: bool humanReadableName: "GPU Process: WebGL" humanReadableDescription: "Process all WebGL operations in GPU Process" webcoreBinding: none condition: ENABLE(GPU_PROCESS) && ENABLE(WEBGL) exposed: [ WebKit ] defaultValue: WebKit: "ENABLE(GPU_PROCESS_BY_DEFAULT) && PLATFORM(IOS_FAMILY) && !HAVE(UIKIT_WEBKIT_INTERNALS)": true "PLATFORM(WIN)": true default: false UserGesturePromisePropagationEnabled: type: bool humanReadableName: "UserGesture Promise Propagation" humanReadableDescription: "UserGesture Promise Propagation" webcoreBinding: RuntimeEnabledFeatures defaultValue: WebKitLegacy: default: true WebKit: default: true VP9SWDecoderEnabledOnBattery: type: bool humanReadableName: "VP9 SW decoder on battery" humanReadableDescription: "Enable VP9 SW decoder on battery" webcoreBinding: none condition: ENABLE(VP9) defaultValue: WebKit: default: false VisualViewportAPIEnabled: type: bool humanReadableName: "Visual Viewport API" humanReadableDescription: "Enable Visual Viewport API" defaultValue: WebKitLegacy: "PLATFORM(IOS_FAMILY)" : false default: true WebKit: default: true WebCore: default: false VorbisDecoderEnabled: type: bool humanReadableName: "Vorbis audio decoder" humanReadableDescription: "Enable Vorbis audio decoder" condition: ENABLE(VORBIS) webcoreBinding: RuntimeEnabledFeatures defaultValue: WebKitLegacy: default: true WebKit: default: true WebAPIsInShadowRealmEnabled: type: bool humanReadableName: "Web APIs in ShadowRealm" humanReadableDescription: "Enable Web APIs to be exposed in ShadowRealm" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false WebAnimationsCompositeOperationsEnabled: type: bool humanReadableName: "Web Animations composite operations" humanReadableDescription: "Support for the CompositeOperation enum and properties consuming it" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true WebAnimationsCustomEffectsEnabled: type: bool humanReadableName: "Web Animations custom effects" humanReadableDescription: "Support for the CustomEffect interface" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false WebAnimationsCustomFrameRateEnabled: type: bool humanReadableName: "Web Animations custom frame rate" humanReadableDescription: "Support for specifying a custom frame rate for Web Animations" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false WebAnimationsIterationCompositeEnabled: type: bool humanReadableName: "Web Animations iteration composite" humanReadableDescription: "Support for the KeyframeEffect.iterationComposite property" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false WebAnimationsMutableTimelinesEnabled: type: bool humanReadableName: "Web Animations mutable timelines" humanReadableDescription: "Support for setting the timeline property of an Animation object" defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true WebAssemblyESMIntegrationEnabled: type: bool humanReadableName: "WebAssembly ES module integration support" humanReadableDescription: "Support for allowing WebAssembly modules to integrate as ES modules" condition: ENABLE(WEBASSEMBLY) defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false # FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely. WebAuthenticationEnabled: type: bool humanReadableName: "Web Authentication" humanReadableDescription: "Enable Web Authentication support" condition: ENABLE(WEB_AUTHN) defaultValue: WebKitLegacy: default: false WebKit: default: true WebCore: default: true WebGL2Enabled: type: bool humanReadableName: "WebGL 2.0" humanReadableDescription: "WebGL 2 prototype" condition: ENABLE(WEBGL2) defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true WebGLUsingMetal: type: bool humanReadableName: "WebGL via Metal" humanReadableDescription: "Use the Metal backend for ANGLE" condition: ENABLE(WEBGL) && PLATFORM(COCOA) defaultValue: WebKitLegacy: "HAVE(WEBGL_COMPATIBLE_METAL)": true default: false WebKit: "HAVE(WEBGL_COMPATIBLE_METAL)": true default: false WebCore: "HAVE(WEBGL_COMPATIBLE_METAL)": true default: false WebLocksAPIEnabled: type: bool humanReadableName: "Web Locks API" humanReadableDescription: "Web Locks API" defaultValue: WebKitLegacy: default: false WebKit: default: true WebCore: default: true WebRTCEncodedTransformEnabled: type: bool condition: ENABLE(WEB_RTC) humanReadableName: "WebRTC Encoded Transform API" humanReadableDescription: "Enable WebRTC Encoded Transform API" defaultValue: WebKitLegacy: default: false WebKit: "USE(LIBWEBRTC)": true default: false WebCore: "USE(LIBWEBRTC)": true default: false # FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely. WebRTCH264LowLatencyEncoderEnabled: type: bool humanReadableName: "WebRTC H264 LowLatency encoder" humanReadableDescription: "Enable H264 LowLatency encoder" webcoreBinding: RuntimeEnabledFeatures condition: ENABLE(WEB_RTC) defaultValue: WebKitLegacy: default: false WebKit: default: true WebRTCH265CodecEnabled: type: bool condition: ENABLE(WEB_RTC) humanReadableName: "WebRTC H265 codec" humanReadableDescription: "Enable WebRTC H265 codec" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false WebRTCPlatformTCPSocketsEnabled: type: bool humanReadableName: "WebRTC Platform TCP Sockets" humanReadableDescription: "Enable WebRTC Platform TCP Sockets" webcoreBinding: RuntimeEnabledFeatures condition: ENABLE(WEB_RTC) defaultValue: WebKit: default: true WebRTCPlatformUDPSocketsEnabled: type: bool humanReadableName: "WebRTC Platform UDP Sockets" humanReadableDescription: "Enable WebRTC Platform UDP Sockets" webcoreBinding: RuntimeEnabledFeatures condition: ENABLE(WEB_RTC) defaultValue: WebKit: default: true WebRTCSFrameTransformEnabled: type: bool condition: ENABLE(WEB_RTC) humanReadableName: "WebRTC SFrame Transform API" humanReadableDescription: "Enable WebRTC SFrame Transform API" defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false WebRTCSocketsProxyingEnabled: type: bool humanReadableName: "WebRTC Sockets Proxying" humanReadableDescription: "Enable WebRTC Sockets Proxying" condition: ENABLE(WEB_RTC) defaultValue: WebKitLegacy: default: false WebKit: default: true WebCore: default: false WebRTCVP9Profile0CodecEnabled: type: bool humanReadableName: "WebRTC VP9 profile 0 codec" humanReadableDescription: "Enable WebRTC VP9 profile 0 codec" condition: ENABLE(WEB_RTC) defaultValue: WebKitLegacy: default: true WebKit: default: true WebCore: default: true WebRTCVP9Profile2CodecEnabled: type: bool humanReadableName: "WebRTC VP9 profile 2 codec" humanReadableDescription: "Enable WebRTC VP9 profile 2 codec" condition: ENABLE(WEB_RTC) defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false WebShareFileAPIEnabled: type: bool humanReadableName: "Web Share API Level 2" humanReadableDescription: "Enable level 2 of Web Share API" defaultValue: WebKitLegacy: default: false WebKit: "PLATFORM(COCOA) && !PLATFORM(WATCHOS) && !PLATFORM(APPLETV)": true default: false WebCore: default: false WebXRAugmentedRealityModuleEnabled: type: bool humanReadableName: "WebXR Augmented Reality Module" humanReadableDescription: "Adds support for the WebXR Augmented Reality Module" condition: ENABLE(WEBXR) defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false WebXREnabled: type: bool humanReadableName: "WebXR Device API" humanReadableDescription: "Adds support for accessing virtual reality (VR) and augmented reality (AR) devices, including sensors and head-mounted displays, on the Web" condition: ENABLE(WEBXR) defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false WebXRGamepadsModuleEnabled: type: bool humanReadableName: "WebXR Gamepads Module" humanReadableDescription: "Adds support for the WebXR Gamepads Module" condition: ENABLE(WEBXR) defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false WebXRHandInputModuleEnabled: type: bool humanReadableName: "WebXR Hand Input Module" humanReadableDescription: "Adds support for the Hands Input Module for WebXR" condition: ENABLE(WEBXR_HANDS) defaultValue: WebKitLegacy: default: false WebKit: default: false WebCore: default: false WheelEventGesturesBecomeNonBlocking: type: bool humanReadableName: "Wheel Event gestures become non-blocking" humanReadableDescription: "preventDefault() is only allowed on the first wheel event in a gesture" defaultValue: WebKitLegacy: "PLATFORM(MAC)": WebKit::defaultWheelEventGesturesBecomeNonBlocking() default: true WebKit: "PLATFORM(MAC)": WebKit::defaultWheelEventGesturesBecomeNonBlocking() default: true WebCore: default: true