<!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 only block padding.</p>
<div class="container" data-scrollbar="v">
  <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>
