Bug 1556957 [wpt PR 17183] - [LayoutNG] Fixed crash issue when LI + zero height checkbox, a=testonly

Automatic update from web-platform-tests
[LayoutNG] Fixed crash issue when LI + zero height checkbox

List marker would resolve the bfc block_offset, but it didn't continue
to resolve its parent's. So it's possible that the bfc block_offset of
LI isn't resolved after layout list marker which will cause crash issue.
This patch make LI resolve it after layout list marker.

Bug: 969741
Change-Id: I1e1f2500217c51f24cb2633002d9a78ca1088d6c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645135
Commit-Queue: cathie chen <cathiechen@igalia.com>
Reviewed-by: Ian Kilpatrick <ikilpatrick@chromium.org>
Reviewed-by: Morten Stenshorne <mstensho@chromium.org>
Reviewed-by: Koji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#672853}

--

wpt-commits: 296089d51afdc8ee3c0c905d89d3ddebf7633af8
wpt-pr: 17183
This commit is contained in:
Cathie Chen 2019-07-19 18:16:06 +00:00 коммит произвёл James Graham
Родитель e16dd0719d
Коммит 04049ffa73
3 изменённых файлов: 93 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,31 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: test the margin collapse of marker</title>
<link rel=help href="https://www.w3.org/TR/CSS22/generate.html#lists">
<link rel="help" href="http://crbug.com/969741">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<div id="target_with_marker" style="overflow:hidden; width:100px;">
<div style="margin-bottom:100px;"></div>
<div style="display:list-item; margin-left:100px; height:0px;"></div>
<div style="margin-top:100px;"></div>
</div>
<div id="target_without_marker" style="overflow:hidden; width:100px;">
<div style="margin-bottom:100px;"></div>
<div style="display:list-item; margin-left:100px; list-style:none;"></div>
<div style="margin-top:100px;"></div>
</div>
<script>
test(function() {
var height_with_marker = document.getElementById("target_with_marker").clientHeight;
assert_equals(height_with_marker, 200, "Should not allow margin-collapsing through if list is with marker.");
var height_without_marker = document.getElementById("target_without_marker").clientHeight;
assert_equals(height_without_marker, 100, "Should allow margin-collapsing through if list is without marker.");
}, "list and margin collapse");
</script>

Просмотреть файл

@ -0,0 +1,39 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: test the margin collapse of marker</title>
<link rel=help href="https://www.w3.org/TR/CSS22/generate.html#lists">
<link rel="help" href="http://crbug.com/969741">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style type="text/css">
.checkbox{
-moz-appearance: checkbox;
-webkit-appearance: checkbox;
height: 0px;
}
</style>
<div id="log"></div>
<div id="target_with_marker" style="overflow:hidden; width:100px;">
<div style="margin-bottom:100px;"></div>
<div style="display:list-item; margin-left:100px; height:0px;"><div class="checkbox"></div></div>
<div style="margin-top:100px;"></div>
</div>
<div id="target_without_marker" style="overflow:hidden; width:100px;">
<div style="margin-bottom:100px;"></div>
<div style="display:list-item; margin-left:100px; list-style:none;"><div class="checkbox"></div></div>
<div style="margin-top:100px;"></div>
</div>
<script>
test(function() {
var height_with_marker = document.getElementById("target_with_marker").clientHeight;
assert_equals(height_with_marker, 200, "Should not allow margin-collapsing through if list is with marker.");
var height_without_marker = document.getElementById("target_without_marker").clientHeight;
assert_equals(height_without_marker, 100, "Should allow margin-collapsing through if list is without marker.");
}, "list and margin collapse");
</script>

Просмотреть файл

@ -0,0 +1,23 @@
<!DOCTYPE html>
<title>Test if it doesn't crash when resolving BFC block-offset abort</title>
<link rel=help href="https://www.w3.org/TR/CSS22/generate.html#lists">
<link rel="help" href="http://crbug.com/969741">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style type="text/css">
#checkbox{
-moz-appearance: checkbox;
-webkit-appearance: checkbox;
height: 0px;
}
</style>
<body>
<div style="float: left; width: 100px; height: 100px;"></div>
<div style="display: list-item;">
<div id="checkbox"></div>
</div>
<script>
test(() => {}, "Layout should not crash");
</script>
</body>