Skip to content

Commit

Permalink
CSS: Shortest serialization for gap shorthand
Browse files Browse the repository at this point in the history
gap is <'row-gap'> <'column-gap'>?
https://drafts.csswg.org/css-align-3/#propdef-gap

If row-gap and column-gap are the same, we serialize
only a single value, consistent with Firefox and
the shortest representation principle.
https://drafts.csswg.org/cssom/#serializing-css-values

Change-Id: I8a2380d963cdbb7f33676b435d9cfb909abf9e77
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1750521
Auto-Submit: Eric Willigers <ericwilligers@chromium.org>
Commit-Queue: Rune Lillesveen <futhark@chromium.org>
Reviewed-by: Rune Lillesveen <futhark@chromium.org>
Cr-Commit-Position: refs/heads/master@{#686773}
  • Loading branch information
ericwilligers authored and chromium-wpt-export-bot committed Aug 14, 2019
1 parent 5690096 commit 55c6cc2
Show file tree
Hide file tree
Showing 6 changed files with 85 additions and 3 deletions.
2 changes: 1 addition & 1 deletion css/css-align/gaps/gap-animation-001.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
test(
function(){
var target = document.getElementById("target");
assert_equals(getComputedStyle(target).gap, "50px 50px");
assert_equals(getComputedStyle(target).gap, "50px");
assert_equals(getComputedStyle(target).rowGap, "50px");
assert_equals(getComputedStyle(target).columnGap, "50px");
}, "gap is interpolable");
Expand Down
2 changes: 1 addition & 1 deletion css/css-align/gaps/gap-animation-002.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
test(
function(){
var target = document.getElementById("target");
assert_equals(getComputedStyle(target).gap, "100px 100px");
assert_equals(getComputedStyle(target).gap, "100px");
assert_equals(getComputedStyle(target).rowGap, "100px");
assert_equals(getComputedStyle(target).columnGap, "100px");
}, "gap: normal is not interpolable");
Expand Down
2 changes: 1 addition & 1 deletion css/css-align/gaps/gap-animation-003.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
test(
function(){
var target = document.getElementById("target");
assert_equals(getComputedStyle(target).gap, "100px 100px");
assert_equals(getComputedStyle(target).gap, "100px");
assert_equals(getComputedStyle(target).rowGap, "100px");
assert_equals(getComputedStyle(target).columnGap, "100px");
}, "Default gap is not interpolable");
Expand Down
35 changes: 35 additions & 0 deletions css/css-align/parsing/gap-computed.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Box Alignment Level 3: getComputedStyle().gap</title>
<link rel="help" href="https://drafts.csswg.org/css-align-3/#propdef-gap">
<meta name="assert" content="gap computed value is a pair of keyword or <length-percentage> values.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/computed-testcommon.js"></script>
<style>
#target {
font-size: 40px;
}
</style>
</head>
<body>
<div id="target"></div>
<script>
test_computed_value("gap", "normal");
test_computed_value("gap", "10px");
test_computed_value("gap", "20%");
test_computed_value("gap", "calc(20% + 10px)");
test_computed_value("gap", "calc(-0.5em + 10px)", "0px");
test_computed_value("gap", "calc(0.5em + 10px)", "30px");

test_computed_value("gap", "normal 10px");
test_computed_value("gap", "10px 20%");
test_computed_value("gap", "20% calc(20% + 10px)");
test_computed_value("gap", "calc(20% + 10px) normal");

test_computed_value("gap", "calc(-0.5em + 10px) calc(0.5em + 10px)", "0px 30px");
</script>
</body>
</html>
21 changes: 21 additions & 0 deletions css/css-align/parsing/gap-invalid.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Box Alignment Level 3: parsing gap with invalid values</title>
<link rel="help" href="https://drafts.csswg.org/css-align-3/#propdef-gap">
<meta name="assert" content="gap supports only the grammar '<row-gap> <column-gap>?'.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
</head>
<body>
<script>
test_invalid_value("gap", "auto");
test_invalid_value("gap", "-10px");

test_invalid_value("gap", "10px 20% 30px");
test_invalid_value("gap", "normal 10px normal");
</script>
</body>
</html>
26 changes: 26 additions & 0 deletions css/css-align/parsing/gap-valid.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Box Alignment Level 3: parsing gap with valid values</title>
<link rel="help" href="https://drafts.csswg.org/css-align-3/#propdef-gap">
<meta name="assert" content="row-gap supports the full grammar '<row-gap> <column-gap>?'.">
<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("gap", "normal normal", "normal");
test_valid_value("gap", "10px 10px", "10px");
test_valid_value("gap", "20% 20%", "20%");
test_valid_value("gap", "calc(20% + 10px) calc(20% + 10px)", "calc(20% + 10px)");

test_valid_value("gap", "normal 10px");
test_valid_value("gap", "10px 20%");
test_valid_value("gap", "20% calc(20% + 10px)");
test_valid_value("gap", "calc(20% + 10px) 0px");
test_valid_value("gap", "0px normal");
</script>
</body>
</html>

0 comments on commit 55c6cc2

Please sign in to comment.