<!DOCTYPE html>
<html>
  <head>
    <title>Programmatic scrolling of iframe</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script>
        if (window.testRunner)
            testRunner.waitUntilDone();
        if (window.internals)
            internals.settings.setAsyncFrameScrollingEnabled(true);

        function runTest() {
            // This checks scrolling behavior for position "sticky".
            document.getElementById("positionStickyBegin").contentWindow.window.scrollTo(0, 50);

            if (window.testRunner)
                testRunner.notifyDone();
        }
     </script>
    <style>
        iframe {
            float: left;
            background: linear-gradient(135deg, red, orange);
            border: 0;
            height: 100px;
            width: 100px;
            overflow: none;
        }
    </style>
  </head>
  <body>
    <p>This test passes if you see a green square.</p>
    <div style="position: absolute; top: 3em; width: 100px; height: 100px; background: green;">
        <iframe id="positionStickyBegin" scrolling="yes" srcdoc="
            <body style='margin: 0; width: 200px; height: 300px'>
                <div style='height: 50px'></div>
                <div style='width: 100px; height: 50px; background: green;'></div>
                <div style='position: -webkit-sticky; position: sticky; left: 0px; top: 0px; width: 100px; height: 50px; background: green;'></div>
            </body>" onload="runTest()">
        </iframe>
    </div>
  </body>
</html>
