mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
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:
parent
c4c85affb5
commit
0e616e0c5d
316 changed files with 2088 additions and 3235 deletions
|
@ -89,10 +89,31 @@ def generate(config, name, filename):
|
|||
|
||||
|
||||
def add_css_properties_attributes(css_properties_json, parser):
|
||||
def map_preference_name(preference_name: str):
|
||||
"""Map between Stylo preference names and Servo preference names as the
|
||||
`css-properties.json` file is generated by Stylo. This should be kept in sync with the
|
||||
preference mapping done in `components/servo_config/prefs.rs`, which handles the runtime version of
|
||||
these preferences."""
|
||||
MAPPING = [
|
||||
["layout.unimplemented", "layout_unimplemented"],
|
||||
["layout.threads", "layout_threads"],
|
||||
["layout.legacy_layout", "layout_legacy_layout"],
|
||||
["layout.flexbox.enabled", "layout_flexbox_enabled"],
|
||||
["layout.columns.enabled", "layout_columns_enabled"],
|
||||
["layout.grid.enabled", "layout_grid_enabled"],
|
||||
["layout.css.transition-behavior.enabled", "layout_css_transition_behavior_enabled"],
|
||||
["layout.writing-mode.enabled", "layout_writing_mode_enabled"],
|
||||
["layout.container-queries.enabled", "layout_container_queries_enabled"],
|
||||
]
|
||||
for mapping in MAPPING:
|
||||
if mapping[0] == preference_name:
|
||||
return mapping[1]
|
||||
return preference_name
|
||||
|
||||
css_properties = json.load(open(css_properties_json, "rb"))
|
||||
idl = "partial interface CSSStyleDeclaration {\n%s\n};\n" % "\n".join(
|
||||
" [%sCEReactions, SetterThrows] attribute [LegacyNullToEmptyString] DOMString %s;" % (
|
||||
('Pref="%s", ' % data["pref"] if data["pref"] else ""),
|
||||
(f'Pref="{map_preference_name(data["pref"])}", ' if data["pref"] else ""),
|
||||
attribute_name
|
||||
)
|
||||
for (kind, properties_list) in sorted(css_properties.items())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue