forked from mirrors/gecko-dev
Automatic update from web-platform-tests [css-overflow] Update/add padding overflow tests. As per: https://github.com/w3c/csswg-drafts/issues/129 https://crbug.com/1245722 We've sucessfully shipped the logic to include padding in the scrollable overflow of elements. This patch updates the tests, and adds some new ones. Fixed: 1245722 Change-Id: I5f0fa14429da2d8f99efd95b071c6fc2e2c59855 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3561758 Reviewed-by: David Grogan <dgrogan@chromium.org> Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org> Cr-Commit-Position: refs/heads/main@{#996995} -- wpt-commits: c207c7528927fb4c7b2644588614dbac4ecb12f2 wpt-pr: 33833
113 lines
3.5 KiB
HTML
113 lines
3.5 KiB
HTML
<!doctype html>
|
|
<link rel="author" title="Aleks Totic" href="mailto:atotic@chromium.org">
|
|
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/129">
|
|
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1003373">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
|
<style>
|
|
.container {
|
|
--size: 100px;
|
|
--padding-size: 30px;
|
|
--too-big-size: calc(var(--size) - var(--padding-size) + 1px);
|
|
--just-right-size: calc(var(--size) - var(--padding-size));
|
|
overflow:auto;
|
|
width: var(--size);
|
|
height: var(--size);
|
|
padding-right: var(--padding-size);
|
|
padding-bottom: var(--padding-size);
|
|
background: #DDD;
|
|
box-sizing: border-box;
|
|
display: inline-block;
|
|
}
|
|
.big {
|
|
width: var(--too-big-size);
|
|
height: var(--too-big-size);
|
|
background: green;
|
|
}
|
|
.small {
|
|
width: var(--just-right-size);
|
|
height: var(--just-right-size);
|
|
background: yellow;
|
|
}
|
|
.bigfont {
|
|
font-size: var(--too-big-size);
|
|
font-family: Ahem;
|
|
line-height: 1;
|
|
color:green;
|
|
}
|
|
.smallfont {
|
|
font-size: var(--just-right-size);
|
|
font-family: Ahem;
|
|
line-height: 1;
|
|
color:yellow;
|
|
}
|
|
.red {
|
|
background:red;
|
|
}
|
|
|
|
</style>
|
|
<body onload="runTest()">
|
|
<p><span style="background:green">green</span> blocks get scrollbars, <span style="background:yellow">yellow</span> do not.</p>
|
|
<p>Block child gets block and inline padding.</p>
|
|
<div class="container" data-scrollbar="hv">
|
|
<div class="big"></div>
|
|
</div>
|
|
<div class="container" data-scrollbar="">
|
|
<div class="small"></div>
|
|
</div>
|
|
|
|
<p>Inline child gets block and inline padding.</p>
|
|
<div class="container bigfont" data-scrollbar="hv">
|
|
<span>X</span>
|
|
</div>
|
|
<div class="container" style="font:36px/1 Ahem;color:green" data-scrollbar="hv">
|
|
<span>XX</span><br>XX
|
|
</div>
|
|
<div class="container smallfont" data-scrollbar="">
|
|
<span>X</span>
|
|
</div>
|
|
|
|
<p>Inline block child gets block and inline padding.</p>
|
|
<div class="container" data-scrollbar="hv">
|
|
<div class="big" style="display:inline-block;vertical-align:bottom;"></div>
|
|
</div>
|
|
<div class="container" data-scrollbar="">
|
|
<div class="small" style="display:inline-block;vertical-align:bottom;"></div>
|
|
</div>
|
|
|
|
<p>Padding applies to linebox, not linebox overflow.</p>
|
|
<div class="container" data-scrollbar="">
|
|
<div class="small" style="display:inline-block;vertical-align:bottom">
|
|
<div style="height:90px;width:80px;background: rgba(0,0,255,0.3)"></div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
function hasHorizontalScrollbar(el) {
|
|
return (el.scrollWidth - el.offsetWidth) > 0;
|
|
}
|
|
function hasVerticalScrollbar(el) {
|
|
return (el.scrollHeight - el.offsetHeight) > 0;
|
|
}
|
|
// Tests needs to be run after load.
|
|
function runTest() {
|
|
test(()=> {
|
|
let i=0;
|
|
for (el of Array.from(document.querySelectorAll(".container"))) {
|
|
i++;
|
|
el.classList.toggle("red");
|
|
let expected = el.getAttribute("data-scrollbar");
|
|
if (expected.match(/h/))
|
|
assert_true(hasHorizontalScrollbar(el), `horizontal scrollbar ${i}`);
|
|
else
|
|
assert_false(hasHorizontalScrollbar(el), `horizontal scrollbar ${i}`);
|
|
if (expected.match(/v/))
|
|
assert_true(hasVerticalScrollbar(el), `vertical scrollbar ${i}`);
|
|
else
|
|
assert_false(hasVerticalScrollbar(el), `vertical scrollbar ${i}`);
|
|
el.classList.toggle("red");
|
|
}
|
|
}, "Container padding is applied approriately to block/inline children.");
|
|
}
|
|
</script>
|
|
</body>
|