summaryrefslogtreecommitdiffstats
path: root/servo/components/selectors/attr.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-15 03:35:49 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-15 03:35:49 +0000
commitd8bbc7858622b6d9c278469aab701ca0b609cddf (patch)
treeeff41dc61d9f714852212739e6b3738b82a2af87 /servo/components/selectors/attr.rs
parentReleasing progress-linux version 125.0.3-1~progress7.99u1. (diff)
downloadfirefox-d8bbc7858622b6d9c278469aab701ca0b609cddf.tar.xz
firefox-d8bbc7858622b6d9c278469aab701ca0b609cddf.zip
Merging upstream version 126.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'servo/components/selectors/attr.rs')
-rw-r--r--servo/components/selectors/attr.rs17
1 files changed, 11 insertions, 6 deletions
diff --git a/servo/components/selectors/attr.rs b/servo/components/selectors/attr.rs
index fee2962237..70a0c5ea95 100644
--- a/servo/components/selectors/attr.rs
+++ b/servo/components/selectors/attr.rs
@@ -111,16 +111,21 @@ impl AttrSelectorOperator {
let case = case_sensitivity;
match self {
AttrSelectorOperator::Equal => case.eq(e, s),
- AttrSelectorOperator::Prefix => e.len() >= s.len() && case.eq(&e[..s.len()], s),
+ AttrSelectorOperator::Prefix => {
+ !s.is_empty() && e.len() >= s.len() && case.eq(&e[..s.len()], s)
+ },
AttrSelectorOperator::Suffix => {
- e.len() >= s.len() && case.eq(&e[(e.len() - s.len())..], s)
+ !s.is_empty() && e.len() >= s.len() && case.eq(&e[(e.len() - s.len())..], s)
},
AttrSelectorOperator::Substring => {
- case.contains(element_attr_value, attr_selector_value)
+ !s.is_empty() && case.contains(element_attr_value, attr_selector_value)
+ },
+ AttrSelectorOperator::Includes => {
+ !s.is_empty() &&
+ element_attr_value
+ .split(SELECTOR_WHITESPACE)
+ .any(|part| case.eq(part.as_bytes(), s))
},
- AttrSelectorOperator::Includes => element_attr_value
- .split(SELECTOR_WHITESPACE)
- .any(|part| case.eq(part.as_bytes(), s)),
AttrSelectorOperator::DashMatch => {
case.eq(e, s) || (e.get(s.len()) == Some(&b'-') && case.eq(&e[..s.len()], s))
},