Files
sousa-gecko/testing/web-platform/tests/css/css-values/calc-numbers.html
T
Daniil Sakhapov 61261e6b33 Bug 1945546 [wpt PR 50444] - CSSPrimitiveValue::ConvertTo<> can have percentage input, a=testonly
Automatic update from web-platform-tests
CSSPrimitiveValue::ConvertTo<> can have percentage input

Some properties, e.g. opacity, can have percentage input,
but ConvertTo<> only supports numbers now. Fix it by using
ComputeNumber() instead of ComputeInteger(), as it can work with
percentages.

Fixed: 393420196
Change-Id: Ic6a8886437eceedcc7a30d73085791dbbe561b9e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6219020
Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
Commit-Queue: Daniil Sakhapov <sakhapov@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1414874}

--

wpt-commits: cc9181576462ff0d1b9b4d19e3b8a196d068162a
wpt-pr: 50444
2025-02-05 09:09:19 +00:00

101 lines
3.7 KiB
HTML

<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Values and Units Test: computed value of 'tab-size' and 'opacity' when specified with calc() function</title>
<!--
Original test is:
https://chromium.googlesource.com/chromium/src/+/c825d655f6aaf73484f9d56e9012793f5b9668cc/third_party/WebKit/LayoutTests/css3/calc/calc-numbers.html
-->
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-color-3/#transparency">
<link rel="help" href="https://www.w3.org/TR/css-text-3/#tab-size-property">
<link rel="help" href="https://www.w3.org/TR/css3-values/#calc-computed-value">
<link rel="help" href="https://www.w3.org/TR/css3-values/#calc-range">
<meta name="flags" content="invalid">
<meta content="This test verifies how 11 calc() functions are computed for 'opacity' and 'tab-size'." name="assert">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="target"></div>
<script>
function startTesting()
{
function verifyComputedStyle(property_name, initial_value, specified_value, expected_value, description)
{
var elemTarget = document.getElementById("target");
test(function()
{
elemTarget.style.setProperty(property_name, initial_value);
/*
In exactly 6 out of the 11 sub-tests, the initial_value will
act as a fallback value because the specified value generates
an invalid value. Since we are running 11 consecutive tests
on the same element, then it is necessary to 'reset' its
property to an initial value.
*/
elemTarget.style.setProperty(property_name, specified_value);
assert_equals(getComputedStyle(elemTarget)[property_name], expected_value, specified_value + ' should compute to ' + expected_value);
}, description);
}
/* verifyComputedStyle(property_name, initial_value, specified_value, expected_value, description) */
verifyComputedStyle("tab-size", "initial", "calc(2 * 3)", "6", "testing tab-size: calc(2 * 3)");
verifyComputedStyle("tab-size", "12345", "calc(2 * -4)", "0", "testing tab-size: calc(2 * -4)");
/*
an out-of-range value inside a calc() does not cause
the declaration to become invalid. The value resulting
from an expression must be clamped to the range
allowed in the target context.
https://www.w3.org/TR/css-values-3/#calc-range
*/
verifyComputedStyle("opacity", "initial", "calc(2 / 4)", "0.5", "testing opacity: calc(2 / 4)");
verifyComputedStyle("tab-size", "12345", "calc(2 / 4)", "0.5", "testing tab-size: calc(2 / 4)");
/*
'tab-size' accepts <number> values.
*/
verifyComputedStyle("opacity", "0.9", "calc(2 / 4) * 1px", "0.9", "testing opacity: calc(2 / 4) * 1px");
verifyComputedStyle("opacity", "0.9", "calc(90%)", "0.9", "testing opacity: calc(90%)");
verifyComputedStyle("tab-size", "12345", "calc(1 + 1px)", "12345", "testing tab-size: calc(1 + 1px)");
verifyComputedStyle("tab-size", "12345", "calc(1 + 100%)", "12345", "testing tab-size: calc(1 + 100%)");
verifyComputedStyle("tab-size", "12345", "calc(100%)", "12345", "testing tab-size: calc(100%)");
verifyComputedStyle("tab-size", "12345", "calc(10px) bla", "12345", "testing tab-size: calc(10px) bla");
verifyComputedStyle("tab-size", "12345", "calc(bla) 10px", "12345", "testing tab-size: calc(bla) 10px");
verifyComputedStyle("tab-size", "initial", "calc(10px)", "10px", "testing tab-size: calc(10px)");
/* verifyComputedStyle(property_name, initial_value, specified_value, expected_value, description) */
}
startTesting();
</script>