api: Flatten and simplify Servo preferences (#34966)

Flatten and simplify Servo's preferences code. In addition, have both
preferences and options passed in as arguments to `Servo::new()` and
make sure not to use the globally set preferences in `servoshell` (as
much as possible now).

Instead of a complex procedural macro to generate preferences, just
expose a very simple derive macro that adds string based getters and
setters.

- All command-line parsing is moved to servoshell.
- There is no longer the concept of a missing preference.
- Preferences no longer have to be part of the resources bundle because
  they now have reasonable default values.
- servoshell specific preferences are no longer part of the preferences
  exposed by the Servo API.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
Martin Robinson 2025-01-14 14:54:06 +01:00 committed by GitHub
parent c4c85affb5
commit 0e616e0c5d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
316 changed files with 2088 additions and 3235 deletions

View file

@ -1 +1 @@
prefs: [dom.crypto.subtle.enabled: true]
prefs: [dom_crypto_subtle_enabled: true]

View file

@ -1 +1 @@
prefs: ["dom.imagebitmap.enabled:true"]
prefs: ["dom_imagebitmap_enabled:true"]

View file

@ -1 +1 @@
prefs: ["dom.bluetooth.enabled:true"]
prefs: ["dom_bluetooth_enabled:true"]

View file

@ -1,2 +1,2 @@
prefs: ["dom.bluetooth.enabled:true"]
prefs: ["dom_bluetooth_enabled:true"]
disabled: "#23066"

View file

@ -1 +1 @@
prefs: ["layout.columns.enabled:true", "layout.flexbox.enabled:true"]
prefs: ["layout_columns_enabled:true", "layout_flexbox_enabled:true"]

View file

@ -1 +1 @@
prefs: ["layout.columns.enabled:true"]
prefs: ["layout_columns_enabled:true"]

View file

@ -1 +1 @@
prefs: [dom.worklet.enabled:true, dom.worklet.timeout_ms:5000]
prefs: [dom_worklet_enabled:true, dom_worklet_timeout_ms:5000]

View file

@ -1,2 +1,2 @@
prefs: ["dom.mutation_observer.enabled:true"]
prefs: ["dom_mutation_observer_enabled:true"]

View file

@ -1 +1 @@
prefs: [dom.gamepad.enabled:true]
prefs: [dom_gamepad_enabled:true]

View file

@ -1 +1 @@
prefs: ["dom.offscreen_canvas.enabled:true"]
prefs: ["dom_offscreen_canvas_enabled:true"]

View file

@ -1 +1 @@
prefs: ["dom.permissions.enabled:true"]
prefs: ["dom_permissions_enabled:true"]

View file

@ -1,2 +1,2 @@
prefs: ["dom.serviceworker.enabled:true"]
prefs: ["dom_serviceworker_enabled:true"]

View file

@ -1,2 +1,2 @@
prefs: ["dom.webvtt.enabled:true"]
prefs: ["dom_webvtt_enabled:true"]

View file

@ -1 +1 @@
prefs: [dom.webxr.test:true, dom.webgl2.enabled: true]
prefs: [dom_webxr_test:true, dom_webgl2_enabled: true]

View file

@ -1 +1 @@
prefs: [dom.crypto.subtle.enabled: true]
prefs: [dom_crypto_subtle_enabled: true]

View file

@ -1 +1 @@
prefs: ["dom.imagebitmap.enabled:true", "dom.offscreen_canvas.enabled:true", "dom.shadowdom.enabled:true", "dom.xpath.enabled:true"]
prefs: ["dom_imagebitmap_enabled:true", "dom_offscreen_canvas_enabled:true", "dom_shadowdom_enabled:true", "dom_xpath_enabled:true"]

View file

@ -1 +1 @@
prefs: ["layout.columns.enabled:true", "layout.flexbox.enabled:true"]
prefs: ["layout_columns_enabled:true", "layout_flexbox_enabled:true"]

View file

@ -1 +1 @@
prefs: ["layout.columns.enabled:true", "layout.flexbox.enabled:true"]
prefs: ["layout_columns_enabled:true", "layout_flexbox_enabled:true"]

View file

@ -1 +1 @@
prefs: ["layout.columns.enabled:true", "layout.flexbox.enabled:true", "layout.grid.enabled:true"]
prefs: ["layout_columns_enabled:true", "layout_flexbox_enabled:true", "layout_grid_enabled:true"]

View file

@ -1 +1 @@
prefs: [dom.gamepad.enabled: true]
prefs: [dom_gamepad_enabled: true]

View file

@ -1 +1 @@
prefs: ["dom.resize_observer.enabled:true"]
prefs: ["dom_resize_observer_enabled:true"]

View file

@ -1 +1 @@
prefs: [dom.webxr.test: true, dom.webgl2.enabled: true, dom.webxr.layers.enabled: true]
prefs: [dom_webxr_test: true, dom_webgl2_enabled: true, dom_webxr_layers_enabled: true]

View file

@ -1 +1 @@
prefs: [dom.bluetooth.enabled:true, dom.bluetooth.testing.enabled:true, dom.permissions.testing.allowed_in_nonsecure_contexts:true]
prefs: [dom_bluetooth_enabled:true, dom_bluetooth_testing_enabled:true, dom_permissions_testing_allowed_in_nonsecure_contexts:true]

View file

@ -1,2 +1,2 @@
prefs: ["layout.animations.test.enabled:true",
"dom.testbinding.enabled:true"]
prefs: ["layout_animations_test_enabled:true",
"dom_testbinding_enabled:true"]

View file

@ -1,2 +1,2 @@
prefs: ["layout.animations.test.enabled:false",
"dom.testbinding.enabled:false"]
prefs: ["layout_animations_test_enabled:false",
"dom_testbinding_enabled:false"]

View file

@ -1,3 +1,3 @@
prefs: ["layout.animations.test.enabled:false",
"dom.testbinding.enabled:false"]
prefs: ["layout_animations_test_enabled:false",
"dom_testbinding_enabled:false"]

View file

@ -1,3 +1,3 @@
prefs: [layout.threads:1]
prefs: [layout_threads:1]
[direction_style_caching.html]
type: reftest

View file

@ -1,3 +1,3 @@
prefs: [layout.writing-mode.enabled:true]
prefs: [layout_writing_mode_enabled:true]
[size_attributes_vertical_writing_mode.html]
type: reftest

View file

@ -1,4 +1,4 @@
prefs: [layout.writing-mode.enabled:true]
prefs: [layout_writing_mode_enabled:true]
[vertical-lr-blocks.html]
type: reftest
expected: FAIL

View file

@ -1,3 +1,3 @@
prefs: [layout.writing-mode.enabled:true]
prefs: [layout_writing_mode_enabled:true]
[writing-mode_change_display.html]
type: testharness

View file

@ -1,3 +1,3 @@
[blob_url_upload.html]
type: reftest
prefs: [dom.testing.htmlinputelement.select_files.enabled:true]
prefs: [dom_testing_html_input_element_select_files_enabled:true]

View file

@ -1,3 +1,3 @@
[file-select.html]
type: testharness
prefs: [dom.testing.htmlinputelement.select_files.enabled:true]
prefs: [dom_testing_html_input_element_select_files_enabled:true]

View file

@ -1,3 +1,3 @@
[file-upload.html]
type: testharness
prefs: [dom.testing.htmlinputelement.select_files.enabled:true]
prefs: [dom_testing_html_input_element_select_files_enabled:true]

View file

@ -1,3 +1,3 @@
[activation.html]
type: testharness
prefs: [dom.testing.element.activation.enabled:true]
prefs: [dom_testing_element_activation_enabled:true]

View file

@ -1,3 +1,3 @@
[binding_keyword.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1,3 +1,3 @@
[calc.html]
type: testharness
prefs: [layout.columns.enabled:true]
prefs: [layout_columns_enabled:true]

View file

@ -1,3 +1,3 @@
[codegen_unions.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1,3 +1,3 @@
[custom_auto_rooter.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1,2 +1,2 @@
[dictionary_to_jsval.html]
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1,7 +1,7 @@
[exceptionToRejection.any.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]
[exceptionToRejection.any.worker.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1 +1 @@
prefs: ["dom.fullscreen.test:true"]
prefs: ["dom_fullscreen_test:true"]

View file

@ -1,3 +1,3 @@
[entry.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1,3 +1,3 @@
[entry.worker.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1,6 +1,6 @@
[http-cache.html]
type: testharness
prefs: [network.http-cache.disabled:true]
prefs: [network_http_cache_disabled:true]
[HTTP cache, when disabled, does not cache a 200 response.]
expected: FAIL

View file

@ -1,3 +1,3 @@
[interface_member_exposed.html]
type: testharness
prefs: [dom.testbinding.enabled:true, dom.testbinding.prefcontrolled2.enabled:true]
prefs: [dom_testbinding_enabled:true, dom_testbinding_prefcontrolled2_enabled:true]

View file

@ -1 +1 @@
prefs: [dom.webxr.test: false]
prefs: [dom_webxr_test: false]

View file

@ -1,3 +1,3 @@
[iterable.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1,6 +1,6 @@
[like.any.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]
[Test defaulting arguments on setlike to undefined]
expected: FAIL
@ -12,7 +12,7 @@
[like.any.worker.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]
[Test defaulting arguments on setlike to undefined]
expected: FAIL

View file

@ -1 +1 @@
prefs: ["dom.servo_helpers.enabled:true"]
prefs: ["dom_servo_helpers_enabled:true"]

View file

@ -1 +1 @@
prefs: ["dom.microdata.testing.enabled:true"]
prefs: ["dom_microdata_testing_enabled:true"]

View file

@ -1,7 +1,7 @@
[ns.any.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]
[ns.any.worker.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1,3 +1,3 @@
[overload_dict.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1,4 +1,4 @@
[partial_shadow_dom.html]
prefs: [dom.shadowdom.enabled:true]
prefs: [dom_shadowdom_enabled:true]
[partial_shadow_dom]
expected: FAIL

View file

@ -1,2 +1,2 @@
[partial_shadow_dom_layout_style.html]
prefs: [dom.shadowdom.enabled:true]
prefs: [dom_shadowdom_enabled:true]

View file

@ -1,3 +1,3 @@
[preferences.html]
type: testharness
prefs: [dom.testbinding.enabled:true, dom.testbinding.preference_value.falsy:false, dom.testbinding.preference_value.truthy:true, dom.testbinding.preference_value.string_empty:, dom.testbinding.preference_value.string_test:test, dom.testbinding.preference_value.space_string_test:test1 test2, dom.testbinding.preference_value.quote_string_test:"test1 test2"]
prefs: [dom_testbinding_enabled:true, dom_testbinding_preference_value_falsy:false, dom_testbinding_preference_value_truthy:true, dom_testbinding_preference_value_string_empty:, dom_testbinding_preference_value_string_test:test, dom_testbinding_preference_value_space_string_test:test1 test2, dom_testbinding_preference_value_quote_string_test:"test1 test2"]

View file

@ -1,6 +1,6 @@
[promise.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]
[Native promise from async callback can be resolved]
expected: FAIL

View file

@ -1 +1 @@
prefs: ["dom.servo_helpers.enabled:true"]
prefs: ["dom_servo_helpers_enabled:true"]

View file

@ -1,3 +1,3 @@
[sequence-hole.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1 +1 @@
prefs: ["dom.serviceworker.enabled:true"]
prefs: ["dom_serviceworker_enabled:true"]

View file

@ -1,4 +1,4 @@
[sigsegv.html]
type: testharness
prefs: [dom.testbinding.enabled:true, dom.testable_crash.enabled:true]
prefs: [dom_testbinding_enabled:true, dom_testable_crash_enabled:true]
expected: CRASH

View file

@ -1,3 +1,3 @@
[svg.html]
type: reftest
prefs: [dom.svg.enabled:true]
prefs: [dom_svg_enabled:true]

View file

@ -1 +1 @@
prefs: ["dom.servo_helpers.enabled:true"]
prefs: ["dom_servo_helpers_enabled:true"]

View file

@ -1 +1 @@
prefs: ["dom.servo_helpers.enabled:true"]
prefs: ["dom_servo_helpers_enabled:true"]

View file

@ -1,3 +1,3 @@
[variadic-interface.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1,2 +1,2 @@
[video_poster_frame.html]
prefs: [media.testing.enabled:true]
prefs: [media_testing_enabled:true]

View file

@ -1,3 +1,3 @@
[weakref.html]
type: testharness
prefs: ["dom.testbinding.enabled:true", "dom.servo_helpers.enabled:true"]
prefs: ["dom_testbinding_enabled:true", "dom_servo_helpers_enabled:true"]

View file

@ -1,3 +1,3 @@
[context_creation_error.html]
type: testharness
prefs: [webgl.testing.context_creation_error:true]
prefs: [webgl_testing_context_creation_error:true]

View file

@ -1,3 +1,3 @@
[window_performance_topLevelDomComplete.html]
type: testharness
prefs: [dom.testperf.enabled:true]
prefs: [dom_testperf_enabled:true]

View file

@ -1 +1 @@
prefs: [dom.worklet.enabled:true,dom.worklet.blockingsleep.enabled:true,dom.worklet.timeout_ms:5000]
prefs: [dom_worklet_enabled:true,dom_worklet_blockingsleep_enabled:true,dom_worklet_timeout_ms:5000]

View file

@ -1,4 +1,4 @@
[test_paint_worklet_timeout.html]
type: testharness
prefs: [dom.worklet.timeout_ms:10]
prefs: [dom_worklet_timeout_ms:10]
expected: PASS

View file

@ -1,3 +1,3 @@
[test_worklet.html]
type: testharness
prefs: [dom.worklet.testing.enabled:true]
prefs: [dom_worklet_testing_enabled:true]

View file

@ -1,2 +1,2 @@
prefs: [dom.webxr.enabled:true, dom.webxr.test:true]
prefs: [dom_webxr_enabled:true, dom_webxr_test:true]

View file

@ -1 +1 @@
prefs: [dom.webxr.layers.enabled:true]
prefs: [dom_webxr_layers_enabled:true]

View file

@ -1,4 +1,4 @@
prefs: [dom.webxr.layers.enabled:true]
prefs: [dom_webxr_layers_enabled:true]
[layers.https.html]
[layers]
expected: FAIL

View file

@ -1,2 +1,2 @@
prefs: [dom.webxr.sessionavailable:true]
prefs: [dom_webxr_sessionavailable:true]

View file

@ -1,2 +1,2 @@
prefs: ["layout.animations.test.enabled:true",
"dom.testbinding.enabled:true"]
prefs: ["layout_animations_test_enabled:true",
"dom_testbinding_enabled:true"]

View file

@ -1,2 +1,2 @@
prefs: ["layout.animations.test.enabled:false",
"dom.testbinding.enabled:false"]
prefs: ["layout_animations_test_enabled:false",
"dom_testbinding_enabled:false"]

View file

@ -1,3 +1,3 @@
prefs: ["layout.animations.test.enabled:false",
"dom.testbinding.enabled:false"]
prefs: ["layout_animations_test_enabled:false",
"dom_testbinding_enabled:false"]

View file

@ -1,2 +1,2 @@
[flex_align_content_stretch_subpixel.html]
prefs: ["layout.flexbox.enabled:true"]
prefs: ["layout_flexbox_enabled:true"]

View file

@ -1,2 +1,2 @@
[DOMParser-parseFromString.html]
prefs: ["dom.servoparser.async_html_tokenizer.enabled:true"]
prefs: ["dom_servoparser_async_html_tokenizer_enabled:true"]

View file

@ -1,2 +1,2 @@
[dictionary_to_jsval.html]
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1,7 +1,7 @@
[exceptionToRejection.any.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]
[exceptionToRejection.any.worker.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1 +1 @@
prefs: [dom.webxr.test: false]
prefs: [dom_webxr_test: false]

View file

@ -1,6 +1,6 @@
[like.any.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]
[Test defaulting arguments on setlike to undefined]
expected: FAIL
@ -12,7 +12,7 @@
[like.any.worker.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]
[Test defaulting arguments on setlike to undefined]
expected: FAIL

View file

@ -1 +1 @@
prefs: ["dom.servo_helpers.enabled:true"]
prefs: ["dom_servo_helpers_enabled:true"]

View file

@ -1,7 +1,7 @@
[ns.any.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]
[ns.any.worker.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1,3 +1,3 @@
[overload_dict.html]
type: testharness
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1 +1 @@
prefs: ["dom.servo_helpers.enabled:true"]
prefs: ["dom_servo_helpers_enabled:true"]

View file

@ -1,2 +1,2 @@
[sequence-hole.html]
prefs: [dom.testbinding.enabled:true]
prefs: [dom_testbinding_enabled:true]

View file

@ -1 +1 @@
prefs: ["dom.servo_helpers.enabled:true"]
prefs: ["dom_servo_helpers_enabled:true"]

View file

@ -1 +1 @@
prefs: ["dom.servo_helpers.enabled:true"]
prefs: ["dom_servo_helpers_enabled:true"]

View file

@ -1,3 +1,3 @@
[weakref.html]
type: testharness
prefs: ["dom.testbinding.enabled:true", "dom.servo_helpers.enabled:true"]
prefs: ["dom_testbinding_enabled:true", "dom_servo_helpers_enabled:true"]

View file

@ -1 +1 @@
prefs: ["dom.offscreen_canvas.enabled:true","dom.imagebitmap.enabled:true"]
prefs: ["dom_offscreen_canvas_enabled:true","dom_imagebitmap_enabled:true"]

View file

@ -1,2 +1,2 @@
prefs: ["dom.webgl2.enabled:true","dom.offscreen_canvas.enabled:true","dom.imagebitmap.enabled:true"]
prefs: ["dom_webgl2_enabled:true","dom_offscreen_canvas_enabled:true","dom_imagebitmap_enabled:true"]

View file

@ -1 +1 @@
prefs: ["dom.offscreen_canvas.enabled:true"]
prefs: ["dom_offscreen_canvas_enabled:true"]

View file

@ -1 +1 @@
prefs: ["dom.offscreen_canvas.enabled:true", "dom.imagebitmap.enabled:true", "dom.webgl2.enabled:true"]
prefs: ["dom_offscreen_canvas_enabled:true", "dom_imagebitmap_enabled:true", "dom_webgl2_enabled:true"]

View file

@ -1 +1 @@
prefs: ["dom.offscreen_canvas.enabled:true"]
prefs: ["dom_offscreen_canvas_enabled:true"]

View file

@ -1 +1 @@
prefs: ["dom.webgpu.enabled:true"]
prefs: ["dom_webgpu_enabled:true"]