forked from mirrors/gecko-dev
Automatic update from web-platform-tests Trim whitespace around CSS custom declarations. There was a spec change a few years back, requiring us to strip spaces and comments from the beginning and end of CSS custom property declarations. We take a slight performance hit: Initial style (µs) Before After Perf 95% CI (BCa) =================== ========= ========= ======= ================= ECommerce 10041 9994 +0.5% [ +0.1%, +0.9%] Encyclopedia 106735 106744 -0.0% [ -0.6%, +0.4%] Extension 132830 133009 -0.1% [ -0.6%, +0.2%] News 42534 42653 -0.3% [ -1.0%, +0.1%] Search 2636 2662 -1.0% [ -1.4%, -0.6%] Social1 23298 23312 -0.1% [ -0.3%, +0.2%] Social2 1039 1042 -0.3% [ -1.0%, +0.4%] Sports 42680 42985 -0.7% [ -1.0%, -0.5%] Video 41971 42134 -0.4% [ -0.6%, -0.1%] Geometric mean -0.3% [ -0.5%, -0.1%] Parse (µs) Before After Perf 95% CI (BCa) =================== ========= ========= ======= ================= ECommerce 1360 1372 -0.9% [ -1.2%, -0.4%] Encyclopedia 7349 7384 -0.5% [ -0.7%, -0.2%] Extension 1349 1352 -0.2% [ -1.2%, +0.2%] News 7929 7982 -0.7% [ -1.0%, -0.3%] Search 4965 4997 -0.6% [ -0.9%, -0.4%] Social1 14752 14837 -0.6% [ -0.8%, -0.3%] Social2 617 620 -0.4% [ -1.4%, +0.7%] Sports 56182 56318 -0.2% [ -0.6%, +0.0%] Video 34720 35091 -1.1% [ -1.3%, -0.8%] Geometric mean -0.6% [ -0.9%, -0.4%] Recalc style (µs) Before After Perf 95% CI (BCa) =================== ========= ========= ======= ================= ECommerce 11417 11378 +0.3% [ -0.2%, +0.8%] Encyclopedia 83808 84066 -0.3% [ -1.4%, +0.1%] Extension 120362 120394 -0.0% [ -0.7%, +0.3%] News 31566 31549 +0.1% [ -1.2%, +0.5%] Search 242 242 -0.0% [ -1.5%, +0.7%] Social1 17242 17203 +0.2% [ -0.1%, +0.4%] Social2 602 593 +1.4% [ +0.7%, +2.1%] Sports 22817 22874 -0.3% [ -0.5%, +0.0%] Video 25931 25969 -0.1% [ -0.4%, +0.1%] Geometric mean +0.1% [ -0.5%, +0.5%] We save a little bit of RAM, obviously, but not much. Fixed: 1211112 Fixed: 1220144 Change-Id: Ib7656de36d6a94d85ba25ecf60e9879b21c36468 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3341633 Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org> Commit-Queue: Steinar H Gunderson <sesse@chromium.org> Cr-Commit-Position: refs/heads/main@{#1116326} -- wpt-commits: c3ab769723cb249535a8845cc35af80975b8926d wpt-pr: 38905
121 lines
3.9 KiB
HTML
121 lines
3.9 KiB
HTML
<!doctype html>
|
|
<title>Serialization of consecutive tokens.</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
|
|
<meta name="author" title="Tab Atkins-Bittner">
|
|
<link rel=help href="https://drafts.csswg.org/css-syntax/#serialization">
|
|
<body>
|
|
<!--
|
|
The serialization chapter provides a table listing all the combinations of consecutive tokens that will,
|
|
if naively serialized next to each other,
|
|
produce a different set of tokens when re-parsed.
|
|
The spec requires that a comment must be inserted between such tokens in the serialization,
|
|
to ensure that they round-trip correctly.
|
|
-->
|
|
|
|
<script>
|
|
|
|
function testTokenPairs(t1, t2) {
|
|
const b = document.body;
|
|
test(()=>{
|
|
b.style.setProperty("--t1", t1);
|
|
b.style.setProperty("--t2", t2);
|
|
b.style.setProperty("--result", "var(--t1)var(--t2)");
|
|
const result = getComputedStyle(b).getPropertyValue("--result");
|
|
assert_equals(result.slice(0, t1.length), t1, `Result must start with ${t1}`);
|
|
assert_equals(result.slice(-t2.length), t2, `Result must end with ${t2}`);
|
|
assert_not_equals(result, t1+t2, `Result must have a comment between ${t1} and ${t2}`);
|
|
}, `Serialization of consecutive ${t1} and ${t2} tokens.`);
|
|
}
|
|
testTokenPairs("foo", "bar");
|
|
testTokenPairs("foo", "bar()");
|
|
testTokenPairs("foo", "url(bar)");
|
|
testTokenPairs("foo", "-");
|
|
testTokenPairs("foo", "123");
|
|
testTokenPairs("foo", "123%");
|
|
testTokenPairs("foo", "123em");
|
|
testTokenPairs("foo", "-->");
|
|
testTokenPairs("foo", "()");
|
|
|
|
testTokenPairs("@foo", "bar");
|
|
testTokenPairs("@foo", "bar()");
|
|
testTokenPairs("@foo", "url(bar)");
|
|
testTokenPairs("@foo", "-");
|
|
testTokenPairs("@foo", "123");
|
|
testTokenPairs("@foo", "123%");
|
|
testTokenPairs("@foo", "123em");
|
|
testTokenPairs("@foo", "-->");
|
|
|
|
testTokenPairs("#foo", "bar");
|
|
testTokenPairs("#foo", "bar()");
|
|
testTokenPairs("#foo", "url(bar)");
|
|
testTokenPairs("#foo", "-");
|
|
testTokenPairs("#foo", "123");
|
|
testTokenPairs("#foo", "123%");
|
|
testTokenPairs("#foo", "123em");
|
|
testTokenPairs("#foo", "-->");
|
|
|
|
testTokenPairs("123foo", "bar");
|
|
testTokenPairs("123foo", "bar()");
|
|
testTokenPairs("123foo", "url(bar)");
|
|
testTokenPairs("123foo", "-");
|
|
testTokenPairs("123foo", "123");
|
|
testTokenPairs("123foo", "123%");
|
|
testTokenPairs("123foo", "123em");
|
|
testTokenPairs("123foo", "-->");
|
|
|
|
testTokenPairs("#", "bar");
|
|
testTokenPairs("#", "bar()");
|
|
testTokenPairs("#", "url(bar)");
|
|
testTokenPairs("#", "-");
|
|
testTokenPairs("#", "123");
|
|
testTokenPairs("#", "123%");
|
|
testTokenPairs("#", "123em");
|
|
|
|
testTokenPairs("-", "bar");
|
|
testTokenPairs("-", "bar()");
|
|
testTokenPairs("-", "url(bar)");
|
|
testTokenPairs("-", "-");
|
|
testTokenPairs("-", "123");
|
|
testTokenPairs("-", "123%");
|
|
testTokenPairs("-", "123em");
|
|
|
|
testTokenPairs("123", "bar");
|
|
testTokenPairs("123", "bar()");
|
|
testTokenPairs("123", "url(bar)");
|
|
testTokenPairs("123", "123");
|
|
testTokenPairs("123", "123%");
|
|
testTokenPairs("123", "123em");
|
|
testTokenPairs("123", "%");
|
|
|
|
testTokenPairs("@", "bar");
|
|
testTokenPairs("@", "bar()");
|
|
testTokenPairs("@", "url(bar)");
|
|
testTokenPairs("@", "-");
|
|
|
|
testTokenPairs(".", "123");
|
|
testTokenPairs(".", "123%");
|
|
testTokenPairs(".", "123em");
|
|
|
|
testTokenPairs("+", "123");
|
|
testTokenPairs("+", "123%");
|
|
testTokenPairs("+", "123em");
|
|
|
|
testTokenPairs("/", "*");
|
|
|
|
// Test that interior comments are preserved, but exterior ones are not.
|
|
function testComments(text, t1, expected) {
|
|
const b = document.body;
|
|
test(()=>{
|
|
b.style.setProperty("--t1", t1);
|
|
b.style.setProperty("--result", text);
|
|
const result = getComputedStyle(b).getPropertyValue("--result");
|
|
assert_equals(result, expected);
|
|
}, `Comments are handled correctly when computing ${text} using t1:${t1}.`);
|
|
}
|
|
testComments("a/* comment */b", "", "a/* comment */b");
|
|
testComments("a/* comment */var(--t1)", "b", "a/**/b");
|
|
testComments("var(--t1)b", "a/* comment */", "a/**/b");
|
|
|
|
</script>
|