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