<!DOCTYPE html>
<html>
<style>
body {
    margin: 0;
}
.flexbox {
    width: 600px;
    display: flex;
    background-color: #aaa;
    position: relative;
}
.flexbox div {
    height: 20px;
    border: 0;
    flex: none;
}

.flexbox :nth-child(1) {
    background-color: blue;
}
.flexbox :nth-child(2) {
    background-color: green;
}
.flexbox :nth-child(3) {
    background-color: red;
}
</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')">
<div id=log></div>
<div class="flexbox">
  <div data-expected-width="100" data-offset-x="0" style="flex: 1 0 0; max-width: 100px;"></div>
  <div data-expected-width="100" data-offset-x="100" style="width: 100px;"></div>
  <div data-expected-width="100" data-offset-x="200" style="width: 100px;"></div>
</div>

<div class="flexbox" style="justify-content: flex-end">
  <div data-expected-width="100" data-offset-x="300" style="flex: 0 0 100px;"></div>
  <div data-expected-width="100" data-offset-x="400" style="width: 100px;"></div>
  <div data-expected-width="100" data-offset-x="500" style="width: 100px;"></div>
</div>

<div class="flexbox" style="justify-content: center">
  <div data-expected-width="100" data-offset-x="150" style="flex: 1 0 0; max-width: 100px;"></div>
  <div data-expected-width="100" data-offset-x="250" style="width: 100px;"></div>
  <div data-expected-width="100" data-offset-x="350" style="width: 100px;"></div>
</div>

<div class="flexbox" style="justify-content: center">
  <div data-expected-width="200" data-offset-x="0" style="flex: 1 100px;"></div>
  <div data-expected-width="200" data-offset-x="200" style="flex: 1 100px;"></div>
  <div data-expected-width="200" data-offset-x="400" style="flex: 1 100px;"></div>
</div>

<!-- True centering on overflow. -->
<div class="flexbox" style="justify-content: center">
  <div data-expected-width="800" data-offset-x="-100" style="width: 800px;"></div>
</div>

<div class="flexbox" style="justify-content: space-between">
  <div data-expected-width="100" data-offset-x="0" style="flex: 1 0 0; max-width: 100px;"></div>
  <div data-expected-width="100" data-offset-x="250" style="width: 100px;"></div>
  <div data-expected-width="100" data-offset-x="500" style="width: 100px;"></div>
</div>

<div class="flexbox" style="justify-content: space-between">
  <div data-expected-width="200" data-offset-x="0" style="flex: 1 100px;"></div>
  <div data-expected-width="200" data-offset-x="200" style="flex: 1 100px;"></div>
  <div data-expected-width="200" data-offset-x="400" style="flex: 1 100px;"></div>
</div>

<!-- If there's only one child, we justify-content: flex-start. -->
<div class="flexbox" style="justify-content: space-between">
  <div data-expected-width="100" data-offset-x="0" style="flex: 1 0 0; max-width: 100px;"></div>
</div>

<div class="flexbox" style="justify-content: space-around">
  <div data-expected-width="100" data-offset-x="50" style="flex: 1 0 0; max-width: 100px;"></div>
  <div data-expected-width="100" data-offset-x="250" style="width: 100px;"></div>
  <div data-expected-width="100" data-offset-x="450" style="width: 100px;"></div>
</div>

<!-- If there's only one child, we justify-content center. -->
<div class="flexbox" style="justify-content: space-around">
  <div data-expected-width="100" data-offset-x="250" style="flex: 1 0 0; max-width: 100px;"></div>
</div>

<!-- True centering on overflow. -->
<div class="flexbox" style="justify-content: space-around">
  <div data-expected-width="800" data-offset-x="-100" style="width: 800px;"></div>
</div>

<!-- Make sure we don't crash with no children. -->
<div class="flexbox" style="justify-content: space-around"></div>

<div class="flexbox" style="justify-content: space-evenly">
  <div data-expected-width="100" data-offset-x="75" style="flex: 1 0 0; max-width: 100px;"></div>
  <div data-expected-width="100" data-offset-x="250" style="width: 100px;"></div>
  <div data-expected-width="100" data-offset-x="425" style="width: 100px;"></div>
</div>

<div class="flexbox" style="justify-content: space-evenly">
  <div data-expected-width="200" data-offset-x="0" style="flex: 1 100px;"></div>
  <div data-expected-width="200" data-offset-x="200" style="flex: 1 100px;"></div>
  <div data-expected-width="200" data-offset-x="400" style="flex: 1 100px;"></div>
</div>

<!-- If there's only one child, we justify-content: center. -->
<div class="flexbox" style="justify-content: space-evenly">
  <div data-expected-width="100" data-offset-x="250" style="flex: 1 0 0; max-width: 100px;"></div>
</div>

<!-- True centering on overflow. -->
<div class="flexbox" style="justify-content: space-evenly">
  <div data-expected-width="800" data-offset-x="-100" style="width: 800px;"></div>
</div>

<!-- Make sure we don't crash with no children. -->
<div class="flexbox" style="justify-content: space-evenly"></div>

<!-- margin:auto applies before justify-content. -->
<div class="flexbox" style="justify-content: flex-end">
  <div data-expected-width="100" data-offset-x="0" style="width: 100px;"></div>
  <div data-expected-width="100" data-offset-x="100" style="width: 100px; margin-right: auto"></div>
  <div data-expected-width="100" data-offset-x="500" style="width: 100px;"></div>
</div>

<!-- The justify-content does nothing here because we are shrinking. -->
<div class="flexbox" style="justify-content: flex-end">
  <div data-expected-width="200" data-offset-x="0" style="flex: 0 1 300px;"></div>
  <div data-expected-width="200" data-offset-x="200" style="width: 200px;"></div>
  <div data-expected-width="200" data-offset-x="400" style="width: 200px;"></div>
</div>

<!-- We overflow the flexbox (no negative flexing) and align the end. The overflow is to the left. -->
<div class="flexbox" style="justify-content: flex-end">
  <div data-expected-width="300" data-offset-x="-100" style="flex: 1 0 300px;"></div>
  <div data-expected-width="200" data-offset-x="200" style="width: 200px;"></div>
  <div data-expected-width="200" data-offset-x="400" style="width: 200px;"></div>
</div>

</body>
</html>
