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]] [[package]]
name = "derive_common" name = "derive_common"
version = "0.0.1" 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 = [ dependencies = [
"darling", "darling",
"proc-macro2", "proc-macro2",
@ -1483,7 +1483,7 @@ dependencies = [
[[package]] [[package]]
name = "dom" name = "dom"
version = "0.0.1" 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 = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
] ]
@ -4090,7 +4090,7 @@ dependencies = [
[[package]] [[package]]
name = "malloc_size_of" name = "malloc_size_of"
version = "0.0.1" 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 = [ dependencies = [
"accountable-refcell", "accountable-refcell",
"app_units", "app_units",
@ -5778,7 +5778,7 @@ checksum = "0495e4577c672de8254beb68d01a9b62d0e8a13c099edecdbedccce3223cd29f"
[[package]] [[package]]
name = "selectors" name = "selectors"
version = "0.24.0" 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 = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"cssparser", "cssparser",
@ -6092,7 +6092,7 @@ dependencies = [
[[package]] [[package]]
name = "servo_arc" name = "servo_arc"
version = "0.2.0" 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 = [ dependencies = [
"serde", "serde",
"stable_deref_trait", "stable_deref_trait",
@ -6101,7 +6101,7 @@ dependencies = [
[[package]] [[package]]
name = "servo_atoms" name = "servo_atoms"
version = "0.0.1" 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 = [ dependencies = [
"string_cache", "string_cache",
"string_cache_codegen", "string_cache_codegen",
@ -6303,7 +6303,7 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
[[package]] [[package]]
name = "size_of_test" name = "size_of_test"
version = "0.0.1" 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 = [ dependencies = [
"static_assertions", "static_assertions",
] ]
@ -6444,7 +6444,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
[[package]] [[package]]
name = "static_prefs" name = "static_prefs"
version = "0.1.0" 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]] [[package]]
name = "strck" name = "strck"
@ -6497,7 +6497,7 @@ dependencies = [
[[package]] [[package]]
name = "style" name = "style"
version = "0.0.1" 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 = [ dependencies = [
"app_units", "app_units",
"arrayvec", "arrayvec",
@ -6556,7 +6556,7 @@ dependencies = [
[[package]] [[package]]
name = "style_config" name = "style_config"
version = "0.0.1" 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 = [ dependencies = [
"lazy_static", "lazy_static",
] ]
@ -6564,7 +6564,7 @@ dependencies = [
[[package]] [[package]]
name = "style_derive" name = "style_derive"
version = "0.0.1" 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 = [ dependencies = [
"darling", "darling",
"derive_common", "derive_common",
@ -6595,7 +6595,7 @@ dependencies = [
[[package]] [[package]]
name = "style_traits" name = "style_traits"
version = "0.0.1" 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 = [ dependencies = [
"app_units", "app_units",
"bitflags 2.6.0", "bitflags 2.6.0",
@ -6944,7 +6944,7 @@ dependencies = [
[[package]] [[package]]
name = "to_shmem" name = "to_shmem"
version = "0.0.1" 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 = [ dependencies = [
"cssparser", "cssparser",
"servo_arc", "servo_arc",
@ -6957,7 +6957,7 @@ dependencies = [
[[package]] [[package]]
name = "to_shmem_derive" name = "to_shmem_derive"
version = "0.0.1" 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 = [ dependencies = [
"darling", "darling",
"derive_common", "derive_common",

View file

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

View file

@ -1,7 +1,4 @@
[focus-visible-017-2.html] [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'] [By default initial programatic focus matches ':focus-visible', so the element ABBR shows a focus ring with 'outline-style: auto']
expected: FAIL expected: FAIL

View file

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

View file

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

View file

@ -1,6 +1,3 @@
[focus-visible-script-focus-001.html] [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] [Script focus without any previous user interaction matches :focus-visible]
expected: FAIL expected: FAIL

View file

@ -1,7 +1,4 @@
[focus-within-009.html] [focus-within-009.html]
[Initial State]
expected: FAIL
[Focus 'target1'] [Focus 'target1']
expected: FAIL expected: FAIL
@ -17,9 +14,6 @@
[Focus 'target1' once again] [Focus 'target1' once again]
expected: FAIL expected: FAIL
[Detach 'container1' from the document]
expected: FAIL
[Try to focus 'target1'] [Try to focus 'target1']
expected: FAIL expected: FAIL
@ -31,6 +25,3 @@
[Focus 'target1' for the last time] [Focus 'target1' for the last time]
expected: FAIL 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.html]
[":autofill" should be a valid selector]
expected: FAIL
[":-webkit-autofill" should be a valid selector] [":-webkit-autofill" should be a valid selector]
expected: FAIL expected: FAIL