<!DOCTYPE html>
<script>
if (window.internals) {
    internals.settings.setCSSStickyPositionEnabled(true);
}           
</script>

<html>
<head>
<style>
    .group {
        display: inline-block;
        position: relative;
        width: 150px;
        height: 500px;
    }

    #overflow {
        width: 600px;
        height: 400px;
        overflow: hidden; /* Still scrollable with JS */
        padding: 20px;
        border: 1px solid black;
    }

    .spacer {
        float: left;
        width: 10px;
        height: 1200px;
    }
    .container {
        width: 100px;
        height: 300px;
        outline: 2px solid black;
    }

    .box {
        width: 100px;
        height: 150px;
    }

    .sticky {
        position: sticky;
        bottom: 0px;
        background-color: green;
    }

    .indicator {
        position: absolute;
        top: 0;
        left: 0;
        background-color: red;
    }
</style>
<script>
    function doTest()
    {
        document.getElementById('overflow').scrollTop = 100;
    }
    window.addEventListener('load', doTest, false);
</script>
</head>
<body>
    <div id="overflow">
        <div class="spacer"></div>
        <div class="group" style="top: 350px">
            <div class="indicator box" style="top: 0px;"></div>
            <div class="container">
                <div class="box"></div>
                <div class="sticky box"></div>
            </div>
        </div>

        <div class="group" style="top: 250px">
            <div class="indicator box" style="top: 100px;"></div>
            <div class="container">
                <div class="box"></div>
                <div class="sticky box"></div>
            </div>
        </div>

        <div class="group" style="top: 200px">
            <div class="indicator box" style="top: 150px;"></div>
            <div class="container">
                <div class="box"></div>
                <div class="sticky box"></div>
            </div>
        </div>
    </div>
    <div style="position: absolute; top: 500px;">
    This test checks that sticky positioned blocks positioned correctly in overflow with padding.
    There should be no red.
    </div>
</body>
</html>
