LibWeb/CSS: Backtrack the parser if a property does not accept a value

This commit is contained in:
Tim Ledbetter
2025-06-14 05:27:41 +01:00
committed by Jelle Raaijmakers
parent 26293114d8
commit 028bcd3d67
Notes: github-actions[bot] 2025-06-14 06:24:04 +00:00
11 changed files with 265 additions and 36 deletions

View File

@@ -0,0 +1,32 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Multi-column Layout: parsing columns with invalid values</title>
<link rel="help" href="https://drafts.csswg.org/css-multicol/#propdef-columns">
<meta name="assert" content="columns supports only the grammar '<column-width> || <column-count>'.">
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../../css/support/parsing-testcommon.js"></script>
</head>
<body>
<script>
// Invalid keyword.
test_invalid_value("columns", "none");
// Only column-count can be unitless.
test_invalid_value("columns", "10px 20px");
test_invalid_value("columns", "10 20");
// column-count needs to be 1 or more.
test_invalid_value("columns", "0 0");
test_invalid_value("columns", "0 7px");
// Excess keywords.
test_invalid_value("columns", "auto auto auto");
test_invalid_value("columns", "10em auto auto");
test_invalid_value("columns", "initial initial");
test_invalid_value("columns", "inherit inherit");
</script>
</body>
</html>

View File

@@ -0,0 +1,35 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Multi-column Layout: parsing columns with valid values</title>
<link rel="help" href="https://drafts.csswg.org/css-multicol/#propdef-columns">
<meta name="assert" content="columns supports the full grammar '<column-width> || <column-count>'.">
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../../css/support/parsing-testcommon.js"></script>
</head>
<body>
<script>
test_valid_value("columns", "auto 3", "3");
test_valid_value("columns", "auto 10em", "10em");
test_valid_value("columns", "3 auto", "3");
test_valid_value("columns", "10em auto", "10em");
test_valid_value("columns", "2 10px", "10px 2");
test_valid_value("columns", "10px 2");
test_valid_value("columns", "auto");
test_valid_value("columns", "auto auto", "auto");
test_valid_value("columns", "7");
test_valid_value("columns", "7em");
// Unitless zero is allowed for column-width.
test_valid_value("columns", "0 1", "0px 1");
test_valid_value("columns", "1 0", "0px 1");
test_valid_value("columns", "0px 1");
// CSS-wide keywords.
test_valid_value("columns", "initial");
test_valid_value("columns", "inherit");
</script>
</body>
</html>