<html>
<script>

function runTest() {
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    select1.appendChild(inputParent);
    input1.autofocus = true;
    input1.setSelectionRange(1, 0);
    document.body.appendChild(input1);
    requestAnimationFrame(() => {
        frame1.contentWindow.scrollBy({left: 1, top: 0});
        if (window.testRunner)
            testRunner.notifyDone();
    });
}

</script>

<body onload=runTest()>
<iframe id="frame1"></iframe>
<div style="display: none" id="inputParent"><input id="input1"></div>
<select id="select1" onblur="inputParent.appendChild(frame1)"></select>
<p>Testcase passes if there is no crash </p>

</body>
</html>
