Support ::part selector (#37307)

This is pretty much just wiring up the necessary stylo methods. Note
that the `exportparts` attribute is not yet supported, I'll do that in a
followup change

Testing: Covered by existing web platform tests.
This is the first half of https://github.com/servo/servo/issues/35349

Fixes https://github.com/servo/servo/issues/37325

---------

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This commit is contained in:
Simon Wülker 2025-06-09 12:17:28 +02:00 committed by GitHub
parent 73ee36be00
commit 0fa3de3937
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
36 changed files with 119 additions and 348 deletions

View file

@ -1,82 +1,28 @@
[pseudo-classes-after-part.html]
["::part(mypart):active" should be a valid selector]
expected: FAIL
["::part(mypart):active-view-transition" should be a valid selector]
expected: FAIL
["::part(mypart):active-view-transition-type(mytype)" should be a valid selector]
expected: FAIL
["::part(mypart):any-link" should be a valid selector]
expected: FAIL
["::part(mypart):autofill" should be a valid selector]
expected: FAIL
["::part(mypart):checked" should be a valid selector]
expected: FAIL
["::part(mypart):default" should be a valid selector]
expected: FAIL
["::part(mypart):defined" should be a valid selector]
expected: FAIL
["::part(mypart):dir(ltr)" should be a valid selector]
expected: FAIL
["::part(mypart):disabled" should be a valid selector]
expected: FAIL
["::part(mypart):enabled" should be a valid selector]
expected: FAIL
["::part(mypart):focus" should be a valid selector]
expected: FAIL
["::part(mypart):focus-visible" should be a valid selector]
expected: FAIL
["::part(mypart):focus-within" should be a valid selector]
expected: FAIL
["::part(mypart):fullscreen" should be a valid selector]
expected: FAIL
["::part(mypart):future" should be a valid selector]
expected: FAIL
["::part(mypart):hover" should be a valid selector]
expected: FAIL
["::part(mypart):indeterminate" should be a valid selector]
expected: FAIL
["::part(mypart):in-range" should be a valid selector]
expected: FAIL
["::part(mypart):invalid" should be a valid selector]
expected: FAIL
["::part(mypart):lang(en)" should be a valid selector]
expected: FAIL
["::part(mypart):link" should be a valid selector]
expected: FAIL
["::part(mypart):modal" should be a valid selector]
expected: FAIL
["::part(mypart):open" should be a valid selector]
expected: FAIL
["::part(mypart):optional" should be a valid selector]
expected: FAIL
["::part(mypart):out-of-range" should be a valid selector]
expected: FAIL
["::part(mypart):past" should be a valid selector]
expected: FAIL
@ -86,56 +32,11 @@
["::part(mypart):picture-in-picture" should be a valid selector]
expected: FAIL
["::part(mypart):placeholder-shown" should be a valid selector]
expected: FAIL
["::part(mypart):playing" should be a valid selector]
expected: FAIL
["::part(mypart):popover-open" should be a valid selector]
expected: FAIL
["::part(mypart):read-only" should be a valid selector]
expected: FAIL
["::part(mypart):read-write" should be a valid selector]
expected: FAIL
["::part(mypart):required" should be a valid selector]
expected: FAIL
["::part(mypart):state(mystate)" should be a valid selector]
expected: FAIL
["::part(mypart):target" should be a valid selector]
expected: FAIL
["::part(mypart):user-invalid" should be a valid selector]
expected: FAIL
["::part(mypart):user-valid" should be a valid selector]
expected: FAIL
["::part(mypart):valid" should be a valid selector]
expected: FAIL
["::part(mypart):visited" should be a valid selector]
expected: FAIL
["::part(mypart):xr-overlay" should be a valid selector]
expected: FAIL
["::part(mypart):not(:hover)" should be a valid selector]
expected: FAIL
["::part(mypart):is(:hover)" should be a valid selector]
expected: FAIL
["::part(mypart):where(:hover)" should be a valid selector]
expected: FAIL
["::part(mypart):is(:first-child)" should be a valid selector]
expected: FAIL
["::part(mypart):where(:first-child)" should be a valid selector]
expected: FAIL