<!-- webkit-test-runner [ enablePageCache=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>
