<!DOCTYPE HTML>
<html>
    <head>
        <style>
            #container {
                position: absolute;
                width: 400px;
                height: 400px;
                overflow: auto;
                scroll-snap-type: both mandatory;
                left: 0px;
                top: 0px;
                margin: 0;
                padding: 0;
            }

            ::-webkit-scrollbar {
                display: none;
            }

            .cell {
                width: 400px;
                height: 400px;
                margin: 0px;
                padding: 0px;
                position: absolute;
            }

            #top-left {
                scroll-snap-align: end;
            }

            #middle {
                scroll-snap-align: center;
            }

            #bottom-right {
                scroll-snap-align: start;
            }

            .green {
                background-color: green;
            }

            .red {
                background-color: red;
            }
        </style>
        <script src="../../resources/js-test.js"></script>
        <script>
        function run() {
            jsTestIsAsync = true;
            if (!window.testRunner || !window.internals) {
                debug(`To manually test, verify that scrolling in the container snaps so that each colored box can fill
                    the scroll container.`);
                return;
            }

            setTimeout(() => {
                debug(`The scroll offsets are: ${internals.scrollSnapOffsets(container)}`);
                finishJSTest();
            }, 0);
        }
        </script>
    </head>
    <body onload=run()>
        <div id="container">
            <div style="top: 0px; left: 0px;" class="cell green" id="top-left"></div>
            <div style="top: 0px; left: 400px;" class="cell red"></div>
            <div style="top: 0px; left: 800px;" class="cell green"></div><br/>
            <div style="top: 400px; left: 0px;" class="cell red"></div>
            <div style="top: 400px; left: 400px;" class="cell green" id="middle"></div>
            <div style="top: 400px; left: 800px;" class="cell red"></div><br/>
            <div style="top: 800px; left: 0px;" class="cell green"></div>
            <div style="top: 800px; left: 400px;" class="cell red"></div>
            <div style="top: 800px; left: 800px;" class="cell green" id="bottom-right"></div>
        </div>
        <div id="output"></div>
    </body>
</html>
