script: Update list of non-TS pseudo classes supported by Servo (#33165)

Also remove some code duplication by moving some of the code into the
`Element` impl.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
Martin Robinson 2024-08-24 01:43:54 -07:00 committed by GitHub
parent ad45fa0a19
commit 7582afebec
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 58 additions and 68 deletions

28
Cargo.lock generated
View file

@ -1294,7 +1294,7 @@ dependencies = [
[[package]]
name = "derive_common"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#c3a84ea8c97b0af542fbb47eee8f6f182b357128"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#3359447b53f0d0bc4affe135313ca8d0e48cb876"
dependencies = [
"darling",
"proc-macro2",
@ -1483,7 +1483,7 @@ dependencies = [
[[package]]
name = "dom"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#c3a84ea8c97b0af542fbb47eee8f6f182b357128"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#3359447b53f0d0bc4affe135313ca8d0e48cb876"
dependencies = [
"bitflags 2.6.0",
]
@ -4090,7 +4090,7 @@ dependencies = [
[[package]]
name = "malloc_size_of"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#c3a84ea8c97b0af542fbb47eee8f6f182b357128"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#3359447b53f0d0bc4affe135313ca8d0e48cb876"
dependencies = [
"accountable-refcell",
"app_units",
@ -5778,7 +5778,7 @@ checksum = "0495e4577c672de8254beb68d01a9b62d0e8a13c099edecdbedccce3223cd29f"
[[package]]
name = "selectors"
version = "0.24.0"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#c3a84ea8c97b0af542fbb47eee8f6f182b357128"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#3359447b53f0d0bc4affe135313ca8d0e48cb876"
dependencies = [
"bitflags 2.6.0",
"cssparser",
@ -6092,7 +6092,7 @@ dependencies = [
[[package]]
name = "servo_arc"
version = "0.2.0"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#c3a84ea8c97b0af542fbb47eee8f6f182b357128"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#3359447b53f0d0bc4affe135313ca8d0e48cb876"
dependencies = [
"serde",
"stable_deref_trait",
@ -6101,7 +6101,7 @@ dependencies = [
[[package]]
name = "servo_atoms"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#c3a84ea8c97b0af542fbb47eee8f6f182b357128"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#3359447b53f0d0bc4affe135313ca8d0e48cb876"
dependencies = [
"string_cache",
"string_cache_codegen",
@ -6303,7 +6303,7 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
[[package]]
name = "size_of_test"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#c3a84ea8c97b0af542fbb47eee8f6f182b357128"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#3359447b53f0d0bc4affe135313ca8d0e48cb876"
dependencies = [
"static_assertions",
]
@ -6444,7 +6444,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
[[package]]
name = "static_prefs"
version = "0.1.0"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#c3a84ea8c97b0af542fbb47eee8f6f182b357128"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#3359447b53f0d0bc4affe135313ca8d0e48cb876"
[[package]]
name = "strck"
@ -6497,7 +6497,7 @@ dependencies = [
[[package]]
name = "style"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#c3a84ea8c97b0af542fbb47eee8f6f182b357128"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#3359447b53f0d0bc4affe135313ca8d0e48cb876"
dependencies = [
"app_units",
"arrayvec",
@ -6556,7 +6556,7 @@ dependencies = [
[[package]]
name = "style_config"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#c3a84ea8c97b0af542fbb47eee8f6f182b357128"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#3359447b53f0d0bc4affe135313ca8d0e48cb876"
dependencies = [
"lazy_static",
]
@ -6564,7 +6564,7 @@ dependencies = [
[[package]]
name = "style_derive"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#c3a84ea8c97b0af542fbb47eee8f6f182b357128"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#3359447b53f0d0bc4affe135313ca8d0e48cb876"
dependencies = [
"darling",
"derive_common",
@ -6595,7 +6595,7 @@ dependencies = [
[[package]]
name = "style_traits"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#c3a84ea8c97b0af542fbb47eee8f6f182b357128"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#3359447b53f0d0bc4affe135313ca8d0e48cb876"
dependencies = [
"app_units",
"bitflags 2.6.0",
@ -6944,7 +6944,7 @@ dependencies = [
[[package]]
name = "to_shmem"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#c3a84ea8c97b0af542fbb47eee8f6f182b357128"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#3359447b53f0d0bc4affe135313ca8d0e48cb876"
dependencies = [
"cssparser",
"servo_arc",
@ -6957,7 +6957,7 @@ dependencies = [
[[package]]
name = "to_shmem_derive"
version = "0.0.1"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#c3a84ea8c97b0af542fbb47eee8f6f182b357128"
source = "git+https://github.com/servo/stylo?branch=2024-07-16#3359447b53f0d0bc4affe135313ca8d0e48cb876"
dependencies = [
"darling",
"derive_common",

View file

@ -3695,22 +3695,36 @@ impl SelectorsElement for DomRoot<Element> {
// storing separate <ident> or <string>s for each language tag.
NonTSPseudoClass::Lang(ref lang) => extended_filtering(&self.get_lang(), lang),
NonTSPseudoClass::ReadOnly => !Element::state(self).contains(pseudo_class.state_flag()),
NonTSPseudoClass::ReadOnly => {
!Element::state(self).contains(NonTSPseudoClass::ReadWrite.state_flag())
},
NonTSPseudoClass::Active |
NonTSPseudoClass::Autofill |
NonTSPseudoClass::Checked |
NonTSPseudoClass::Default |
NonTSPseudoClass::Defined |
NonTSPseudoClass::Disabled |
NonTSPseudoClass::Enabled |
NonTSPseudoClass::Focus |
NonTSPseudoClass::FocusVisible |
NonTSPseudoClass::FocusWithin |
NonTSPseudoClass::Fullscreen |
NonTSPseudoClass::Hover |
NonTSPseudoClass::Defined |
NonTSPseudoClass::Enabled |
NonTSPseudoClass::Disabled |
NonTSPseudoClass::Checked |
NonTSPseudoClass::Valid |
NonTSPseudoClass::Invalid |
NonTSPseudoClass::InRange |
NonTSPseudoClass::Indeterminate |
NonTSPseudoClass::ReadWrite |
NonTSPseudoClass::Invalid |
NonTSPseudoClass::Modal |
NonTSPseudoClass::Optional |
NonTSPseudoClass::OutOfRange |
NonTSPseudoClass::PlaceholderShown |
NonTSPseudoClass::Target => Element::state(self).contains(pseudo_class.state_flag()),
NonTSPseudoClass::PopoverOpen |
NonTSPseudoClass::ReadWrite |
NonTSPseudoClass::Required |
NonTSPseudoClass::Target |
NonTSPseudoClass::UserInvalid |
NonTSPseudoClass::UserValid |
NonTSPseudoClass::Valid => Element::state(self).contains(pseudo_class.state_flag()),
}
}

View file

@ -567,22 +567,34 @@ impl<'dom> ::selectors::Element for ServoLayoutElement<'dom> {
NonTSPseudoClass::ReadOnly => !self
.element
.get_state_for_layout()
.contains(pseudo_class.state_flag()),
.contains(NonTSPseudoClass::ReadWrite.state_flag()),
NonTSPseudoClass::Active |
NonTSPseudoClass::Autofill |
NonTSPseudoClass::Checked |
NonTSPseudoClass::Default |
NonTSPseudoClass::Defined |
NonTSPseudoClass::Disabled |
NonTSPseudoClass::Enabled |
NonTSPseudoClass::Focus |
NonTSPseudoClass::FocusVisible |
NonTSPseudoClass::FocusWithin |
NonTSPseudoClass::Fullscreen |
NonTSPseudoClass::Hover |
NonTSPseudoClass::Defined |
NonTSPseudoClass::Enabled |
NonTSPseudoClass::Disabled |
NonTSPseudoClass::Checked |
NonTSPseudoClass::Valid |
NonTSPseudoClass::Invalid |
NonTSPseudoClass::InRange |
NonTSPseudoClass::Indeterminate |
NonTSPseudoClass::ReadWrite |
NonTSPseudoClass::Invalid |
NonTSPseudoClass::Modal |
NonTSPseudoClass::Optional |
NonTSPseudoClass::OutOfRange |
NonTSPseudoClass::PlaceholderShown |
NonTSPseudoClass::Target => self
NonTSPseudoClass::PopoverOpen |
NonTSPseudoClass::ReadWrite |
NonTSPseudoClass::Required |
NonTSPseudoClass::Target |
NonTSPseudoClass::UserInvalid |
NonTSPseudoClass::UserValid |
NonTSPseudoClass::Valid => self
.element
.get_state_for_layout()
.contains(pseudo_class.state_flag()),

View file

@ -1,7 +1,4 @@
[focus-visible-017-2.html]
[":focus-visible" should be a valid selector]
expected: FAIL
[By default initial programatic focus matches ':focus-visible', so the element ABBR shows a focus ring with 'outline-style: auto']
expected: FAIL

View file

@ -1,7 +1,3 @@
[focus-visible-017.html]
[By default initial programatic focus matches ':focus-visible', so the element shows a focus ring with 'outline-style: auto']
expected: FAIL
[":focus-visible" should be a valid selector]
expected: FAIL

View file

@ -1,6 +1,3 @@
[focus-visible-023.html]
[":focus-visible" should be a valid selector]
expected: FAIL
[:focus-visible stop matching after blur]
expected: FAIL

View file

@ -1,6 +1,3 @@
[focus-visible-script-focus-001.html]
[":focus-visible" should be a valid selector]
expected: FAIL
[Script focus without any previous user interaction matches :focus-visible]
expected: FAIL

View file

@ -1,7 +1,4 @@
[focus-within-009.html]
[Initial State]
expected: FAIL
[Focus 'target1']
expected: FAIL
@ -17,9 +14,6 @@
[Focus 'target1' once again]
expected: FAIL
[Detach 'container1' from the document]
expected: FAIL
[Try to focus 'target1']
expected: FAIL
@ -31,6 +25,3 @@
[Focus 'target1' for the last time]
expected: FAIL
[Move 'target1' in 'container2']
expected: FAIL

View file

@ -1,10 +0,0 @@
[parse-focus-visible.html]
[":focus-visible" should be a valid selector]
expected: FAIL
["a:focus-visible" should be a valid selector]
expected: FAIL
[":focus:not(:focus-visible)" should be a valid selector]
expected: FAIL

View file

@ -1,7 +1,3 @@
[autofill.html]
[":autofill" should be a valid selector]
expected: FAIL
[":-webkit-autofill" should be a valid selector]
expected: FAIL