<!DOCTYPE html>
<html>
<head>
<style>
.test-row {
    display: flex;
    margin-bottom: 5px;
}
.test-row > div {
    flex: none;
}

.container {
    margin-right: 5px;
    border: 5px solid lightgreen;
    width: 100px;
}

.flexbox {
    display: block;
    height: 100px;
    width: 100px;
    overflow: auto;
}

.flexbox > div {
    width: 200px;
    height: 200px;
    background: -webkit-radial-gradient(center, ellipse cover, rgba(30,87,153,1) 0%,rgba(89,148,202,1) 62%,rgba(95,154,207,0.7) 68%,rgba(125,185,232,0) 100%);
}
</style>
</head>
<body>
    <p>Scrollbars should work in all the flexboxes.</p>
</body>
<script>
// The -almost values are cases where we don't scroll all the way because of
// https://bugs.webkit.org/show_bug.cgi?id=76129 .
var results = [
    'left top', 'left top', 'right top', 'left bottom',
    'right-almost top', 'right-almost top', 'right-almost bottom', 'left top',
    'left top', 'left top', 'left bottom', 'right top'];

var testContents = '';
for (var i = 0; i < results.length; ++i) {
    if (!(i % 4))
        testContents += "<div class='test-row'>";

    var containerClass = 'container ' + results[i];
    testContents +=
        "<div class='" + containerClass + "'>" +
        "<div class='flexbox'>" +
        "<div></div>" +
        "</div>" +
        "</div>";
    if (i % 4 == 3)
        testContents += "</div>";
}

document.body.innerHTML += testContents;

Array.prototype.forEach.call(document.querySelectorAll(".right"), function(element) {
    element.firstChild.scrollLeft = 1000;
});

Array.prototype.forEach.call(document.querySelectorAll(".bottom"), function(element) {
    element.firstChild.scrollTop = 1000;
});

Array.prototype.forEach.call(document.querySelectorAll(".right-almost"), function(element) {
    element.firstChild.scrollLeft = element.firstChild.scrollWidth - element.firstChild.offsetWidth;
});

Array.prototype.forEach.call(document.querySelectorAll(".bottom-almost"), function(element) {
    element.firstChild.scrollTop = element.firstChild.scrollHeight - element.firstChild.offsetHeight;
});

</script>
</body>
</html>
