<!-- webkit-test-runner [ UsesBackForwardCache=true ] -->
<!DOCTYPE html>
<html>
<head>
<script src="/js-test-resources/js-test.js"></script>
</head>
<body>
<script>
description('Tests that a page with a MediaKeySession goes into the back/forward cache.');
jsTestIsAsync = true;

window.addEventListener("pageshow", function(event) {
    debug("pageshow - " + (event.persisted ? "" : "not ") + "from cache");
    if (event.persisted) {
        testPassed("Page was restored from back/forward cache");
        finishJSTest();
    }
});

window.addEventListener("pagehide", function(event) {
    debug("pagehide - " + (event.persisted ? "" : "not ") + "entering cache");
    if (!event.persisted) {
        testFailed("Page failed to enter the back/forward cache");
        finishJSTest();
    }
});

onload = () => {
    mediaKeys = new WebKitMediaKeys('org.w3c.clearkey');
    session = mediaKeys.createSession('application/x-mpegurl', new Uint8Array(1));
    shouldBeTrue("!!session");
    setTimeout(() => {
        testLink.click();
    }, 0);
}
</script>
<a id="testLink" href="resources/page-cache-helper.html" style="display: none">Link</a>
</body>
</html>
