<!-- webkit-test-runner [ UsesBackForwardCache=true ] -->
<!DOCTYPE html>
<html>
<head>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

function runTest(e)
{
    if (e.persisted) {
        if (window.testRunner)
            testRunner.notifyDone();
    } else {
        // Navigate using a timeout to make sure we generate a history entry that we can go back to.
        setTimeout(() => { location.href = "data:text/html,<script>history.back()</" + "script>"; }, 0);
    }
}

window.onpageshow = runTest;
</script>
</head>
<body>
<div>PASS. You didn't crash.</div>
<object data="resources/subframe.html#dummy"  width="400" height="200" style="border: 1px solid black"></object>
</body>
</html>
