Tweak WebPreferences*.yaml "exposed" key to only indicate that the key should not...
authorweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 20 Oct 2020 09:27:37 +0000 (09:27 +0000)
committerweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 20 Oct 2020 09:27:37 +0000 (09:27 +0000)
https://bugs.webkit.org/show_bug.cgi?id=217918

Reviewed by Darin Adler.

Source/WebKit:

Update to use new "exposed" prefix bindings and use default value explicitly
when updating settings for non-exposed preferences.

* Scripts/PreferencesTemplates/WebPageUpdatePreferences.cpp.erb:
* Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
* Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
* Scripts/PreferencesTemplates/WebPreferencesGetterSetters.cpp.erb:
* Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb:
* Scripts/PreferencesTemplates/WebPreferencesKeys.cpp.erb:
* Scripts/PreferencesTemplates/WebPreferencesKeys.h.erb:
* Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb:

Source/WebKitLegacy/mac:

Update to use new "exposed" prefix bindings and use default value explicitly
when updating settings for non-exposed preferences.

* Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
* Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.mm.erb:
* Scripts/PreferencesTemplates/WebPreferencesInternalFeatures.mm.erb:
* Scripts/PreferencesTemplates/WebViewPreferencesChangedGenerated.mm.erb:

Source/WTF:

* Scripts/GeneratePreferences.rb:
Tweak how the "exposed" key is interpreted to extend to keys with default values
for the current frontend (that should continue to be set on Settings for instance)
but that should not respect the key being passed in. For instance, the key
"AsyncFrameScrollingEnabled" has default values for all front ends, since we need
to set it to false in Settings when building WebKitLegacy, but is only exposed to
WebKit, so it won't be in WebKitLegacy's -[WebPreferences internalFeatures] array
and won't do anything if passed to -[WebPreferences _setBoolPreferenceForTestingWithValue:forKey:].

* Scripts/Preferences/WebPreferences.yaml:
Replace now incorrect uses of exposed with temporary key "webKitLegacyBinding" to indicate
that these keys should be valid, but currently use a custom binding in WebKitLegacy.

* Scripts/Preferences/WebPreferencesInternal.yaml:
Only expose AsyncFrameScrollingEnabled and AsyncOverflowScrollingEnabled to WebKit.
This maintains the behavior that these keys are not valid keys as test header commands
when run through DumpRenderTree.

Tools:

Update to use new "exposed" prefix bindings and use default value explicitly
when updating settings for non-exposed preferences.

* DumpRenderTree/Scripts/PreferencesTemplates/TestOptionsGeneratedKeys.h.erb:
* WebKitTestRunner/Scripts/PreferencesTemplates/TestOptionsGeneratedKeys.h.erb:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@268719 268f45cc-cd09-0410-ab3c-d52691b4dbfc

21 files changed:
Source/WTF/ChangeLog
Source/WTF/Scripts/GeneratePreferences.rb
Source/WTF/Scripts/Preferences/WebPreferences.yaml
Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml
Source/WebKit/ChangeLog
Source/WebKit/Scripts/PreferencesTemplates/WebPageUpdatePreferences.cpp.erb
Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb
Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb
Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesGetterSetters.cpp.erb
Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb
Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesKeys.cpp.erb
Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesKeys.h.erb
Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb
Source/WebKitLegacy/mac/ChangeLog
Source/WebKitLegacy/mac/Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb
Source/WebKitLegacy/mac/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.mm.erb
Source/WebKitLegacy/mac/Scripts/PreferencesTemplates/WebPreferencesInternalFeatures.mm.erb
Source/WebKitLegacy/mac/Scripts/PreferencesTemplates/WebViewPreferencesChangedGenerated.mm.erb
Tools/ChangeLog
Tools/DumpRenderTree/Scripts/PreferencesTemplates/TestOptionsGeneratedKeys.h.erb
Tools/WebKitTestRunner/Scripts/PreferencesTemplates/TestOptionsGeneratedKeys.h.erb

index 69cb4a6e81898d3de9d05615c90e5e2c372d33b8..60e120ab9db4d04501b119cbed8e270ee526ae2a 100644 (file)
@@ -1,3 +1,29 @@
+2020-10-20  Sam Weinig  <weinig@apple.com>
+
+        Tweak WebPreferences*.yaml "exposed" key to only indicate that the key should not be changeable by the frontend
+        https://bugs.webkit.org/show_bug.cgi?id=217918
+
+        Reviewed by Darin Adler.
+
+        * Scripts/GeneratePreferences.rb:
+        Tweak how the "exposed" key is interpreted to extend to keys with default values
+        for the current frontend (that should continue to be set on Settings for instance)
+        but that should not respect the key being passed in. For instance, the key 
+        "AsyncFrameScrollingEnabled" has default values for all front ends, since we need
+        to set it to false in Settings when building WebKitLegacy, but is only exposed to
+        WebKit, so it won't be in WebKitLegacy's -[WebPreferences internalFeatures] array
+        and won't do anything if passed to -[WebPreferences _setBoolPreferenceForTestingWithValue:forKey:].
+
+        * Scripts/Preferences/WebPreferences.yaml:
+        Replace now incorrect uses of exposed with temporary key "webKitLegacyBinding" to indicate
+        that these keys should be valid, but currently use a custom binding in WebKitLegacy.
+
+        * Scripts/Preferences/WebPreferencesInternal.yaml:
+        Only expose AsyncFrameScrollingEnabled and AsyncOverflowScrollingEnabled to WebKit.
+        This maintains the behavior that these keys are not valid keys as test header commands
+        when run through DumpRenderTree.
+        
+
 2020-10-19  Lauro Moura  <lmoura@igalia.com>
 
         REGRESSION(r268115) [GTK] Build failures with GCC 7 (Ubuntu 18.04) and GCC 8 (Debian Buster)
index c9fb6df53d5f83c62d3d8ef63eba9f7fd7a711f0..522ee3c506cfd4ae581f03b7dd20cb672fe173b8 100644 (file)
@@ -38,7 +38,7 @@ options = {
   :templates => []
 }
 optparse = OptionParser.new do |opts|
-  opts.banner = "Usage: #{File.basename($0)} --input file"
+  opts.banner = "Usage: #{File.basename($0)} --frontend <frontend> --base <base> --debug <debug> --experimental <experimental> --internal <internal> --template file"
 
   opts.separator ""
 
@@ -100,6 +100,7 @@ class Preference
   attr_accessor :condition
   attr_accessor :hidden
   attr_accessor :defaultValues
+  attr_accessor :exposed
 
   def initialize(name, opts, frontend)
     @name = name
@@ -113,6 +114,7 @@ class Preference
     @condition = opts["condition"]
     @hidden = opts["hidden"] || false
     @defaultValues = opts["defaultValue"][frontend]
+    @exposed = !opts["exposed"] || opts["exposed"].include?(frontend)
   end
 
   def nameLower
@@ -190,6 +192,12 @@ class Preferences
     @experimentalFeatures.sort! { |x, y| x.name <=> y.name }.sort! { |x, y| x.humanReadableName <=> y.humanReadableName }
     @internalFeatures.sort! { |x, y| x.name <=> y.name }.sort! { |x, y| x.humanReadableName <=> y.humanReadableName }
 
+    @exposedPreferences = @preferences.select { |p| p.exposed }
+    @exposedPreferencesNotDebug = @preferencesNotDebug.select { |p| p.exposed }
+    @exposedPreferencesDebug = @preferencesDebug.select { |p| p.exposed }
+    @exposedExperimentalFeatures = @experimentalFeatures.select { |p| p.exposed }
+    @exposedInternalFeatures = @internalFeatures.select { |p| p.exposed }
+
     @preferencesBoundToSetting = @preferences.select { |p| !p.webcoreBinding }
     @preferencesBoundToDeprecatedGlobalSettings = @preferences.select { |p| p.webcoreBinding == "DeprecatedGlobalSettings" }
     @preferencesBoundToRuntimeEnabledFeatures = @preferences.select { |p| p.webcoreBinding == "RuntimeEnabledFeatures" }
@@ -204,7 +212,7 @@ class Preferences
         if !options["webcoreBinding"] && options["defaultValue"].size != 3
           raise "ERROR: Preferences bound to WebCore::Settings must have default values for all frontends: #{name}"
         end
-        if !options["exposed"] or options["exposed"].include?(@frontend)
+        if options["defaultValue"].include?(@frontend)
           preference = Preference.new(name, options, @frontend)
           @preferences << preference
           result << preference
index ed47cf16831ea8d2071ad0274fbf200a26f6814b..c75f15b3428d8709e8e94cb89487fe9f09fb0e62 100644 (file)
@@ -416,7 +416,7 @@ ContentChangeObserverEnabled:
 # FIXME: This is handled via WebView SPI rather than WebPreferences for WebKitLegacy. We should change the SPI to lookup the WebPreferences value instead.
 CookieEnabled:
   type: bool
-  exposed: [ WebKit ]
+  webKitLegacyBinding: custom
   defaultValue:
     WebKit:
       default: true
@@ -962,7 +962,7 @@ InteractiveFormValidationEnabled:
   type: bool
   humanReadableName: "HTML Interactive Form Validation"
   humanReadableDescription: "HTML interactive form validation"
-  exposed: [ WebKit ]
+  webKitLegacyBinding: custom
   defaultValue:
     WebKit:
       default: true
@@ -1727,7 +1727,7 @@ ScrollingPerformanceLoggingEnabled:
 # FIXME: This is handled via WebView SPI rather than WebPreferences for WebKitLegacy. We should change the SPI to lookup the WebPreferences value instead.
 SelectTrailingWhitespaceEnabled:
   type: bool
-  exposed: [ WebKit ]
+  webKitLegacyBinding: custom
   defaultValue:
     WebKit:
       default: false
@@ -1946,7 +1946,7 @@ ShowsURLsInToolTipsEnabled:
 # FIXME: This is handled via WebView SPI rather than WebPreferences for WebKitLegacy. We should change the SPI to lookup the WebPreferences value instead.
 SmartInsertDeleteEnabled:
   type: bool
-  exposed: [ WebKit ]
+  webKitLegacyBinding: custom
   defaultValue:
     WebKit:
       default: true
index ad120d62655f8dfbb367ff45cfe124f8e00dc70f..6104ad3dfd7010d26d2327e46ef49606a87103e3 100644 (file)
@@ -81,6 +81,7 @@ AsyncFrameScrollingEnabled:
   webcoreOnChange: setNeedsRelayoutAllFrames
   humanReadableName: "Async Frame Scrolling"
   humanReadableDescription: "Perform frame scrolling off the main thread"
+  exposed: [ WebKit ]
   defaultValue:
     WebKitLegacy:
       default: false
@@ -96,6 +97,7 @@ AsyncOverflowScrollingEnabled:
   webcoreOnChange: setNeedsRelayoutAllFrames
   humanReadableName: "Async Overflow Scrolling"
   humanReadableDescription: "Perform overflow scrolling off the main thread"
+  exposed: [ WebKit ]
   defaultValue:
     WebKitLegacy:
       default: false
index a16769198253a79ee2fdeee1782fa59a981f2276..50ba8e504bd1f940422553fdd68c65717146930c 100644 (file)
@@ -1,3 +1,22 @@
+2020-10-20  Sam Weinig  <weinig@apple.com>
+
+        Tweak WebPreferences*.yaml "exposed" key to only indicate that the key should not be changeable by the frontend
+        https://bugs.webkit.org/show_bug.cgi?id=217918
+
+        Reviewed by Darin Adler.
+
+        Update to use new "exposed" prefix bindings and use default value explicitly
+        when updating settings for non-exposed preferences.
+
+        * Scripts/PreferencesTemplates/WebPageUpdatePreferences.cpp.erb:
+        * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
+        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
+        * Scripts/PreferencesTemplates/WebPreferencesGetterSetters.cpp.erb:
+        * Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb:
+        * Scripts/PreferencesTemplates/WebPreferencesKeys.cpp.erb:
+        * Scripts/PreferencesTemplates/WebPreferencesKeys.h.erb:
+        * Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb:
+
 2020-10-20  Carlos Garcia Campos  <cgarcia@igalia.com>
 
         WebDriver: add support for right variations of virtual keys
index 94dbbd1361a1c50e51e035d9d6b051b7033a8030..d0a8daedba386c03e67d3dff9a70c259c11e7e46 100644 (file)
@@ -28,6 +28,7 @@
 #include "config.h"
 #include "WebPage.h"
 
+#include "WebPreferencesDefinitions.h"
 #include "WebPreferencesKeys.h"
 #include "WebPreferencesStore.h"
 #include <WebCore/DeprecatedGlobalSettings.h>
@@ -45,7 +46,11 @@ void WebPage::updateSettingsGenerated(const WebPreferencesStore& store)
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
+<%- if @pref.exposed -%>
     settings.set<%= @pref.webcoreNameUpper %>(store.get<%= @pref.typeUpper %>ValueForKey(WebPreferencesKey::<%= @pref.nameLower %>Key()));
+<%- else -%>
+    settings.set<%= @pref.webcoreNameUpper %>(DEFAULT_VALUE_FOR_<%= @pref.name %>);
+<%- end -%>
 <%- if @pref.condition -%>
 #endif
 <%- end -%>
@@ -58,7 +63,11 @@ void WebPage::updatePreferencesGenerated(const WebPreferencesStore& store)
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
+<%- if @pref.exposed -%>
     WebCore::DeprecatedGlobalSettings::set<%= @pref.webcoreNameUpper %>(store.get<%= @pref.typeUpper %>ValueForKey(WebPreferencesKey::<%= @pref.nameLower %>Key()));
+<%- else -%>
+    WebCore::DeprecatedGlobalSettings::set<%= @pref.webcoreNameUpper %>(DEFAULT_VALUE_FOR_<%= @pref.name %>);
+<%- end -%>
 <%- if @pref.condition -%>
 #endif
 <%- end -%>
@@ -68,7 +77,11 @@ void WebPage::updatePreferencesGenerated(const WebPreferencesStore& store)
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
+<%- if @pref.exposed -%>
     WebCore::RuntimeEnabledFeatures::sharedFeatures().set<%= @pref.webcoreNameUpper %>(store.get<%= @pref.typeUpper %>ValueForKey(WebPreferencesKey::<%= @pref.nameLower %>Key()));
+<%- else -%>
+    WebCore::RuntimeEnabledFeatures::sharedFeatures().set<%= @pref.webcoreNameUpper %>(DEFAULT_VALUE_FOR_<%= @pref.name %>);
+<%- end -%>
 <%- if @pref.condition -%>
 #endif
 <%- end -%>
index 2fb1d8abc0dfdf0a1655b25c2f26fb5d9e0a6161..3f399282f7c94bd7d2b03c28efd296f15c6956e8 100644 (file)
@@ -56,7 +56,7 @@
 // macro(KeyUpper, KeyLower, TypeNameUpper, TypeName, DefaultValue, HumanReadableName, HumanReadableDescription)
 
 #define FOR_EACH_WEBKIT_PREFERENCE(macro) \
-<%- for @pref in @preferencesNotDebug do -%>
+<%- for @pref in @exposedPreferencesNotDebug do -%>
     macro(<%= @pref.name %>, <%= @pref.nameLower %>, <%= @pref.typeUpper %>, <%= @pref.type %>, DEFAULT_VALUE_FOR_<%= @pref.name %>, <%= @pref.humanReadableName %>, <%= @pref.humanReadableDescription %>) \
 <%- end -%>
     \
@@ -65,7 +65,7 @@
 // Debug Preferences
 
 #define FOR_EACH_WEBKIT_DEBUG_PREFERENCE(macro) \
-<%- for @pref in @preferencesDebug do -%>
+<%- for @pref in @exposedPreferencesDebug do -%>
     macro(<%= @pref.name %>, <%= @pref.nameLower %>, <%= @pref.typeUpper %>, <%= @pref.type %>, DEFAULT_VALUE_FOR_<%= @pref.name %>, <%= @pref.humanReadableName %>, <%= @pref.humanReadableDescription %>) \
 <%- end -%>
     \
@@ -73,7 +73,7 @@
 // Internal Debug Features
 
 #define FOR_EACH_WEBKIT_INTERNAL_DEBUG_FEATURE_PREFERENCE(macro) \
-<%- for @pref in @internalFeatures do -%>
+<%- for @pref in @exposedInternalFeatures do -%>
     macro(<%= @pref.name %>, <%= @pref.nameLower %>, Bool, bool, DEFAULT_VALUE_FOR_<%= @pref.name %>, <%= @pref.humanReadableName %>, <%= @pref.humanReadableDescription %>) \
 <%- end -%>
    \
@@ -81,7 +81,7 @@
 // Experimental Features
 
 #define FOR_EACH_WEBKIT_EXPERIMENTAL_FEATURE_PREFERENCE(macro) \
-<%- for @pref in @experimentalFeatures do -%>
+<%- for @pref in @exposedExperimentalFeatures do -%>
     macro(<%= @pref.name %>, <%= @pref.nameLower %>, Bool, bool, DEFAULT_VALUE_FOR_<%= @pref.name %>, <%= @pref.humanReadableName %>, <%= @pref.humanReadableDescription %>) \
 <%- end -%>
     \
index 31154505473ca672649c896937519a674cc3a34b..884d40b34a52d54e836ed7aecdaed34cf0649496 100644 (file)
@@ -36,7 +36,7 @@ namespace WebKit {
 const Vector<RefPtr<API::Object>>& WebPreferences::experimentalFeatures()
 {
     static NeverDestroyed<Vector<RefPtr<API::Object>>> features(std::initializer_list<RefPtr<API::Object>> {
-<%- for @pref in @experimentalFeatures do -%>
+<%- for @pref in @exposedExperimentalFeatures do -%>
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
@@ -58,7 +58,7 @@ bool WebPreferences::isFeatureEnabled(const API::ExperimentalFeature& feature) c
     };
 
     static FeatureGetterMapping getters[] = {
-<%- for @pref in @experimentalFeatures do -%>
+<%- for @pref in @exposedExperimentalFeatures do -%>
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
@@ -92,7 +92,7 @@ void WebPreferences::setExperimentalFeatureEnabledForKey(const String& key, bool
     };
 
     static FeatureSetterMapping setters[] = {
-<%- for @pref in @experimentalFeatures do -%>
+<%- for @pref in @exposedExperimentalFeatures do -%>
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
@@ -113,7 +113,7 @@ void WebPreferences::setExperimentalFeatureEnabledForKey(const String& key, bool
 
 void WebPreferences::enableAllExperimentalFeatures()
 {
-<%- for @pref in @experimentalFeatures do -%>
+<%- for @pref in @exposedExperimentalFeatures do -%>
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
index 3816ed1914db0518b2007f9ddef6aec983cf2108..d2ce49b421c860de757ac0dd2e3cabe9438f9897 100644 (file)
@@ -32,7 +32,7 @@
 
 namespace WebKit {
 
-<%- for @pref in (@preferencesNotDebug + @preferencesDebug) do -%>
+<%- for @pref in (@exposedPreferencesNotDebug + @exposedPreferencesDebug) do -%>
 void WebPreferences::set<%= @pref.name %>(const <%= @pref.type %>& value)
 {
     if (!m_store.set<%= @pref.typeUpper %>ValueForKey(WebPreferencesKey::<%= @pref.nameLower %>Key(), value))
@@ -52,7 +52,7 @@ void WebPreferences::delete<%= @pref.name %>()
 
 <%- end -%>
 
-<%- for @pref in @experimentalFeatures do -%>
+<%- for @pref in @exposedExperimentalFeatures do -%>
 void WebPreferences::set<%= @pref.name %>(const bool& value)
 {
     if (!m_store.setBoolValueForKey(WebPreferencesKey::<%= @pref.nameLower %>Key(), value))
@@ -72,7 +72,7 @@ void WebPreferences::delete<%= @pref.name %>()
 
 <%- end -%>
 
-<%- for @pref in @internalFeatures do -%>
+<%- for @pref in @exposedInternalFeatures do -%>
 void WebPreferences::set<%= @pref.name %>(const bool& value)
 {
     if (!m_store.setBoolValueForKey(WebPreferencesKey::<%= @pref.nameLower %>Key(), value))
index 72f00a24ec28b7fda2d216d747331234df25e9f2..d7ef0e2d69c5e1419b559d74b06b4388fb5807e4 100644 (file)
@@ -36,7 +36,7 @@ namespace WebKit {
 const Vector<RefPtr<API::Object>>& WebPreferences::internalDebugFeatures()
 {
     static NeverDestroyed<Vector<RefPtr<API::Object>>> features(std::initializer_list<RefPtr<API::Object>> {
-<%- for @pref in @internalFeatures do -%>
+<%- for @pref in @exposedInternalFeatures do -%>
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
@@ -58,7 +58,7 @@ bool WebPreferences::isFeatureEnabled(const API::InternalDebugFeature& feature)
     };
 
     static FeatureGetterMapping getters[] = {
-<%- for @pref in @internalFeatures do -%>
+<%- for @pref in @exposedInternalFeatures do -%>
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
@@ -92,7 +92,7 @@ void WebPreferences::setInternalDebugFeatureEnabledForKey(const String& key, boo
     };
 
     static FeatureSetterMapping setters[] = {
-<%- for @pref in @internalFeatures do -%>
+<%- for @pref in @exposedInternalFeatures do -%>
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
@@ -113,7 +113,7 @@ void WebPreferences::setInternalDebugFeatureEnabledForKey(const String& key, boo
 
 void WebPreferences::resetAllInternalDebugFeatures()
 {
-<%- for @pref in @internalFeatures do -%>
+<%- for @pref in @exposedInternalFeatures do -%>
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
index c6fba001677afaefd5720e0eee5a93609f3f4236..e0e292f90f3057322d61c7035a1cfbbc4a9fc2b0 100644 (file)
@@ -33,7 +33,7 @@
 namespace WebKit {
 namespace WebPreferencesKey {
 
-<%- for @pref in @preferences do -%>
+<%- for @pref in @exposedPreferences do -%>
 const String& <%= @pref.nameLower %>Key()
 {
     static NeverDestroyed<String> key(MAKE_STATIC_STRING_IMPL("<%= @pref.name %>"));
index 60f5fe88166629a39b193d4437742e85f6dd77ad..6afc0fcc8e9a803c0de3507bc828e798f95b2d67 100644 (file)
@@ -32,7 +32,7 @@
 namespace WebKit {
 namespace WebPreferencesKey {
 
-<%- for @pref in @preferences do -%>
+<%- for @pref in @exposedPreferences do -%>
 const String& <%= @pref.nameLower %>Key();
 <%- end -%>
 
index b1af25dc8c4cd884f23bcf9772dbb61d697aeea6..e2cf8cb18e3f89bdaaa7a9bdda5f30e362ad2ba3 100644 (file)
@@ -48,7 +48,7 @@ WebPreferencesStore::ValueMap& WebPreferencesStore::defaults()
 {
     static NeverDestroyed<ValueMap> defaults;
     if (defaults.get().isEmpty()) {
-<%- for @pref in @preferences do -%>
+<%- for @pref in @exposedPreferences do -%>
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
index 553c04a737c3d71a98b6a2514d8af54024936498..e31713985876f22af820248b0d6b5a22dc6dc4f9 100644 (file)
@@ -1,3 +1,18 @@
+2020-10-20  Sam Weinig  <weinig@apple.com>
+
+        Tweak WebPreferences*.yaml "exposed" key to only indicate that the key should not be changeable by the frontend
+        https://bugs.webkit.org/show_bug.cgi?id=217918
+
+        Reviewed by Darin Adler.
+
+        Update to use new "exposed" prefix bindings and use default value explicitly
+        when updating settings for non-exposed preferences.
+
+        * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
+        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.mm.erb:
+        * Scripts/PreferencesTemplates/WebPreferencesInternalFeatures.mm.erb:
+        * Scripts/PreferencesTemplates/WebViewPreferencesChangedGenerated.mm.erb:
+
 2020-10-17  David Kilzer  <ddkilzer@apple.com>
 
         REGRESSION (r25430): Fix -Wstring-concatenation warning from open source clang
index 4a7bb3d76f19bd7d97f234497356187f5994d8f1..2b9b22210c9f967760a0e3f15407312fe4b84ab2 100644 (file)
@@ -58,7 +58,7 @@
 
 // Default initialization of WebPreferences' internal dictionary.
 
-<%- for @pref in @preferences do -%>
+<%- for @pref in @exposedPreferences do -%>
 <%-   if @pref.condition -%>
 #if <%= @pref.condition %>
 <%-   end -%>
@@ -71,7 +71,7 @@
 <%- end -%>
 
 #define INITIALIZE_DEFAULT_PREFERENCES_DICTIONARY_FROM_GENERATED_PREFERENCES \
-<%- for @pref in @preferences do -%>
+<%- for @pref in @exposedPreferences do -%>
      INITIALIZE_DEFAULT_PREFERENCES_FOR_<%= @pref.name %> \
 <%- end -%>
     \
index 5d10b435ca0e616a8aa13a97710654bff1fa27de..940cfd2272a99f3024d7080ecce62b63d57b722a 100644 (file)
@@ -37,7 +37,7 @@ using namespace WebKit;
 + (NSArray<WebFeature *> *)_experimentalFeatures
 {
     static NSArray<WebFeature *> *features = @[
-<%- for @pref in @experimentalFeatures do -%>
+<%- for @pref in @exposedExperimentalFeatures do -%>
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
index 870f90d1d217b138ec31695dcf38639d6cc73efb..71d1b207f5eb6cc346de4e3fdfed846b2d0f6e7b 100644 (file)
@@ -37,7 +37,7 @@ using namespace WebKit;
 + (NSArray<WebFeature *> *)_internalFeatures
 {
     static NSArray<WebFeature *> *features = @[
-<%- for @pref in @internalFeatures do -%>
+<%- for @pref in @exposedInternalFeatures do -%>
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
index f6a3e94cfb9247822ee0bd31b2bb9d6d80a11f45..2d6e7f7cc20d350141944c52693a1bc9517a4152 100644 (file)
@@ -27,6 +27,7 @@
 
 #import "WebViewInternal.h"
 
+#import "WebPreferencesDefinitions.h"
 #import "WebPreferencesInternal.h"
 #import "WebViewData.h"
 #import <WebCore/DeprecatedGlobalSettings.h>
 {
     auto& settings = _private->page->settings();
 
-<%- for @pref in @preferencesBoundToSetting do -%>
+<%- for @pref in @preferencesBoundToSetting.select { |p| !p.opts["webKitLegacyBinding"] } do -%>
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
+<%- if @pref.exposed -%>
     settings.set<%= @pref.webcoreNameUpper %>([preferences <%= @pref.preferenceAccessor %>:@"<%= @pref.preferenceKey %>"]);
+<%- else -%>
+    settings.set<%= @pref.webcoreNameUpper %>(DEFAULT_VALUE_FOR_<%= @pref.name %>);
+<%- end -%>
 <%- if @pref.condition -%>
 #endif
 <%- end -%>
 <%- end -%>
 
-<%- for @pref in @preferencesBoundToDeprecatedGlobalSettings do -%>
+<%- for @pref in @preferencesBoundToDeprecatedGlobalSettings.select { |p| !p.opts["webKitLegacyBinding"] } do -%>
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
+<%- if @pref.exposed -%>
     WebCore::DeprecatedGlobalSettings::set<%= @pref.webcoreNameUpper %>([preferences <%= @pref.preferenceAccessor %>:@"<%= @pref.preferenceKey %>"]);
+<%- else -%>
+    WebCore::DeprecatedGlobalSettings::set<%= @pref.webcoreNameUpper %>(DEFAULT_VALUE_FOR_<%= @pref.name %>);
+<%- end -%>
 <%- if @pref.condition -%>
 #endif
 <%- end -%>
 <%- end -%>
 
-<%- for @pref in @preferencesBoundToRuntimeEnabledFeatures do -%>
+<%- for @pref in @preferencesBoundToRuntimeEnabledFeatures.select { |p| !p.opts["webKitLegacyBinding"] } do -%>
 <%- if @pref.condition -%>
 #if <%= @pref.condition %>
 <%- end -%>
+<%- if @pref.exposed -%>
     WebCore::RuntimeEnabledFeatures::sharedFeatures().set<%= @pref.webcoreNameUpper %>([preferences <%= @pref.preferenceAccessor %>:@"<%= @pref.preferenceKey %>"]);
+<%- else -%>
+    WebCore::RuntimeEnabledFeatures::sharedFeatures().set<%= @pref.webcoreNameUpper %>(DEFAULT_VALUE_FOR_<%= @pref.name %>);
+<%- end -%>
 <%- if @pref.condition -%>
 #endif
 <%- end -%>
index 882e3fd9369fce97af3354429ecf67bd860425ce..43e156de572e50ff9f62d26382d7dae8cf61a5d6 100644 (file)
@@ -1,3 +1,16 @@
+2020-10-20  Sam Weinig  <weinig@apple.com>
+
+        Tweak WebPreferences*.yaml "exposed" key to only indicate that the key should not be changeable by the frontend
+        https://bugs.webkit.org/show_bug.cgi?id=217918
+
+        Reviewed by Darin Adler.
+
+        Update to use new "exposed" prefix bindings and use default value explicitly
+        when updating settings for non-exposed preferences.
+
+        * DumpRenderTree/Scripts/PreferencesTemplates/TestOptionsGeneratedKeys.h.erb:
+        * WebKitTestRunner/Scripts/PreferencesTemplates/TestOptionsGeneratedKeys.h.erb:
+
 2020-10-19  Lauro Moura  <lmoura@igalia.com>
 
         REGRESSION(r268115) [GTK] Build failures with GCC 7 (Ubuntu 18.04) and GCC 8 (Debian Buster)
index 831491d961b7bfa5cfa44c2418feb3919fb7436e..08727389d4d5e4fa2ed892c061b0a455948b0af7 100644 (file)
@@ -28,7 +28,7 @@
 #pragma once
 
 #define GENERATED_WEB_PREFERENCE_KEY_TYPE_MAPPINGS \
-<%- for @pref in @preferences do -%>
+<%- for @pref in @exposedPreferences do -%>
     { "<%= @pref.name %>", TestHeaderKeyType::<%= @pref.typeUpper %>WebPreference }, \
 <%- end -%>
 \
index 831491d961b7bfa5cfa44c2418feb3919fb7436e..08727389d4d5e4fa2ed892c061b0a455948b0af7 100644 (file)
@@ -28,7 +28,7 @@
 #pragma once
 
 #define GENERATED_WEB_PREFERENCE_KEY_TYPE_MAPPINGS \
-<%- for @pref in @preferences do -%>
+<%- for @pref in @exposedPreferences do -%>
     { "<%= @pref.name %>", TestHeaderKeyType::<%= @pref.typeUpper %>WebPreference }, \
 <%- end -%>
 \