Diff
Modified: trunk/Source/WebKitLegacy/ChangeLog (267622 => 267623)
--- trunk/Source/WebKitLegacy/ChangeLog 2020-09-26 14:14:13 UTC (rev 267622)
+++ trunk/Source/WebKitLegacy/ChangeLog 2020-09-26 16:34:32 UTC (rev 267623)
@@ -1,3 +1,13 @@
+2020-09-26 Sam Weinig <[email protected]>
+
+ [Preferences] It should be possible to have different default values for WebKitLegacy and WebKit in preference yaml files
+ https://bugs.webkit.org/show_bug.cgi?id=216987
+
+ Reviewed by Darin Adler.
+
+ * WebKitLegacy.xcodeproj/project.pbxproj:
+ Update script phase to explicitly specify the frontend (WebKitLegacy) and the templates to generate.
+
2020-09-25 Sam Weinig <[email protected]>
[Preferences] Start generating experimental feature preferences for legacy WebKit
Modified: trunk/Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj (267622 => 267623)
--- trunk/Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj 2020-09-26 14:14:13 UTC (rev 267622)
+++ trunk/Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj 2020-09-26 16:34:32 UTC (rev 267623)
@@ -3468,7 +3468,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "set -e\n\n${SRCROOT}/mac/Scripts/GeneratePreferences.rb --outputDir ${BUILT_PRODUCTS_DIR}/DerivedSources/WebKitLegacy/ --base ${SRCROOT}/mac/WebView/WebPreferences.yaml --debug ${SRCROOT}/mac/WebView/WebPreferencesDebug.yaml --experimental ${SRCROOT}/mac/WebView/WebPreferencesExperimental.yaml --internal ${SRCROOT}/mac/WebView/WebPreferencesInternal.yaml\n";
+ shellScript = "set -e\n\n${SRCROOT}/mac/Scripts/GeneratePreferences.rb --frontend WebKitLegacy --template WebPreferencesDefinitions.h --template WebPreferencesExperimentalFeatures.mm --template WebViewPreferencesChangedGenerated.mm --outputDir ${BUILT_PRODUCTS_DIR}/DerivedSources/WebKitLegacy/ --base ${SRCROOT}/mac/WebView/WebPreferences.yaml --debug ${SRCROOT}/mac/WebView/WebPreferencesDebug.yaml --experimental ${SRCROOT}/mac/WebView/WebPreferencesExperimental.yaml --internal ${SRCROOT}/mac/WebView/WebPreferencesInternal.yaml\n";
};
A13EE61D185AE82700556064 /* Postprocess Headers */ = {
isa = PBXShellScriptBuildPhase;
Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (267622 => 267623)
--- trunk/Source/WebKitLegacy/mac/ChangeLog 2020-09-26 14:14:13 UTC (rev 267622)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog 2020-09-26 16:34:32 UTC (rev 267623)
@@ -1,3 +1,53 @@
+2020-09-26 Sam Weinig <[email protected]>
+
+ [Preferences] It should be possible to have different default values for WebKitLegacy and WebKit in preference yaml files
+ https://bugs.webkit.org/show_bug.cgi?id=216987
+
+ Reviewed by Darin Adler.
+
+ Add new syntax for default values that allows specializing based on both frontend (WebKit or
+ WebKitLegacy) and then futher based on platform macros. For example, the preference for
+ CSSTypedOMEnabled now looks like:
+
+ CSSTypedOMEnabled:
+ type: bool
+ humanReadableName: "CSS Typed OM"
+ humanReadableDescription: "Enable the CSS Typed OM"
+ webcoreBinding: RuntimeEnabledFeatures
+ condition: ENABLE(CSS_TYPED_OM)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ "ENABLE(EXPERIMENTAL_FEATURES) && (PLATFORM(GTK) || PLATFORM(WPE))": true
+ default: false
+
+ Which means that in WebKitLegacy, the default value is false, and in WebKit, the default
+ value will be:
+
+ #if ENABLE(EXPERIMENTAL_FEATURES) && (PLATFORM(GTK) || PLATFORM(WPE))
+ true
+ #else
+ false
+ #endif
+
+ As many platform macro based conditions can be provided as wanted, and they are evaluated
+ in the order specified in the file.
+
+ The syntax currently always requires explicitly specifying WebKitLegacy and WebKit and default
+ for each, even if they are all the same, but could be extended in the future to allow compaction
+ if that becomes desirable. There is also not yet support for conditionally enabling a feature
+ based on os-feature-flags or linked-on-or-after checks, so those still require specifying the
+ default value as a function, but that seems like a nice future improvement.
+
+ As this is still staging for doing this for both WebKitLegacy and WebKit, this change only effects
+ WebKitLegacy for now, and subsequent changes will move this to a shared location.
+
+ * Scripts/GeneratePreferences.rb:
+ * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
+ * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.mm.erb:
+ * WebView/WebPreferencesExperimental.yaml:
+
2020-09-25 Antoine Quint <[email protected]>
Add an experimental feature flag for CSS individual transform properties
Modified: trunk/Source/WebKitLegacy/mac/Scripts/GeneratePreferences.rb (267622 => 267623)
--- trunk/Source/WebKitLegacy/mac/Scripts/GeneratePreferences.rb 2020-09-26 14:14:13 UTC (rev 267622)
+++ trunk/Source/WebKitLegacy/mac/Scripts/GeneratePreferences.rb 2020-09-26 16:34:32 UTC (rev 267623)
@@ -29,27 +29,31 @@
require 'yaml'
options = {
+ :frontend => nil,
:basePreferences => nil,
:debugPreferences => nil,
:experimentalPreferences => nil,
:internalPreferences => nil,
- :outputDirectory => nil
+ :outputDirectory => nil,
+ :templates => []
}
optparse = OptionParser.new do |opts|
- opts.banner = "Usage: #{File.basename($0)} --input file"
+ opts.banner = "Usage: #{File.basename($0)} --input file"
- opts.separator ""
+ opts.separator ""
- opts.on("--base input", "file to generate preferences from") { |basePreferences| options[:basePreferences] = basePreferences }
- opts.on("--debug input", "file to generate debug preferences from") { |debugPreferences| options[:debugPreferences] = debugPreferences }
- opts.on("--experimental input", "file to generate experimental preferences from") { |experimentalPreferences| options[:experimentalPreferences] = experimentalPreferences }
- opts.on("--internal input", "file to generate internal preferences from") { |internalPreferences| options[:internalPreferences] = internalPreferences }
- opts.on("--outputDir output", "directory to generate file in") { |output| options[:outputDirectory] = output }
+ opts.on("--frontend input", "frontend to generate preferences for (WebKit, WebKitLegacy)") { |frontend| options[:frontend] = frontend }
+ opts.on("--base input", "file to generate preferences from") { |basePreferences| options[:basePreferences] = basePreferences }
+ opts.on("--debug input", "file to generate debug preferences from") { |debugPreferences| options[:debugPreferences] = debugPreferences }
+ opts.on("--experimental input", "file to generate experimental preferences from") { |experimentalPreferences| options[:experimentalPreferences] = experimentalPreferences }
+ opts.on("--internal input", "file to generate internal preferences from") { |internalPreferences| options[:internalPreferences] = internalPreferences }
+ opts.on("--template input", "template to use for generation (may be specified multiple times") { |template| options[:templates] << template }
+ opts.on("--outputDir output", "directory to generate file in") { |output| options[:outputDirectory] = output }
end
optparse.parse!
-if !options[:basePreferences] || !options[:debugPreferences] || !options[:experimentalPreferences] || !options[:internalPreferences]
+if !options[:frontend] || !options[:basePreferences] || !options[:debugPreferences] || !options[:experimentalPreferences] || !options[:internalPreferences]
puts optparse
exit -1
end
@@ -92,17 +96,16 @@
class Preference
attr_accessor :name
attr_accessor :type
- attr_accessor :defaultValue
attr_accessor :humanReadableName
attr_accessor :humanReadableDescription
attr_accessor :webcoreBinding
attr_accessor :condition
attr_accessor :hidden
+ attr_accessor :frontendSpecificDefaultValues
- def initialize(name, opts)
+ def initialize(name, opts, frontend)
@name = name
@type = opts["type"]
- @defaultValue = opts["defaultValue"]
@humanReadableName = '"' + (opts["humanReadableName"] || "") + '"'
@humanReadableDescription = '"' + (opts["humanReadableDescription"] || "") + '"'
@getter = opts["getter"]
@@ -110,6 +113,7 @@
@webcoreName = opts["webcoreName"]
@condition = opts["condition"]
@hidden = opts["hidden"] || false
+ @frontendSpecificDefaultValues = opts["defaultValue"][frontend]
end
def nameLower
@@ -156,8 +160,9 @@
class Preferences
attr_accessor :preferences
- def initialize(parsedBasePreferences, parsedDebugPreferences, parsedExperimentalPreferences, parsedInternalPreferences, outputDirectory)
+ def initialize(parsedBasePreferences, parsedDebugPreferences, parsedExperimentalPreferences, parsedInternalPreferences, outputDirectory, frontend)
@outputDirectory = outputDirectory
+ @frontend = frontend
@preferences = []
@preferencesNotDebug = []
@@ -167,7 +172,7 @@
if parsedBasePreferences
parsedBasePreferences.each do |name, options|
- preference = Preference.new(name, options)
+ preference = Preference.new(name, options, @frontend)
@preferences << preference
@preferencesNotDebug << preference
end
@@ -174,7 +179,7 @@
end
if parsedDebugPreferences
parsedDebugPreferences.each do |name, options|
- preference = Preference.new(name, options)
+ preference = Preference.new(name, options, @frontend)
@preferences << preference
@preferencesDebug << preference
end
@@ -181,7 +186,7 @@
end
if parsedExperimentalPreferences
parsedExperimentalPreferences.each do |name, options|
- preference = Preference.new(name, options)
+ preference = Preference.new(name, options, @frontend)
@preferences << preference
@experimentalFeatures << preference
end
@@ -188,7 +193,7 @@
end
if parsedInternalPreferences
parsedInternalPreferences.each do |name, options|
- preference = Preference.new(name, options)
+ preference = Preference.new(name, options, @frontend)
@preferences << preference
@internalDebugFeatures << preference
end
@@ -217,7 +222,8 @@
end
end
-preferences = Preferences.new(parsedBasePreferences, parsedDebugPreferences, parsedExperimentalPreferences, parsedInternalPreferences, options[:outputDirectory])
-preferences.renderTemplate("WebPreferencesDefinitions.h")
-preferences.renderTemplate("WebPreferencesExperimentalFeatures.mm")
-preferences.renderTemplate("WebViewPreferencesChangedGenerated.mm")
+preferences = Preferences.new(parsedBasePreferences, parsedDebugPreferences, parsedExperimentalPreferences, parsedInternalPreferences, options[:outputDirectory], options[:frontend])
+
+options[:templates].each do |template|
+ preferences.renderTemplate(template)
+end
Modified: trunk/Source/WebKitLegacy/mac/Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb (267622 => 267623)
--- trunk/Source/WebKitLegacy/mac/Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb 2020-09-26 14:14:13 UTC (rev 267622)
+++ trunk/Source/WebKitLegacy/mac/Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb 2020-09-26 16:34:32 UTC (rev 267623)
@@ -32,19 +32,33 @@
// Default initialization of WebPreferences' internal dictionary.
<%- for @pref in @experimentalFeatures do -%>
-<%- if @pref.condition -%>
+<%- if @pref.condition -%>
#if <%= @pref.condition %>
-#define INITIALIZE_DEFAULT_PREFERENCES_DICTIONARY_FROM_GENERATED_PREFERENCES_<%= @pref.name %> @(<%= @pref.defaultValue %>), @"WebKit<%= @pref.name %>",
+<%- end -%>
+<%- if @pref.frontendSpecificDefaultValues.size() == 1 -%>
+#define DEFAULT_VALUE_FOR_<%= @pref.name %> <%= @pref.frontendSpecificDefaultValues['default'] %>
+<%- else -%>
+<%- @pref.frontendSpecificDefaultValues.each_with_index do |(key, value), index| -%>
+<%- if index == 0 -%>
+#if <%= key %>
+<%- elsif index != @pref.frontendSpecificDefaultValues.size() - 1 -%>
+#elif <%= key %>
+<%- else -%>
#else
-#define INITIALIZE_DEFAULT_PREFERENCES_DICTIONARY_FROM_GENERATED_PREFERENCES_<%= @pref.name %> @NO, @"WebKit<%= @pref.name %>",
+<%- end -%>
+#define DEFAULT_VALUE_FOR_<%= @pref.name %> <%= value %>
+<%- end -%>
#endif
-<% else -%>
-#define INITIALIZE_DEFAULT_PREFERENCES_DICTIONARY_FROM_GENERATED_PREFERENCES_<%= @pref.name %> @(<%= @pref.defaultValue %>), @"WebKit<%= @pref.name %>",
+<%- end -%>
+<%- if @pref.condition -%>
+#else
+#define DEFAULT_VALUE_FOR_<%= @pref.name %> false
+#endif
+<%- end -%>
<%- end -%>
-<%- end -%>
#define INITIALIZE_DEFAULT_PREFERENCES_DICTIONARY_FROM_GENERATED_PREFERENCES \
<%- for @pref in @experimentalFeatures do -%>
- INITIALIZE_DEFAULT_PREFERENCES_DICTIONARY_FROM_GENERATED_PREFERENCES_<%= @pref.name %> \
+ @(DEFAULT_VALUE_FOR_<%= @pref.name %>), @"WebKit<%= @pref.name %>", \
<%- end -%>
\
Modified: trunk/Source/WebKitLegacy/mac/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.mm.erb (267622 => 267623)
--- trunk/Source/WebKitLegacy/mac/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.mm.erb 2020-09-26 14:14:13 UTC (rev 267622)
+++ trunk/Source/WebKitLegacy/mac/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.mm.erb 2020-09-26 16:34:32 UTC (rev 267623)
@@ -28,7 +28,7 @@
#import "WebPreferencesPrivate.h"
#import "WebFeatureInternal.h"
-#import "WebPreferencesDefaultValues.h"
+#import "WebPreferencesDefinitions.h"
using namespace WebKit;
@@ -41,7 +41,7 @@
<%- if @pref.condition -%>
#if <%= @pref.condition %>
<%- end -%>
- [[WebFeature alloc] initWithKey:@"<%= @pref.name %>" name:@<%= @pref.humanReadableName %> details:@<%= @pref.humanReadableDescription %> defaultValue:<%= @pref.defaultValue %> hidden:<%= @pref.hidden %>],
+ [[WebFeature alloc] initWithKey:@"<%= @pref.name %>" name:@<%= @pref.humanReadableName %> details:@<%= @pref.humanReadableDescription %> defaultValue:DEFAULT_VALUE_FOR_<%= @pref.name %> hidden:<%= @pref.hidden %>],
<%- if @pref.condition -%>
#endif
<%- end -%>
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebPreferencesDefaultValues.h (267622 => 267623)
--- trunk/Source/WebKitLegacy/mac/WebView/WebPreferencesDefaultValues.h 2020-09-26 14:14:13 UTC (rev 267622)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebPreferencesDefaultValues.h 2020-09-26 16:34:32 UTC (rev 267623)
@@ -27,12 +27,6 @@
#include <wtf/Forward.h>
-#if ENABLE(EXPERIMENTAL_FEATURES)
-#define DEFAULT_EXPERIMENTAL_FEATURES_ENABLED true
-#else
-#define DEFAULT_EXPERIMENTAL_FEATURES_ENABLED false
-#endif
-
#if PLATFORM(MAC)
#define DEFAULT_SUBPIXEL_ANTIALIASED_LAYER_TEXT_ENABLED true
#else
@@ -57,7 +51,4 @@
bool defaultWebXREnabled();
#endif
-bool defaultVisualViewportAPIEnabled();
-bool defaultModernUnprefixedWebAudioEnabled();
-
} // namespace WebKit
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebPreferencesDefaultValues.mm (267622 => 267623)
--- trunk/Source/WebKitLegacy/mac/WebView/WebPreferencesDefaultValues.mm 2020-09-26 14:14:13 UTC (rev 267622)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebPreferencesDefaultValues.mm 2020-09-26 16:34:32 UTC (rev 267623)
@@ -93,22 +93,4 @@
#endif // ENABLE(WEBXR)
-bool defaultVisualViewportAPIEnabled()
-{
-#if PLATFORM(IOS_FAMILY)
- return false;
-#else
- return true;
-#endif
-}
-
-bool defaultModernUnprefixedWebAudioEnabled()
-{
-#if PLATFORM(IOS_FAMILY)
- return true;
-#else
- return false;
-#endif
-}
-
} // namespace WebKit
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebPreferencesExperimental.yaml (267622 => 267623)
--- trunk/Source/WebKitLegacy/mac/WebView/WebPreferencesExperimental.yaml 2020-09-26 14:14:13 UTC (rev 267622)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebPreferencesExperimental.yaml 2020-09-26 16:34:32 UTC (rev 267623)
@@ -25,575 +25,886 @@
# The type should be boolean.
# They must include a humanReadableName and humanReadableDescription. This is
# the text exposed to the user from the WebKit client.
-# The default value may be either false (for unstable features) or
-# DEFAULT_EXPERIMENTAL_FEATURES_ENABLED (for features that are ready for
-# wider testing).
-BlankAnchorTargetImpliesNoOpenerEnabled:
+AccessibilityObjectModelEnabled:
type: bool
- defaultValue: true
- humanReadableName: "Blank anchor target implies rel=noopener"
- humanReadableDescription: "target=_blank on anchor elements implies rel=noopener"
-
-DisallowSyncXHRDuringPageDismissalEnabled:
- type: bool
- defaultValue: true
- humanReadableName: "Disallow sync XHR during page dismissal"
- humanReadableDescription: "Disallow synchronous XMLHttpRequest during page dismissal"
-
-ThirdPartyIframeRedirectBlockingEnabled:
- type: bool
- defaultValue: true
- humanReadableName: "Block top-level redirects by third-party iframes"
- humanReadableDescription: "Block top-level redirects by third-party iframes"
-
-GoogleAntiFlickerOptimizationQuirkEnabled:
- type: bool
- defaultValue: true
- 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"
-
-UserGesturePromisePropagationEnabled:
- type: bool
- defaultValue: true
+ humanReadableName: "Accessibility Object Model"
+ humanReadableDescription: "Accessibility Object Model support"
webcoreBinding: RuntimeEnabledFeatures
- humanReadableName: "UserGesture Promise Propagation"
- humanReadableDescription: "UserGesture Promise Propagation"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-ModernUnprefixedWebAudioEnabled:
+AdClickAttributionEnabled:
type: bool
- defaultValue: WebKit::defaultModernUnprefixedWebAudioEnabled()
- condition: ENABLE(WEB_AUDIO)
- humanReadableName: "Modern WebAudio API"
- humanReadableDescription: "Modern and unprefixed WebAudio API"
+ humanReadableName: "Ad Click Attribution"
+ humanReadableDescription: "Enable Ad Click Attribution for Cross-Site Link Navigations"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-RequestIdleCallbackEnabled:
+AdClickAttributionDebugModeEnabled:
type: bool
- defaultValue: false
- humanReadableName: "requestIdleCallback"
- humanReadableDescription: "Enable requestIdleCallback support"
-
-HighlightAPIEnabled:
- type: bool
- defaultValue: false
- humanReadableName: "Highlight API"
- humanReadableDescription: "Highlight API support"
+ humanReadableName: "Ad Click Attribution Debug Mode"
+ humanReadableDescription: "Enable Ad Click Attribution Debug Mode"
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:
+AspectRatioOfImgFromWidthAndHeightEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Paint Timing"
- humanReadableDescription: "Enable PaintTiming API"
- webcoreBinding: RuntimeEnabledFeatures
+ humanReadableName: "Aspect ratio of <img> from width and height"
+ humanReadableDescription: "Map HTML attributes width/height to the default aspect ratio of <img>"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ 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
- defaultValue: false
humanReadableName: "Async clipboard API"
humanReadableDescription: "Enable the async clipboard API"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ "PLATFORM(COCOA)" : true
+ default: false
-ShouldDeferAsynchronousScriptsUntilAfterDocumentLoadOrFirstPaint:
+BlankAnchorTargetImpliesNoOpenerEnabled:
type: bool
- defaultValue: true
- humanReadableName: "Defer async scripts until DOMContentLoaded or first-paint"
- humanReadableDescription: "Defer async scripts until DOMContentLoaded or first-paint"
+ humanReadableName: "Blank anchor target implies rel=noopener"
+ humanReadableDescription: "target=_blank on anchor elements implies rel=noopener"
+ defaultValue:
+ WebKitLegacy:
+ default: true
+ WebKit:
+ default: true
-# FIXME: This is set to DEFAULT_EXPERIMENTAL_FEATURES_ENABLED in WebKit2. Perhaps we should consider using that for WebKitLegacy as well.
-SpringTimingFunctionEnabled:
+CoreImageAcceleratedFilterRenderEnabled:
type: bool
- defaultValue: false
- humanReadableName: "CSS Spring Animations"
- humanReadableDescription: "CSS Spring Animation prototype"
+ humanReadableName: "CoreImage-Accelerated Filter Rendering"
+ humanReadableDescription: "Accelerated CSS and SVG filter rendering using CoreImage"
+ condition: ENABLE(CORE_IMAGE_ACCELERATED_FILTER_RENDER)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-# FIXME: This is set to DEFAULT_EXPERIMENTAL_FEATURES_ENABLED in WebKit2. Perhaps we should consider using that for WebKitLegacy as well.
-ImageBitmapEnabled:
+CoreMathMLEnabled:
type: bool
- defaultValue: true
- humanReadableName: "ImageBitmap"
- humanReadableDescription: "Support for the ImageBitmap APIs"
- webcoreBinding: RuntimeEnabledFeatures
+ humanReadableName: "MathML Core"
+ humanReadableDescription: "Disable features removed from the MathML Core spec."
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ "PLATFORM(GTK) || PLATFORM(WPE)": true
+ default: false
-# FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well.
-IntersectionObserverEnabled:
+CSSCustomPropertiesAndValuesEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Intersection Observer"
- humanReadableDescription: "Enable Intersection Observer support"
- condition: ENABLE(INTERSECTION_OBSERVER)
+ humanReadableName: "CSS Custom Properties and Values API"
+ humanReadableDescription: "Enable CSS Custom Properties and Values API"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-VisualViewportAPIEnabled:
+# FIXME: This is enabled when ENABLE(EXPERIMENTAL_FEATURES) is true in WebKit2. Perhaps we should consider using that for WebKitLegacy as well.
+CSSIndividualTransformPropertiesEnabled:
type: bool
- defaultValue: WebKit::defaultVisualViewportAPIEnabled()
- humanReadableName: "Visual Viewport API"
- humanReadableDescription: "Enable Visual Viewport API"
+ humanReadableName: "CSS Individual Transform Properties"
+ humanReadableDescription: "Support for the translate, scale and rotate CSS properties"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ "ENABLE(EXPERIMENTAL_FEATURES)" : true
+ default: false
-SyntheticEditingCommandsEnabled:
- type: bool
- defaultValue: true
- humanReadableName: "Synthetic Editing Commands"
- humanReadableDescription: "Enable Synthetic Editing Commands"
-
CSSOMViewSmoothScrollingEnabled:
type: bool
- defaultValue: false
humanReadableName: "CSSOM View Smooth Scrolling"
humanReadableDescription: "Enable DOM API and CSS property for 'smooth' scroll behavior"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-# FIXME: This is set to DEFAULT_EXPERIMENTAL_FEATURES_ENABLED in WebKit2. Perhaps we should consider using that for WebKitLegacy as well.
-WebAnimationsCompositeOperationsEnabled:
- type: bool
- defaultValue: false
- humanReadableName: "Web Animations composite operations"
- humanReadableDescription: "Support for the CompositeOperation enum and properties consuming it"
- webcoreBinding: RuntimeEnabledFeatures
-
-# FIXME: This is set to DEFAULT_EXPERIMENTAL_FEATURES_ENABLED in WebKit2. Perhaps we should consider using that for WebKitLegacy as well.
-WebAnimationsMutableTimelinesEnabled:
- type: bool
- defaultValue: false
- humanReadableName: "Web Animations mutable timelines"
- humanReadableDescription: "Support for setting the timeline property of an Animation object"
- webcoreBinding: RuntimeEnabledFeatures
-
-WebGL2Enabled:
- type: bool
- defaultValue: true
- humanReadableName: "WebGL 2.0"
- humanReadableDescription: "WebGL 2 prototype"
- webcoreBinding: RuntimeEnabledFeatures
- condition: ENABLE(WEBGL2)
-
-WebGPUEnabled:
- type: bool
- defaultValue: WebKit::defaultWebGPUEnabled()
- humanReadableName: "WebGPU"
- humanReadableDescription: "WebGPU Sketch prototype"
- webcoreBinding: RuntimeEnabledFeatures
- condition: ENABLE(WEBGPU)
-
-MaskWebGLStringsEnabled:
- type: bool
- defaultValue: true
- humanReadableName: "Mask WebGL Strings"
- humanReadableDescription: "Mask WebGL Vendor, Renderer, Shader Language Strings"
- webcoreBinding: RuntimeEnabledFeatures
- condition: ENABLE(WEBGL) || ENABLE(WEBGL2)
-
-AccessibilityObjectModelEnabled:
- type: bool
- defaultValue: false
- humanReadableName: "Accessibility Object Model"
- humanReadableDescription: "Accessibility Object Model support"
- webcoreBinding: RuntimeEnabledFeatures
-
-ServerTimingEnabled:
- type: bool
- defaultValue: false
- humanReadableName: "Server Timing"
- humanReadableDescription: "Enable Server Timing API"
- webcoreBinding: RuntimeEnabledFeatures
- webcoreName: serverTimingEnabled
-
-CSSCustomPropertiesAndValuesEnabled:
- type: bool
- defaultValue: false
- humanReadableName: "CSS Custom Properties and Values API"
- humanReadableDescription: "Enable CSS Custom Properties and Values API"
-
CSSPaintingAPIEnabled:
type: bool
- defaultValue: false
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) && (PLATFORM(GTK) || PLATFORM(WPE))": true
+ default: false
CSSTypedOMEnabled:
type: bool
- defaultValue: false
humanReadableName: "CSS Typed OM"
humanReadableDescription: "Enable the CSS Typed OM"
webcoreBinding: RuntimeEnabledFeatures
condition: ENABLE(CSS_TYPED_OM)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ "ENABLE(EXPERIMENTAL_FEATURES) && (PLATFORM(GTK) || PLATFORM(WPE))": true
+ default: false
-# WebKitLegacy has a preference called WebSQLEnabled, but there is currently no easy
-# way to map this, WebSQLDisabled, to it.
-#WebSQLDisabled:
-# type: bool
-# defaultValue: WebKit::defaultWebSQLDisabled()
-# humanReadableName: "Disable Web SQL"
-# humanReadableDescription: "Disable Web SQL"
-# webcoreBinding: RuntimeEnabledFeatures
-
-# FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well.
-MediaCapabilitiesExtensionsEnabled:
+DialogElementEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Media Capabilities Extensions"
- humanReadableDescription: "Media Capabilities Extensions"
+ humanReadableName: "Dialog Element"
+ humanReadableDescription: "Enable the Dialog Element"
+ 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.
-HDRMediaCapabilitiesEnabled:
+# FIXME: Starting the preference name with "Disable" is inconsistent with most other preferences and should be changed.
+DisableMediaExperiencePIDInheritance:
type: bool
- defaultValue: false
- humanReadableName: "HDR Media Capabilities"
- humanReadableDescription: "HDR Media Capabilities"
+ webcoreBinding: RuntimeEnabledFeatures
+ humanReadableName: "Disable Media Experience PID Inheritance"
+ humanReadableDescription: "Disable Media Experience PID Inheritance"
+ condition: HAVE(CELESTIAL)
+ 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.
-ResizeObserverEnabled:
+DisallowSyncXHRDuringPageDismissalEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Resize Observer"
- humanReadableDescription: "Enable Resize Observer support"
- condition: ENABLE(RESIZE_OBSERVER)
+ humanReadableName: "Disallow sync XHR during page dismissal"
+ humanReadableDescription: "Disallow synchronous XMLHttpRequest during page dismissal"
+ defaultValue:
+ WebKitLegacy:
+ default: true
+ WebKit:
+ default: true
-AdClickAttributionEnabled:
+# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely.
+ExposeSpeakersEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Ad Click Attribution"
- humanReadableDescription: "Enable Ad Click Attribution for Cross-Site Link Navigations"
+ humanReadableName: "Allow speaker device selection"
+ humanReadableDescription: "Allow speaker device selection"
+ condition: ENABLE(MEDIA_STREAM)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-AdClickAttributionDebugModeEnabled:
- type: bool
- defaultValue: false
- humanReadableName: "Ad Click Attribution Debug Mode"
- humanReadableDescription: "Enable Ad Click Attribution Debug Mode"
- webcoreBinding: RuntimeEnabledFeatures
-
# 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
- defaultValue: true
humanReadableName: "Fetch API Request KeepAlive"
humanReadableDescription: "Enable Fetch API Request KeepAlive"
webcoreBinding: RuntimeEnabledFeatures
- webcoreName: fetchAPIKeepAliveEnabled
+ defaultValue:
+ WebKitLegacy:
+ default: true
+ WebKit:
+ default: true
# FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well.
GenericCueAPIEnabled:
type: bool
- defaultValue: false
condition: ENABLE(VIDEO)
humanReadableName: "Generic Text Track Cue API"
humanReadableDescription: "Enable Generic Text Track Cue API"
- webcoreName: genericCueAPIEnabled
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: true
-# FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well.
-AspectRatioOfImgFromWidthAndHeightEnabled:
+GoogleAntiFlickerOptimizationQuirkEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Aspect ratio of <img> from width and height"
- humanReadableDescription: "Map HTML attributes width/height to the default aspect ratio of <img>"
+ 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
-# FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well.
-ReferrerPolicyAttributeEnabled:
+HighlightAPIEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Referrer Policy attribute"
- humanReadableDescription: "Enable Referrer Policy attribute"
+ humanReadableName: "Highlight API"
+ humanReadableDescription: "Highlight API support"
+ webcoreBinding: RuntimeEnabledFeatures
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-PageAtRuleSupportEnabled:
+# FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well.
+HDRMediaCapabilitiesEnabled:
type: bool
- defaultValue: false
- humanReadableName: "@page CSS at-rule support"
- humanReadableDescription: "Enable @page support"
- webcoreBinding: RuntimeEnabledFeatures
+ humanReadableName: "HDR Media Capabilities"
+ humanReadableDescription: "HDR Media Capabilities"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: true
-CoreMathMLEnabled:
+# FIXME: This is not implemented for WebKitLegacy, so should be excluded from WebKitLegacy entirely.
+HTTP3Enabled:
type: bool
- defaultValue: false
- humanReadableName: "MathML Core"
- humanReadableDescription: "Disable features removed from the MathML Core spec."
+ humanReadableName: "HTTP/3"
+ humanReadableDescription: "Enable HTTP/3"
+ webcoreBinding: none
+ condition: HAVE(CFNETWORK_ALTERNATIVE_SERVICE)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-LinkPrefetchEnabled:
+# FIXME: This is not implemented for WebKitLegacy, so should be excluded from WebKitLegacy entirely.
+HTTPSUpgradeEnabled:
type: bool
- defaultValue: false
- humanReadableName: "LinkPrefetch"
- humanReadableDescription: "Enable LinkedPrefetch"
+ humanReadableName: "Automatic HTTPS upgrade"
+ humanReadableDescription: "Automatic HTTPS upgrade for known supported sites"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-LinkPreloadResponsiveImagesEnabled:
+# FIXME: This is enabled when ENABLE(EXPERIMENTAL_FEATURES) is true in WebKit2. Perhaps we should consider using that for WebKitLegacy as well.
+ImageBitmapEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Link preload responsive images"
- humanReadableDescription: "Enable link preload responsive images"
+ humanReadableName: "ImageBitmap"
+ humanReadableDescription: "Support for the ImageBitmap APIs"
+ webcoreBinding: RuntimeEnabledFeatures
+ defaultValue:
+ WebKitLegacy:
+ default: true
+ WebKit:
+ "ENABLE(EXPERIMENTAL_FEATURES)" : true
+ default: false
-LazyImageLoadingEnabled:
+IncrementalPDFLoadingEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Lazy image loading"
- humanReadableDescription: "Enable lazy image loading support"
+ humanReadableName: "Incremental PDF Loading"
+ humanReadableDescription: "Enable Incremental PDF Loading on supported platforms"
+ condition: HAVE(INCREMENTAL_PDF_APIS)
+ webcoreBinding: RuntimeEnabledFeatures
+ defaultValue:
+ WebKitLegacy:
+ default: WebKit::defaultIncrementalPDFEnabled()
+ WebKit:
+ default: WebKit::defaultIncrementalPDFEnabled()
-LazyIframeLoadingEnabled:
+# FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well.
+IntersectionObserverEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Lazy iframe loading"
- humanReadableDescription: "Enable lazy iframe loading support"
+ humanReadableName: "Intersection Observer"
+ humanReadableDescription: "Enable Intersection Observer support"
+ condition: ENABLE(INTERSECTION_OBSERVER)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: true
-IsThirdPartyCookieBlockingDisabled:
+# FIXME: This is not relevent for WebKitLegacy, so should be excluded from WebKitLegacy entirely.
+InProcessCookieCacheEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Disable Full 3rd-Party Cookie Blocking (ITP)"
- humanReadableDescription: "Disable full third-party cookie blocking when Intelligent Tracking Prevention is enabled"
+ humanReadableName: "In-Process Cookie Cache"
+ humanReadableDescription: "In-Process DOM Cookie Cache"
+ defaultValue:
+ WebKitLegacy:
+ default: true
+ WebKit:
+ default: true
+# FIXME: The 'Is' prefix is inconsistent with most other preferences and should be removed.
IsFirstPartyWebsiteDataRemovalDisabled:
type: bool
- defaultValue: false
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
+# 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
+
+# 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: false
+
+# FIXME: The 'Is' prefix is inconsistent with most other preferences and should be removed.
IsSameSiteStrictEnforcementEnabled:
type: bool
- defaultValue: false
humanReadableName: "SameSite strict enforcement (ITP)"
humanReadableDescription: "Enable SameSite strict enforcement to mitigate bounce tracking"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-IsLoggedInAPIEnabled:
+# FIXME: The 'Is' prefix is inconsistent with most other preferences and should be removed.
+IsThirdPartyCookieBlockingDisabled:
type: bool
- defaultValue: false
- humanReadableName: "IsLoggedIn web API"
- humanReadableDescription: "Enable the proposed IsLoggedIn web API"
+ 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
-# FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well.
-RemotePlaybackEnabled:
+LazyIframeLoadingEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Remote Playback API"
- humanReadableDescription: "Enable Remote Playback API"
- condition: ENABLE(WIRELESS_PLAYBACK_TARGET)
+ humanReadableName: "Lazy iframe loading"
+ humanReadableDescription: "Enable lazy iframe loading support"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-DialogElementEnabled:
+LazyImageLoadingEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Dialog Element"
- humanReadableDescription: "Enable the Dialog Element"
- webcoreBinding: RuntimeEnabledFeatures
+ humanReadableName: "Lazy image loading"
+ humanReadableDescription: "Enable lazy image loading support"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-WebShareFileAPIEnabled:
+LinkPrefetchEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Web Share API Level 2"
- humanReadableDescription: "Enable level 2 of Web Share API"
+ humanReadableName: "LinkPrefetch"
+ humanReadableDescription: "Enable LinkedPrefetch"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-IncrementalPDFLoadingEnabled:
+LinkPreloadResponsiveImagesEnabled:
type: bool
- defaultValue: WebKit::defaultIncrementalPDFEnabled()
- humanReadableName: "Incremental PDF Loading"
- humanReadableDescription: "Enable Incremental PDF Loading on supported platforms"
- condition: HAVE(INCREMENTAL_PDF_APIS)
- webcoreBinding: RuntimeEnabledFeatures
+ humanReadableName: "Link preload responsive images"
+ humanReadableDescription: "Enable link preload responsive images"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-WebXREnabled:
+MaskWebGLStringsEnabled:
type: bool
- defaultValue: WebKit::defaultWebXREnabled()
- 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"
+ humanReadableName: "Mask WebGL Strings"
+ humanReadableDescription: "Mask WebGL Vendor, Renderer, Shader Language Strings"
webcoreBinding: RuntimeEnabledFeatures
- condition: ENABLE(WEBXR)
+ condition: ENABLE(WEBGL) || ENABLE(WEBGL2)
+ defaultValue:
+ WebKitLegacy:
+ default: true
+ WebKit:
+ default: true
-ReadableByteStreamAPIEnabled:
+# FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well.
+MediaCapabilitiesExtensionsEnabled:
type: bool
- defaultValue: false
- humanReadableName: "ReadableByteStream"
- humanReadableDescription: "Enable Readable Byte Streams"
- webcoreBinding: RuntimeEnabledFeatures
+ humanReadableName: "Media Capabilities Extensions"
+ humanReadableDescription: "Media Capabilities Extensions"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: true
-WritableStreamAPIEnabled:
+# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely.
+MediaRecorderEnabled:
type: bool
- defaultValue: true
- humanReadableName: "WritableStream API"
- humanReadableDescription: "Enable Writable Stream API"
- webcoreBinding: RuntimeEnabledFeatures
+ humanReadableName: "MediaRecorder"
+ humanReadableDescription: "MediaRecorder"
+ condition: ENABLE(MEDIA_STREAM)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ "HAVE(AVASSETWRITERDELEGATE)": true
+ default: false
-TransformStreamAPIEnabled:
+ModernUnprefixedWebAudioEnabled:
type: bool
- defaultValue: true
- humanReadableName: "TransformStream API"
- humanReadableDescription: "Enable Transform Stream API"
- webcoreBinding: RuntimeEnabledFeatures
+ humanReadableName: "Modern WebAudio API"
+ humanReadableDescription: "Modern and unprefixed WebAudio API"
+ condition: ENABLE(WEB_AUDIO)
+ defaultValue:
+ WebKitLegacy:
+ "PLATFORM(IOS_FAMILY)" : true
+ default: false
+ WebKit:
+ default: true
-CoreImageAcceleratedFilterRenderEnabled:
+PageAtRuleSupportEnabled:
type: bool
- defaultValue: false
- humanReadableName: "CoreImage-Accelerated Filter Rendering"
- humanReadableDescription: "Accelerated CSS and SVG filter rendering using CoreImage"
- condition: ENABLE(CORE_IMAGE_ACCELERATED_FILTER_RENDER)
+ humanReadableName: "@page CSS at-rule support"
+ humanReadableDescription: "Enable @page support"
+ webcoreBinding: RuntimeEnabledFeatures
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-DisableMediaExperiencePIDInheritance:
+# FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well.
+PaintTimingEnabled:
type: bool
- defaultValue: false
+ humanReadableName: "Paint Timing"
+ humanReadableDescription: "Enable PaintTiming API"
webcoreBinding: RuntimeEnabledFeatures
- humanReadableName: "Disable Media Experience PID Inheritance"
- humanReadableDescription: "Disable Media Experience PID Inheritance"
- condition: HAVE(CELESTIAL)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ 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
+# FIXME: This is not relevent for WebKitLegacy, so should be excluded from WebKitLegacy entirely.
+ProcessSwapOnCrossSiteNavigationEnabled:
+ type: bool
+ humanReadableName: "Swap Processes on Cross-Site Navigation"
+ humanReadableDescription: "Swap WebContent Processes on cross-site navigations"
+ webcoreBinding: none
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ "PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(GTK) || PLATFORM(WPE)": true
+ default: false
-# FIXME: This is not implemented for WebKitLegacy, so should probably be removed.
-HTTPSUpgradeEnabled:
+ReadableByteStreamAPIEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Automatic HTTPS upgrade"
- humanReadableDescription: "Automatic HTTPS upgrade for known supported sites"
+ humanReadableName: "ReadableByteStream"
+ humanReadableDescription: "Enable Readable Byte Streams"
+ webcoreBinding: RuntimeEnabledFeatures
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-# FIXME: This is not relevent for WebKitLegacy, so should probably be removed.
-InProcessCookieCacheEnabled:
+# FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well.
+ReferrerPolicyAttributeEnabled:
type: bool
- defaultValue: true
- humanReadableName: "In-Process Cookie Cache"
- humanReadableDescription: "In-Process DOM Cookie Cache"
+ humanReadableName: "Referrer Policy attribute"
+ humanReadableDescription: "Enable Referrer Policy attribute"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: true
-# FIXME: This is not relevent for WebKitLegacy, so should probably be removed.
-UseGPUProcessForMediaEnabled:
+# FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well.
+RemotePlaybackEnabled:
type: bool
- defaultValue: false
- condition: ENABLE(GPU_PROCESS)
- humanReadableName: "Use GPU Process for media"
- humanReadableDescription: "Do all media loading and playback in the GPU Process"
- webcoreName: useGPUProcessForMediaEnabled
+ humanReadableName: "Remote Playback API"
+ humanReadableDescription: "Enable Remote Playback API"
+ condition: ENABLE(WIRELESS_PLAYBACK_TARGET)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: true
-# FIXME: Is this implemented for WebKitLegacy? If not, this should probably be removed.
-MediaRecorderEnabled:
+RequestIdleCallbackEnabled:
type: bool
- defaultValue: false
- condition: ENABLE(MEDIA_STREAM)
- humanReadableName: "MediaRecorder"
- humanReadableDescription: "MediaRecorder"
+ humanReadableName: "requestIdleCallback"
+ humanReadableDescription: "Enable requestIdleCallback support"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-# FIXME: Is this implemented for WebKitLegacy? If not, this should probably be removed.
+# FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well.
+ResizeObserverEnabled:
+ type: bool
+ humanReadableName: "Resize Observer"
+ humanReadableDescription: "Enable Resize Observer support"
+ condition: ENABLE(RESIZE_OBSERVER)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: true
+
+# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely.
ScreenCaptureEnabled:
type: bool
- defaultValue: false
condition: ENABLE(MEDIA_STREAM) && PLATFORM(MAC)
humanReadableName: "ScreenCapture"
humanReadableDescription: "Enable ScreenCapture"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: true
-# FIXME: Is this implemented for WebKitLegacy? If not, this should probably be removed.
-WebRTCH264LowLatencyEncoderEnabled:
+ServerTimingEnabled:
type: bool
- defaultValue: false
+ humanReadableName: "Server Timing"
+ humanReadableDescription: "Enable Server Timing API"
webcoreBinding: RuntimeEnabledFeatures
- condition: ENABLE(WEB_RTC)
- humanReadableName: "WebRTC H264 LowLatency encoder"
- humanReadableDescription: "Enable H264 LowLatency encoder"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-# FIXME: Is this implemented for WebKitLegacy? If not, this should probably be removed.
-WebRTCH265CodecEnabled:
+ShouldDeferAsynchronousScriptsUntilAfterDocumentLoadOrFirstPaint:
type: bool
- defaultValue: false
- webcoreBinding: RuntimeEnabledFeatures
- condition: ENABLE(WEB_RTC)
- humanReadableName: "WebRTC H265 codec"
- humanReadableDescription: "Enable WebRTC H265 codec"
+ 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
-# FIXME: Is this implemented for WebKitLegacy? If not, this should probably be removed.
-WebRTCVP9CodecEnabled:
+# FIXME: This is enabled when ENABLE(EXPERIMENTAL_FEATURES) is true in WebKit2. Perhaps we should consider using that for WebKitLegacy as well.
+SpringTimingFunctionEnabled:
type: bool
- defaultValue: false
- webcoreBinding: RuntimeEnabledFeatures
- condition: ENABLE(WEB_RTC)
- humanReadableName: "WebRTC VP9 codec"
- humanReadableDescription: "Enable WebRTC VP9 codec"
+ humanReadableName: "CSS Spring Animations"
+ humanReadableDescription: "CSS Spring Animation prototype"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ "ENABLE(EXPERIMENTAL_FEATURES)" : true
+ default: false
-# FIXME: This is not relevent for WebKitLegacy, so should probably be removed.
-WebRTCPlatformCodecsInGPUProcessEnabled:
+SyntheticEditingCommandsEnabled:
type: bool
- defaultValue: false
+ humanReadableName: "Synthetic Editing Commands"
+ humanReadableDescription: "Enable Synthetic Editing Commands"
+ defaultValue:
+ WebKitLegacy:
+ default: true
+ WebKit:
+ 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
+
+TransformStreamAPIEnabled:
+ type: bool
+ humanReadableName: "TransformStream API"
+ humanReadableDescription: "Enable Transform Stream API"
webcoreBinding: RuntimeEnabledFeatures
- condition: ENABLE(WEB_RTC)
- humanReadableName: "WebRTC Platform Codecs in GPU Process"
- humanReadableDescription: "Enable WebRTC Platform Codecs in GPU Process"
+ defaultValue:
+ WebKitLegacy:
+ default: true
+ WebKit:
+ default: true
-# FIXME: Is this implemented for WebKitLegacy? If not, this should probably be removed.
-ExposeSpeakersEnabled:
+UserGesturePromisePropagationEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Allow speaker device selection"
- humanReadableDescription: "Allow speaker device selection"
- condition: ENABLE(MEDIA_STREAM)
+ humanReadableName: "UserGesture Promise Propagation"
+ humanReadableDescription: "UserGesture Promise Propagation"
+ webcoreBinding: RuntimeEnabledFeatures
+ defaultValue:
+ WebKitLegacy:
+ default: true
+ WebKit:
+ default: true
-# FIXME: Is this implemented for WebKitLegacy? If not, this should probably be removed.
-PerElementSpeakerSelectionEnabled:
+VisualViewportAPIEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Allow per media element speaker device selection"
- humanReadableDescription: "Allow per media element speaker device selection"
- condition: ENABLE(MEDIA_STREAM)
+ humanReadableName: "Visual Viewport API"
+ humanReadableDescription: "Enable Visual Viewport API"
+ defaultValue:
+ WebKitLegacy:
+ "PLATFORM(IOS_FAMILY)" : false
+ default: true
+ WebKit:
+ default: true
-# FIXME: Is this implemented for WebKitLegacy? If not, this should probably be removed.
+# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely.
VP9DecoderEnabled:
type: bool
- defaultValue: false
- webcoreBinding: none
humanReadableName: "VP9 decoder"
humanReadableDescription: "Enable VP9 decoder"
+ webcoreBinding: none
condition: ENABLE(VP9)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: WebKit::defaultVP9DecoderEnabled()
-# FIXME: Is this implemented for WebKitLegacy? If not, this should probably be removed.
+# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely.
VP9SWDecoderEnabledOnBattery:
type: bool
- defaultValue: false
- webcoreBinding: none
humanReadableName: "VP9 SW decoder on battery"
humanReadableDescription: "Enable VP9 SW decoder on battery"
+ webcoreBinding: none
condition: ENABLE(VP9)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: WebKit::defaultVP9SWDecoderEnabledOnBattery()
-# FIXME: Is this implemented for WebKitLegacy? If not, this should probably be removed.
-WebMParserEnabled:
+
+# FIXME: This is enabled when ENABLE(EXPERIMENTAL_FEATURES) is true in WebKit2. Perhaps we should consider using that for WebKitLegacy as well.
+WebAnimationsCompositeOperationsEnabled:
type: bool
- defaultValue: false
+ humanReadableName: "Web Animations composite operations"
+ humanReadableDescription: "Support for the CompositeOperation enum and properties consuming it"
webcoreBinding: RuntimeEnabledFeatures
- humanReadableName: "WebM MSE parser"
- humanReadableDescription: "Enable WebM MSE parser"
- condition: ENABLE(MEDIA_SOURCE) && ENABLE(VP9)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ "ENABLE(EXPERIMENTAL_FEATURES)" : true
+ default: false
-# FIXME: Is this implemented for WebKitLegacy? If not, this should probably be removed.
+# FIXME: This is enabled when ENABLE(EXPERIMENTAL_FEATURES) is true in WebKit2. Perhaps we should consider using that for WebKitLegacy as well.
+WebAnimationsMutableTimelinesEnabled:
+ type: bool
+ humanReadableName: "Web Animations mutable timelines"
+ humanReadableDescription: "Support for setting the timeline property of an Animation object"
+ webcoreBinding: RuntimeEnabledFeatures
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ "ENABLE(EXPERIMENTAL_FEATURES)" : true
+ default: false
+
+# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely.
WebAuthenticationEnabled:
type: bool
- defaultValue: false
humanReadableName: "Web Authentication"
humanReadableDescription: "Enable Web Authentication support"
condition: ENABLE(WEB_AUTHN)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-# FIXME: Is this implemented for WebKitLegacy? If not, this should probably be removed.
+# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely.
WebAuthenticationLocalAuthenticatorEnabled:
type: bool
- defaultValue: false
humanReadableName: "Web Authentication Local Authenticator"
humanReadableDescription: "Enable Web Authentication local authenticator support"
condition: ENABLE(WEB_AUTHN)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
-# FIXME: This is not implemented for WebKitLegacy, so should probably be removed.
-HTTP3Enabled:
+WebGL2Enabled:
type: bool
- defaultValue: false
- humanReadableName: "HTTP/3"
- humanReadableDescription: "Enable HTTP/3"
- webcoreBinding: none
- condition: HAVE(CFNETWORK_ALTERNATIVE_SERVICE)
+ humanReadableName: "WebGL 2.0"
+ humanReadableDescription: "WebGL 2 prototype"
+ webcoreBinding: RuntimeEnabledFeatures
+ condition: ENABLE(WEBGL2)
+ defaultValue:
+ WebKitLegacy:
+ default: true
+ WebKit:
+ default: true
-# FIXME: This is not relevent for WebKitLegacy, so should probably be removed.
-ProcessSwapOnCrossSiteNavigationEnabled:
+WebGPUEnabled:
type: bool
- defaultValue: false
- humanReadableName: "Swap Processes on Cross-Site Navigation"
- humanReadableDescription: "Swap WebContent Processes on cross-site navigations"
- webcoreBinding: none
+ humanReadableName: "WebGPU"
+ humanReadableDescription: "WebGPU Sketch prototype"
+ webcoreBinding: RuntimeEnabledFeatures
+ condition: ENABLE(WEBGPU)
+ defaultValue:
+ WebKitLegacy:
+ default: WebKit::defaultWebGPUEnabled()
+ WebKit:
+ default: WebKit::defaultWebGPUEnabled()
-# FIXME: This is not implemented for WebKitLegacy, so should probably be removed.
-IsNSURLSessionWebSocketEnabled:
+# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely.
+WebMParserEnabled:
type: bool
- defaultValue: false
- humanReadableName: "NSURLSession WebSocket"
- humanReadableDescription: "Use NSURLSession WebSocket API"
webcoreBinding: RuntimeEnabledFeatures
- condition: HAVE(NSURLSESSION_WEBSOCKET)
+ humanReadableName: "WebM MSE parser"
+ humanReadableDescription: "Enable WebM MSE parser"
+ condition: ENABLE(MEDIA_SOURCE) && ENABLE(VP9)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: WebKit::defaultWebMParserEnabled()
-CSSIndividualTransformPropertiesEnabled:
+# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely.
+WebRTCH264LowLatencyEncoderEnabled:
type: bool
- defaultValue: false
- humanReadableName: "CSS Individual Transform Properties"
- humanReadableDescription: "Support for the translate, scale and rotate CSS properties"
+ humanReadableName: "WebRTC H264 LowLatency encoder"
+ humanReadableDescription: "Enable H264 LowLatency encoder"
+ webcoreBinding: RuntimeEnabledFeatures
+ condition: ENABLE(WEB_RTC)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: true
+
+# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely.
+WebRTCH265CodecEnabled:
+ type: bool
+ webcoreBinding: RuntimeEnabledFeatures
+ condition: ENABLE(WEB_RTC)
+ humanReadableName: "WebRTC H265 codec"
+ humanReadableDescription: "Enable WebRTC H265 codec"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
+
+# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely.
+WebRTCVP9CodecEnabled:
+ type: bool
+ humanReadableName: "WebRTC VP9 codec"
+ humanReadableDescription: "Enable WebRTC VP9 codec"
+ webcoreBinding: RuntimeEnabledFeatures
+ condition: ENABLE(WEB_RTC)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
+
+# FIXME: This is not relevent for WebKitLegacy, so should be excluded from WebKitLegacy entirely.
+WebRTCPlatformCodecsInGPUProcessEnabled:
+ type: bool
+ humanReadableName: "WebRTC Platform Codecs in GPU Process"
+ humanReadableDescription: "Enable WebRTC Platform Codecs in GPU Process"
+ webcoreBinding: RuntimeEnabledFeatures
+ condition: ENABLE(WEB_RTC)
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: WebKit::defaultWebRTCCodecsInGPUProcess()
+
+WebShareFileAPIEnabled:
+ type: bool
+ humanReadableName: "Web Share API Level 2"
+ humanReadableDescription: "Enable level 2 of Web Share API"
+ defaultValue:
+ WebKitLegacy:
+ default: false
+ WebKit:
+ default: false
+
+# WebKitLegacy has a preference called WebSQLEnabled, but there is currently no easy
+# way to map this, WebSQLDisabled, to it.
+#WebSQLDisabled:
+# type: bool
+# defaultValue: WebKit::defaultWebSQLDisabled()
+# humanReadableName: "Disable Web SQL"
+# humanReadableDescription: "Disable Web SQL"
+# webcoreBinding: RuntimeEnabledFeatures
+# defaultValue:
+# WebKitLegacy:
+# default: WebKit::defaultWebSQLDisabled()
+# WebKit:
+# default: true
+
+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"
+ webcoreBinding: RuntimeEnabledFeatures
+ condition: ENABLE(WEBXR)
+ defaultValue:
+ WebKitLegacy:
+ default: WebKit::defaultWebXREnabled()
+ WebKit:
+ default: WebKit::defaultWebXREnabled()
+
+WritableStreamAPIEnabled:
+ type: bool
+ humanReadableName: "WritableStream API"
+ humanReadableDescription: "Enable Writable Stream API"
+ webcoreBinding: RuntimeEnabledFeatures
+ defaultValue:
+ WebKitLegacy:
+ default: true
+ WebKit:
+ default: true
+