<!-- webkit-test-runner [ enableBackForwardCache=true ] -->
<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<body>
<img src="../dom/resources/abe.png">
<a id="testLink" style="display: none" href="resources/page-cache-helper.html">Link</a>
<iframe id="testFrame" src="about:blank"></iframe>
<script>
description('Tests that a page with an iframe that ran a JavaScript URL is able to enter the page cache.');
jsTestIsAsync = true;

window.addEventListener("pageshow", function(event) {
    debug("pageshow - " + (event.persisted ? "" : "not ") + "from cache");
    if (event.persisted) {
        debug("PASS - Page did enter and was restored from the page cache");
        finishJSTest();
    }
});

window.addEventListener("pagehide", function(event) {
    debug("pagehide - " + (event.persisted ? "" : "not ") + "entering cache");
    if (!event.persisted) {
        debug("FAIL - Page did not enter the page cache.");
        finishJSTest();
    }
});

window.addEventListener('load', function() {
    setTimeout(() => {
        document.getElementById("testFrame").contentWindow.location.replace("javascript:'foo';");
        setTimeout(() => {
            testLink.click();
        }, 0);
    }, 0);
});
</script>
</body>
</html>
