Title: [267623] trunk/Source/WebKitLegacy
Revision
267623
Author
[email protected]
Date
2020-09-26 09:34:32 -0700 (Sat, 26 Sep 2020)

Log Message

[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.

Source/WebKitLegacy:

* WebKitLegacy.xcodeproj/project.pbxproj:
Update script phase to explicitly specify the frontend (WebKitLegacy) and the templates to generate.

Source/WebKitLegacy/mac:

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:

Modified Paths

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
+
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to