<html>
<script>

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

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

</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>
