<!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("positionStickyEnd").contentWindow.window.scrollTo(0, 150);

            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="positionStickyEnd" scrolling="yes" srcdoc="
            <body style='margin: 0; width: 200px; height: 300px'>
                <div style='height: 100px'></div>
                <div style='position: -webkit-sticky; position: sticky; left: 0px; top: 0px; width: 100px; height: 100px; background: green;'></div>
            </body>" onload="runTest()">
        </iframe>
    </div>
  </body>
</html>
