Files
sousa-gecko/testing/web-platform/tests/css/css-grid/parsing/grid-auto-columns-invalid.html
T
Javier Fernández García-Boente 9a459aea88 Bug 2052822 [wpt PR 61081] - [Typed OM] Wrap out-of-range values for more properties in calc(), a=testonly
Automatic update from web-platform-tests
[Typed OM] Wrap out-of-range values for more properties in calc()

Per CSS Typed OM set() step 9, a CSSUnitValue outside the limited
numeric range of a property's grammar must be preserved by wrapping it
in a CSSMathSum (serialized as calc()), so get() reifies it back as a
CSSMathSum rather than a bare CSSUnitValue.

Blink already implements this wrapping in
CSSUnitValue::ToCSSValueWithProperty(), but
IsValueOutOfRangeForProperty() only recognized non-negative <length>
properties (via LengthPropertyFunctions) plus a small hardcoded set.
Extend it to cover the remaining non-negative properties that were
failing WPT (numbers, times, non-length length-percentages, and logical
padding), correct the font-weight lower bound to 1, and treat
stroke-miterlimit as non-negative.

Flexible lengths ('fr') have no representation inside a calc(), so guard
against wrapping them and leave a <flex> unwrapped: a negative <flex> is
invalid per the grammar, and wrapping it would build an invalid calc
expression (a DCHECK failure in CSSMathExpressionNode).

Add CSSUnitValue unit tests for ToCSSValueWithProperty() covering the
in-range, out-of-range, font-weight range, and <flex>-guard cases (the
guard is otherwise only observable as a Debug-only DCHECK), and add a
bare negative <flex> to the grid-auto-columns/rows invalid-value parsing
tests.

Change-Id: I766440527ec2b09140419b4da8c0a6e25759f692
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8024972
Commit-Queue: Javier Fernandez <jfernandez@igalia.com>
Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1657800}

--

wpt-commits: 117845549aec47118b6c405fd4e7a506ad33eaed
wpt-pr: 61081
2026-07-12 11:55:53 +00:00

41 lines
1.6 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Grid Layout Test: parsing grid-auto-columns with invalid values</title>
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-auto-columns">
<meta name="assert" content="grid-auto-columns supports only the grammar '<track-size>+'.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
</head>
<body>
<script>
// <track-breadth>
test_invalid_value("grid-auto-columns", "none");
test_invalid_value("grid-auto-columns", "-1px");
test_invalid_value("grid-auto-columns", "-4%");
test_invalid_value("grid-auto-columns", "-1fr");
// minmax( <inflexible-breadth> , <track-breadth> )
test_invalid_value("grid-auto-columns", "minmax(1px)");
test_invalid_value("grid-auto-columns", "minmax(1px, 2px, 3px)");
test_invalid_value("grid-auto-columns", "minmax(5fr, 1px)");
test_invalid_value("grid-auto-columns", "minmax(6px, -7%)");
test_invalid_value("grid-auto-columns", "minmax(8px, -9fr)");
// fit-content( <length-percentage> )
test_invalid_value("grid-auto-columns", "fit-content(-1px)");
test_invalid_value("grid-auto-columns", "fit-content(1px, 2px)");
test_invalid_value("grid-auto-columns", "fit-content(1px auto)");
// <track-size>+
test_invalid_value("grid-auto-columns", "2em / 3em");
test_invalid_value("grid-auto-columns", "auto, 10%");
test_invalid_value("grid-auto-columns", "1px [a] 1px");
test_invalid_value("grid-auto-columns", "[] 1px []");
</script>
</body>
</html>