<!DOCTYPE html>
<html>
<title>CSS Flexbox: Height with overflow: auto.</title>
<link href="support/flexbox.css" rel="stylesheet">
<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#flex-direction-property">
<link rel="help" href="https://www.w3.org/TR/css-overflow-4/#classic-scrollbars">
<meta name="assert" content="This test ensures that flexbox with 'flex-direction: row|row-reverse' and a flex item child with 'overflow: auto' has the proper height."/>
<style>
.flexbox {
    border: 5px solid green;
    position: relative;
    width: 50px;
}

.inline-flexbox {
    border: 5px solid green;
    position: relative;
    height: 50px;
}

.overflow {
    border: 1px solid red;
    overflow: auto;
    min-width: 0;
    min-height: 0;
}

.vertical {
    writing-mode: vertical-rl;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<body onload="checkLayout('.flexbox, .inline-flexbox')">
<div id=log></div>
<div class="flexbox to-be-checked" check-height check-accounts-scrollbar>
  <div class="overflow"><div style="width: 100px; height: 20px"></div></div>
</div>

<div class="flexbox row-reverse to-be-checked" check-height check-accounts-scrollbar>
  <div class="overflow"><div style="width: 100px; height: 20px"></div></div>
</div>

<div class="flexbox to-be-checked" check-height check-accounts-scrollbar>
  <div class="overflow align-self-baseline"><div style="width: 100px; height: 20px"></div></div>
</div>

<div class="flexbox row-reverse to-be-checked" check-height check-accounts-scrollbar>
  <div class="overflow align-self-baseline"><div style="width: 100px; height: 20px"></div></div>
</div>

<div class="flexbox vertical to-be-checked" check-height>
  <div class="overflow align-self-baseline"><div style="width: 100px; height: 20px"></div></div>
</div>

<div class="flexbox row-reverse vertical to-be-checked" check-height>
  <div class="overflow align-self-baseline"><div style="width: 100px; height: 20px"></div></div>
</div>

<div class="inline-flexbox column vertical to-be-checked" check-width check-accounts-scrollbar>
  <div class="overflow"><div style="width: 20px; height: 100px"></div></div>
</div>

<div class="inline-flexbox column-reverse vertical to-be-checked" check-width check-accounts-scrollbar>
  <div class="overflow"><div style="width: 20px; height: 100px"></div></div>
</div>

<div class="inline-flexbox column vertical to-be-checked" check-width>
  <div class="overflow align-self-baseline"><div style="width: 20px; height: 100px"></div></div>
</div>

<div class="inline-flexbox column-reverse vertical to-be-checked" check-width>
  <div class="overflow align-self-baseline"><div style="width: 20px; height: 100px"></div></div>
</div>

<!-- This div is only for measuring scrollbar size -->
<div id="measure" style="height: 100px; width: 100px; display: inline-block; overflow: auto;">
  <div style="min-height: 300px;"></div>
</div>

<script>
  var measure = document.getElementById('measure');
  var scrollbarSize = measure.offsetWidth - measure.clientWidth;

  var nodes = document.getElementsByClassName("to-be-checked");
  for (var i = 0; i < nodes.length; i++) {
    var node = nodes[i];

    // Here, the things contributing height are:
    //
    // (a) each innermost div contributes an explicit height: 20px value.
    // (b) the .overflow div contributes 2px of border (1px top + bottom),
    //     plus the height of its scrollbar from overflow:auto.
    // (c) the .flexbox div contributes 10px of border (5px top + bottom).
    //
    // So, the total height is 20px + 2px + 10px + scrollbarHeight,
    // which simplifies to 32px + scrollbarHeight.
    //
    // Analogously, the same logic applies for nodes where width is tested.
    var size =  32;
    if (node.hasAttribute("check-height")) {
      var height = node.hasAttribute("check-accounts-scrollbar") ? scrollbarSize : 0;
      node.setAttribute("data-expected-height", size + height);
    } else {
      var width = node.hasAttribute("check-accounts-scrollbar") ? scrollbarSize : 0;
      node.setAttribute("data-expected-width", size + width);
    }
  }
</script>
</body>
</html>
