blob: c3a6cec64dba0fd700b67dd2ba34e03ce6b2e186 [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<p>This tests navigation while being restored from a page cache. WebKit should not hit any debug assertions.</p>
<div id="result">
<input id="input">
<button onclick="delete sessionStorage.testStage; runTest()">Start test</button>
</div>
<script>
if (window.testRunner) {
testRunner.overridePreference("WebKitUsesPageCachePreferenceKey", 1);
testRunner.clearBackForwardList();
testRunner.dumpAsText();
testRunner.waitUntilDone();
internals.clearPageCache();
}
sessionStorage.testStage = 'initial';
let persisted = false;
window.addEventListener("pageshow", () => {
switch (sessionStorage.testStage) {
case 'initial':
if (window.testRunner)
setTimeout(runTest, 0);
break;
case 'navigate':
location.href = 'resources/navigate-back-with-finish-test-stage.html';
break;
case 'finish':
document.getElementById('result').textContent = persisted ? 'PASS' : 'FAIL - Not put into the page cache';
delete sessionStorage.testStage;
if (window.testRunner)
testRunner.notifyDone();
break;
}
});
function runTest()
{
sessionStorage.testStage = 'navigate';
input.setAttribute('autofocus', '');
document.getElementById('input').addEventListener('focus', navigate);
persisted = true;
location.href = 'resources/page-cache-helper.html';
}
function navigate()
{
if (sessionStorage.testStage != 'navigate')
return;
location.href = 'resources/navigate-back-with-finish-test-stage.html';
document.getElementById('result').textContent = 'FAIL';
}
function finish() {
document.getElementById('result').textContent = 'PASS';
setTimeout(() => {
delete sessionStorage.testStage;
if (window.testRunner)
testRunner.notifyDone();
}, 0);
}
</script>
</body>
</html>