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,12 +0,0 @@
[parse-is-where.html]
["::part(foo):is(:hover)" should be a valid selector]
expected: FAIL
["::part(foo):where(:hover)" should be a valid selector]
expected: FAIL
["::part(foo):is([attr='value'\])" should be a valid selector]
expected: FAIL
["::part(foo):where([attr='value'\])" should be a valid selector]
expected: FAIL

View file

@ -1,37 +1,4 @@
[parse-part.html]
["::part(--foo)" should be a valid selector]
expected: FAIL
["::part(bar)" should be a valid selector]
expected: FAIL
["::part(--)" should be a valid selector]
expected: FAIL
["::part(--0)" should be a valid selector]
expected: FAIL
["::part(foo bar)" should be a valid selector]
expected: FAIL
["::part(-foo bar)" should be a valid selector]
expected: FAIL
["::part(foo):focus" should be a valid selector]
expected: FAIL
["::part(foo):hover" should be a valid selector]
expected: FAIL
["::part(foo):focus-within" should be a valid selector]
expected: FAIL
["::part(foo)::before" should be a valid selector]
expected: FAIL
["::part(foo)::after" should be a valid selector]
expected: FAIL
["::part(foo)::placeholder" should be a valid selector]
expected: FAIL
@ -44,12 +11,6 @@
["::part(foo)::file-selector-button" should be a valid selector]
expected: FAIL
["::part(foo):is(:focus)" should be a valid selector]
expected: FAIL
[":lang(en)::part(foo)" should be a valid selector]
expected: FAIL
[":dir(ltr)::part(foo)" should be a valid selector]
expected: FAIL
@ -58,21 +19,3 @@
["::part(foo):dir(ltr)" should be a valid selector]
expected: FAIL
["::part(foo):is(ul)" should be a valid selector]
expected: FAIL
["::part(foo):is(nav ul)" should be a valid selector]
expected: FAIL
["::part(foo):where(ul)" should be a valid selector]
expected: FAIL
["::part(foo):where(nav ul)" should be a valid selector]
expected: FAIL
["::part(foo):disabled" should be a valid selector]
expected: FAIL
["::part(foo):checked" should be a valid selector]
expected: FAIL