LibWeb/CSS: Correct parsing of @supports selector()

A couple of fixes here:
- Parse a `<complex-selector>` instead of a `<selector-list>`
- Don't match if any unknown `::-webkit-*` pseudo-elements are found
This commit is contained in:
Sam Atkins
2025-03-14 14:37:24 +00:00
parent b6fb4baeb7
commit db597843d6
Notes: github-actions[bot] 2025-03-17 10:01:11 +00:00
8 changed files with 100 additions and 4 deletions

View File

@@ -0,0 +1,19 @@
<!doctype html>
<title>CSS Conditional Test: @supports selector() with compound selector</title>
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
<link rel="author" href="https://mozilla.org" title="Mozilla">
<link rel="help" href="https://drafts.csswg.org/css-conditional/#at-supports">
<link rel="match" href="../../../../expected/wpt-import/css/css-conditional/at-supports-001-ref.html">
<style>
div {
background-color:red;
height:100px;
width:100px;
}
@supports selector(a:link.class#ident) {
div { background: green };
}
</style>
<p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
<div></div>

View File

@@ -0,0 +1,18 @@
<!doctype html>
<title>CSS Conditional Test: @supports selector() with pseudo-elements.</title>
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<link rel="author" href="https://mozilla.org" title="Mozilla">
<link rel="help" href="https://drafts.csswg.org/css-conditional/#at-supports">
<link rel="match" href="../../../../expected/wpt-import/css/css-conditional/at-supports-001-ref.html">
<style>
div {
background-color:red;
height:100px;
width:100px;
}
@supports selector(::before) {
div { background: green };
}
</style>
<p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
<div></div>

View File

@@ -0,0 +1,18 @@
<!doctype html>
<title>CSS Conditional Test: @supports selector() with -webkit- unknown pseudo-elements and negation.</title>
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<link rel="author" href="https://mozilla.org" title="Mozilla">
<link rel="help" href="https://drafts.csswg.org/css-conditional/#at-supports">
<link rel="match" href="../../../../expected/wpt-import/css/css-conditional/at-supports-001-ref.html">
<style>
div {
background-color:red;
height:100px;
width:100px;
}
@supports not selector(::-webkit-unknown-pseudo) {
div { background: green };
}
</style>
<p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
<div></div>

View File

@@ -0,0 +1,18 @@
<!doctype html>
<title>CSS Conditional Test: @supports selector() with multiple selectors doesn't work.</title>
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<link rel="author" href="https://mozilla.org" title="Mozilla">
<link rel="help" href="https://drafts.csswg.org/css-conditional/#at-supports">
<link rel="match" href="../../../../expected/wpt-import/css/css-conditional/at-supports-001-ref.html">
<style>
div {
background-color: green;
height: 100px;
width: 100px;
}
@supports selector(div, div) {
div { background: red };
}
</style>
<p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
<div></div>