<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;
    }

    setTimeout(function () { 
        var scrollPosition = document.scrollingElement.scrollTop;
        var result = document.getElementById("result");
        if (scrollPosition == 100)
            result.innerHTML = "Success! The scroll position was restored after navigation."
        if (window.testRunner)
            testRunner.notifyDone();
    }, 0);
}

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