<html>
<head>
<script>

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

        history.pushState({ }, "", window.location + "#1");
        setTimeout(function() {
            window.location.href = 'data:text/html, \
                <html style="height: 200%"> \
                <body onunload=""> \
                <script> \
                    document.body.offsetWidth; \
                    setTimeout("window.history.back();", 0); \
                <' + '/script> \
                </body> \
                </html> \
            ';
        }, 0);
        return;
    }

    setTimeout(function () { 
        var result = document.getElementById("result");
        result.innerHTML = "Success if the web process did not crash."
        if (window.testRunner)
            testRunner.notifyDone();
    }, 0);
}

</script>
</head>
<body onpageshow="navigate();">
    <div id="result">Test did not complete</div>
</body>
</htmL>
