<html>
<head>
<script>

function navigate()
{
    if (location.hash == "") {
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }

        scrollTo(0,100);
        history.pushState({ }, "", window.location + "#1");
        setTimeout("window.location.href = 'resources/empty-document-goes-back.html'", 0);
        return;
    }
    var input = document.getElementById("text-input");
    input.focus();
    if (window.eventSender)
        eventSender.keyDown("a");

    setTimeout(function () { 
        var scrollPosition = document.scrollingElement.scrollTop;
        var result = document.getElementById("result");
        if (scrollPosition != 100)
            result.innerHTML = "Success! The scroll position in history was not restored after navigation as input field is revealed on selection."
        if (window.testRunner)
            testRunner.notifyDone();
    }, 0);
}

</script>
</head>
<body style="width:800px" onpageshow="navigate();">
    <input id="text-input" type="text"/>
    <div id="result">Fail. The scroll position in history was restored after navigation.</div><br/><br/>
    <div style="width:600; height:1200; background-color:purple;"></div>
</body>
</htmL>
