LibWeb: Support composition of mixed values

This exposes an existing issue with interpolation where it is not clear
in what situations zero-valued dimensions should be excluded from the
interpolated value of a dimension-percentage mix (e.g. `calc(50% + 0px)`
vs `50%`) - but this is just a serialization issue as both
representations are resolved to the same used value
This commit is contained in:
Callum Law
2026-02-22 20:07:21 +13:00
committed by Tim Ledbetter
parent f7e5e57233
commit 49eb9d7a7a
Notes: github-actions[bot] 2026-02-23 09:02:43 +00:00
22 changed files with 313 additions and 279 deletions

View File

@@ -2,8 +2,7 @@ Harness status: OK
Found 70 tests
46 Pass
24 Fail
70 Pass
Pass Compositing CSS Animations: property <background-position> underlying [40px 140px] from add [60px 160px] to add [160px 260px] at (-0.25) should be [75px 275px, 75px 275px]
Pass Compositing CSS Animations: property <background-position> underlying [40px 140px] from add [60px 160px] to add [160px 260px] at (0) should be [100px 300px, 100px 300px]
Pass Compositing CSS Animations: property <background-position> underlying [40px 140px] from add [60px 160px] to add [160px 260px] at (0.25) should be [125px 325px, 125px 325px]
@@ -18,34 +17,34 @@ Pass Compositing Web Animations: property <background-position> underlying [40px
Pass Compositing Web Animations: property <background-position> underlying [40px 140px] from add [60px 160px] to add [160px 260px] at (0.75) should be [175px 375px, 175px 375px]
Pass Compositing Web Animations: property <background-position> underlying [40px 140px] from add [60px 160px] to add [160px 260px] at (1) should be [200px 400px, 200px 400px]
Pass Compositing Web Animations: property <background-position> underlying [40px 140px] from add [60px 160px] to add [160px 260px] at (1.25) should be [225px 425px, 225px 425px]
Fail Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (-0.25) should be [110% 105%, 110% 105%]
Pass Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (-0.25) should be [110% 105%, 110% 105%]
Pass Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (0) should be [100% 100%, 100% 100%]
Fail Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (0.25) should be [90% 95%, 90% 95%]
Fail Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (0.5) should be [80% 90%, 80% 90%]
Fail Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (0.75) should be [70% 85%, 70% 85%]
Fail Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (1) should be [60% 80%, 60% 80%]
Fail Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (1.25) should be [50% 75%, 50% 75%]
Fail Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (-0.25) should be [110% 105%, 110% 105%]
Pass Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (0.25) should be [90% 95%, 90% 95%]
Pass Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (0.5) should be [80% 90%, 80% 90%]
Pass Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (0.75) should be [70% 85%, 70% 85%]
Pass Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (1) should be [60% 80%, 60% 80%]
Pass Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (1.25) should be [50% 75%, 50% 75%]
Pass Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (-0.25) should be [110% 105%, 110% 105%]
Pass Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (0) should be [100% 100%, 100% 100%]
Fail Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (0.25) should be [90% 95%, 90% 95%]
Fail Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (0.5) should be [80% 90%, 80% 90%]
Fail Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (0.75) should be [70% 85%, 70% 85%]
Fail Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (1) should be [60% 80%, 60% 80%]
Fail Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (1.25) should be [50% 75%, 50% 75%]
Fail Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (-0.25) should be [110% 105%, 235% 230%]
Pass Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (0.25) should be [90% 95%, 90% 95%]
Pass Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (0.5) should be [80% 90%, 80% 90%]
Pass Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (0.75) should be [70% 85%, 70% 85%]
Pass Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (1) should be [60% 80%, 60% 80%]
Pass Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%] to add [right 80% bottom 40%] at (1.25) should be [50% 75%, 50% 75%]
Pass Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (-0.25) should be [110% 105%, 235% 230%]
Pass Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (0) should be [100% 100%, 200% 200%]
Fail Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (0.25) should be [90% 95%, 165% 170%]
Fail Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (0.5) should be [80% 90%, 130% 140%]
Fail Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (0.75) should be [70% 85%, 95% 110%]
Fail Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (1) should be [60% 80%, 60% 80%]
Fail Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (1.25) should be [50% 75%, 25% 50%]
Fail Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (-0.25) should be [110% 105%, 235% 230%]
Pass Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (0.25) should be [90% 95%, 165% 170%]
Pass Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (0.5) should be [80% 90%, 130% 140%]
Pass Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (0.75) should be [70% 85%, 95% 110%]
Pass Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (1) should be [60% 80%, 60% 80%]
Pass Compositing CSS Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (1.25) should be [50% 75%, 25% 50%]
Pass Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (-0.25) should be [110% 105%, 235% 230%]
Pass Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (0) should be [100% 100%, 200% 200%]
Fail Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (0.25) should be [90% 95%, 165% 170%]
Fail Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (0.5) should be [80% 90%, 130% 140%]
Fail Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (0.75) should be [70% 85%, 95% 110%]
Fail Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (1) should be [60% 80%, 60% 80%]
Fail Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (1.25) should be [50% 75%, 25% 50%]
Pass Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (0.25) should be [90% 95%, 165% 170%]
Pass Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (0.5) should be [80% 90%, 130% 140%]
Pass Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (0.75) should be [70% 85%, 95% 110%]
Pass Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (1) should be [60% 80%, 60% 80%]
Pass Compositing Web Animations: property <background-position> underlying [top 20% left 40%] from add [left 60% top 80%, top 180% left 160%] to add [right 80% bottom 40%] at (1.25) should be [50% 75%, 25% 50%]
Pass Compositing CSS Animations: property <background-position> underlying [40px 140px] from replace [100px 200px] to add [160px 260px] at (-0.25) should be [75px 150px, 75px 150px]
Pass Compositing CSS Animations: property <background-position> underlying [40px 140px] from replace [100px 200px] to add [160px 260px] at (0) should be [100px 200px, 100px 200px]
Pass Compositing CSS Animations: property <background-position> underlying [40px 140px] from replace [100px 200px] to add [160px 260px] at (0.25) should be [125px 250px, 125px 250px]