Visitar URL original
Use Stylo with the remaining SVG properties enabled by nicoburns · Pull Request #1540 · DioxusLabs/blitz · GitHub
Skip to content

Use Stylo with the remaining SVG properties enabled - #1540

Open
nicoburns wants to merge 2 commits into
mainfrom
devin/1794504507-stylo-svg-properties
Open

nicoburns wants to merge 2 commits into
mainfrom
devin/1794504507-stylo-svg-properties

Conversation

@nicoburns

@nicoburns nicoburns commented Nov 12, 2026 •

Copy link
Copy Markdown
Member

Summary

Points Blitz at a Stylo branch (DioxusLabs/stylo enable-svg-properties-servo) that makes the SVG properties Stylo still gated to Gecko available to Servo builds behind a new layout.css.svg-properties.enabled pref, and turns that pref on in init_stylo_prefs. The properties are stop-color, stop-opacity, paint-order, marker-start/-mid/-end and the marker shorthand, clip-rule, text-anchor, vector-effect, transform-box, flood-color, flood-opacity, lighting-color, color-interpolation, color-interpolation-filters, shape-rendering and -moz-context-properties. This is milestone 0 of native SVG rendering: these properties now parse and cascade, so SVG paint code can read them from computed styles instead of from attributes.

The Stylo change removes engine = "gecko" from those properties, adds servo_pref = "layout.css.svg-properties.enabled" (default false), and removes the cfg(gecko) on the marker shorthand's parse/serialize code. It's meant to go upstream to servo/stylo. The [patch.crates-io] block pins that commit, like #1098, and should be removed once the change is in a Stylo release.

Nothing in Blitz reads these properties yet, so rendering should be unchanged. Any WPT diff should come from parsing/computed-value tests for these properties.

Link to Devin session: https://dioxus.staging.devinenterprise.com/sessions/4ffac007d4984409a3915d7477fb3d74
Link to Bot: https://dioxus.staging.devinenterprise.com/org/dioxus-engineering/bots/3904245e951a4a7fa4631b37b308d89b
Open in Devin Desktop: https://dioxus.staging.devinenterprise.com/desktop/session/4ffac007d4984409a3915d7477fb3d74?variant=devin-insiders


Painting

Painting opened this PR for Nico

Implemented in Un-gate gecko-only SVG properties in stylo · Review with Devin


WPT results

Subtests: 369 newly passing, 0 newly failing (net +369).

Subtest changes by area (22 areas)
+ css               | +162 (+162 / -0) | 59.69% ->  59.77% ( +0.08%) | 119623 -> 119785 / 200416
+   css-animations  |   +3 (  +3 / -0) | 56.14% ->  56.34% ( +0.20%) |    832 ->    835 /   1482
+   css-cascade     |  +16 ( +16 / -0) | 69.24% ->  70.64% ( +1.40%) |    790 ->    806 /   1141
+   css-masking     |  +41 ( +41 / -0) | 54.35% ->  54.95% ( +0.59%) |   3752 ->   3793 /   6903
+     clip-rule     |  +35 ( +35 / -0) |  0.00% ->  79.55% (+79.55%) |      0 ->     35 /     44
+     parsing       |   +4 (  +4 / -0) | 90.59% ->  91.42% ( +0.84%) |    433 ->    437 /    478
+   css-transforms  |  +11 ( +11 / -0) | 65.71% ->  65.89% ( +0.17%) |   4165 ->   4176 /   6338
+     parsing       |   +6 (  +6 / -0) | 93.11% ->  94.64% ( +1.53%) |    365 ->    371 /    392
+     transform-box |   +3 (  +3 / -0) |  0.00% ->   8.82% ( +8.82%) |      0 ->      3 /     34
+   css-variables   |   +4 (  +4 / -0) | 87.10% ->  87.63% ( +0.54%) |    648 ->    652 /    744
+   filter-effects  |  +87 ( +87 / -0) | 53.30% ->  55.90% ( +2.60%) |   1785 ->   1872 /   3349
+     animation     |  +35 ( +35 / -0) | 62.74% ->  64.41% ( +1.67%) |   1317 ->   1352 /   2099
+     parsing       |  +44 ( +44 / -0) | 74.63% ->  87.61% (+12.98%) |    253 ->    297 /    339
+ svg               | +207 (+207 / -0) | 37.90% ->  39.20% ( +1.30%) |   6036 ->   6243 /  15926
+   painting        | +146 (+146 / -0) | 53.77% ->  71.82% (+18.05%) |    435 ->    581 /    809
+     parsing       |  +70 ( +70 / -0) | 68.12% ->  91.61% (+23.49%) |    203 ->    273 /    298
+     scripted      |  +29 ( +29 / -0) |  2.08% ->  62.50% (+60.42%) |      1 ->     30 /     48
+   pservers        |  +36 ( +36 / -0) | 29.17% ->  66.67% (+37.50%) |     28 ->     64 /     96
+     parsing       |  +32 ( +32 / -0) | 27.27% -> 100.00% (+72.73%) |     12 ->     44 /     44
+   styling         |  +17 ( +17 / -0) | 29.26% ->  32.56% ( +3.29%) |    151 ->    168 /    516
+   text            |   +8 (  +8 / -0) | 50.18% ->  53.02% ( +2.85%) |    141 ->    149 /    281
+     parsing       |   +6 (  +6 / -0) | 69.86% ->  78.08% ( +8.22%) |     51 ->     57 /     73
Full diff (50 changed tests)
+ FAIL => PASS      [3/3]   +3  css/css-animations/svg-color-visited-currentcolor.html
+ PASS => PASS  [289/289]  +16  css/css-cascade/all-prop-revert-layer.html
+ FAIL => FAIL    [35/42]  +35  css/css-masking/clip-rule/clip-rule-no-interpolation.html
+ FAIL => FAIL    [23/36]   +2  css/css-masking/inheritance.sub.html
+ FAIL => PASS      [2/2]   +2  css/css-masking/parsing/clip-rule-computed.html
+ FAIL => PASS      [2/2]   +2  css/css-masking/parsing/clip-rule-valid.html
+ FAIL => PASS    [20/20]   +2  css/css-transforms/inheritance.html
+ FAIL => FAIL      [3/5]   +3  css/css-transforms/parsing/transform-box-computed.html
+ FAIL => FAIL      [3/5]   +3  css/css-transforms/parsing/transform-box-valid.html
+ FAIL => PASS      [1/1]   +1  css/css-transforms/transform-box/cssbox-border-box.html
+ FAIL => PASS      [1/1]   +1  css/css-transforms/transform-box/cssbox-initial.html
+ FAIL => PASS      [1/1]   +1  css/css-transforms/transform-box/cssbox-view-box.html
+ FAIL => FAIL    [30/48]   +4  css/css-variables/variable-presentation-attribute.html
+ FAIL => FAIL    [35/42]  +35  css/filter-effects/animation/color-interpolation-filters-no-interpolation.html
+ FAIL => PASS    [12/12]   +8  css/filter-effects/inheritance.html
+ FAIL => PASS      [3/3]   +3  css/filter-effects/parsing/color-interpolation-filters-computed.html
+ FAIL => PASS      [4/4]   +4  css/filter-effects/parsing/color-interpolation-filters-parsing-valid.html
+ FAIL => PASS      [8/8]   +8  css/filter-effects/parsing/flood-color-computed.html
+ FAIL => PASS      [8/8]   +8  css/filter-effects/parsing/flood-color-valid.html
+ FAIL => PASS      [8/8]   +8  css/filter-effects/parsing/flood-opacity-computed.svg
+ FAIL => PASS      [7/7]   +7  css/filter-effects/parsing/flood-opacity-valid.svg
+ FAIL => PASS      [1/1]   +1  css/filter-effects/parsing/lighting-color-computed.html
+ FAIL => PASS      [5/5]   +5  css/filter-effects/parsing/lighting-color-parsing-valid.html
+ FAIL => FAIL    [35/42]  +35  svg/painting/color-interpolation-animation.html
+ FAIL => FAIL    [37/38]  +12  svg/painting/inheritance.svg
+ FAIL => PASS      [3/3]   +3  svg/painting/parsing/color-interpolation-computed.svg
+ FAIL => PASS      [3/3]   +3  svg/painting/parsing/color-interpolation-valid.svg
+ FAIL => FAIL      [4/5]   +2  svg/painting/parsing/marker-computed.svg
+ FAIL => FAIL      [2/3]   +2  svg/painting/parsing/marker-end-computed.svg
+ FAIL => PASS      [2/2]   +2  svg/painting/parsing/marker-end-valid.svg
+ FAIL => FAIL      [2/3]   +2  svg/painting/parsing/marker-mid-computed.svg
+ FAIL => PASS      [2/2]   +2  svg/painting/parsing/marker-mid-valid.svg
+ FAIL => PASS      [8/8]   +8  svg/painting/parsing/marker-shorthand.svg
+ FAIL => FAIL      [2/3]   +2  svg/painting/parsing/marker-start-computed.svg
+ FAIL => PASS      [2/2]   +2  svg/painting/parsing/marker-start-valid.svg
+ FAIL => PASS      [2/2]   +2  svg/painting/parsing/marker-valid.svg
+ FAIL => PASS    [16/16]  +16  svg/painting/parsing/paint-order-computed.svg
+ FAIL => PASS    [16/16]  +16  svg/painting/parsing/paint-order-valid.svg
+ FAIL => PASS      [4/4]   +4  svg/painting/parsing/shape-rendering-computed.svg
+ FAIL => PASS      [4/4]   +4  svg/painting/parsing/shape-rendering-valid.svg
+ FAIL => FAIL    [29/44]  +29  svg/painting/scripted/paint-order-computed-value-01.svg
+ FAIL => PASS      [4/4]   +4  svg/pservers/inheritance.svg
+ FAIL => PASS    [10/10]  +10  svg/pservers/parsing/stop-color-computed.svg
+ FAIL => PASS    [10/10]  +10  svg/pservers/parsing/stop-color-valid.svg
+ FAIL => PASS      [6/6]   +6  svg/pservers/parsing/stop-opacity-computed.svg
+ FAIL => PASS      [6/6]   +6  svg/pservers/parsing/stop-opacity-valid.svg
+ FAIL => FAIL    [79/82]  +17  svg/styling/required-properties.svg
+ FAIL => FAIL     [4/10]   +2  svg/text/inheritance.svg
+ FAIL => PASS      [3/3]   +3  svg/text/parsing/text-anchor-computed.svg
+ FAIL => PASS      [3/3]   +3  svg/text/parsing/text-anchor-valid.svg

Generated by the WPT workflow.

@staging-devin-ai-integration

Copy link
Copy Markdown
Contributor

I'll fix CI failures and address comments from users with write access that start with 'Devin'.

  • Disable automatic comment, CI, and merge conflict monitoring

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant