74 lines
1.9 KiB
HTML
74 lines
1.9 KiB
HTML
<!-- webkit-test-runner [ UsesBackForwardCache=true ] -->
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<p>This tests that pageshow event is fired before the focus elements are reset when a document in the page cache is restored.</p>
|
|
<div id="result"></div>
|
|
<script>
|
|
|
|
if (window.testRunner) {
|
|
testRunner.dumpAsText();
|
|
testRunner.waitUntilDone();
|
|
testRunner.setCanOpenWindows();
|
|
}
|
|
|
|
let newWindow;
|
|
function start() {
|
|
result.textContent = 'Running...';
|
|
newWindow = window.open(URL.createObjectURL(newPage));
|
|
}
|
|
|
|
const newPage = new Blob([`<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<p>hello, this is a test.</p>
|
|
<form autocomplete="off"><output id="output"></output></form>
|
|
<script>
|
|
output.value = 'foo';
|
|
onload = () => opener.postMessage({step: 'opened'}, '*');
|
|
onmessage = () => {
|
|
let pageShowed = false;
|
|
document.addEventListener('DOMSubtreeModified', () => opener.postMessage({step: 'check', pageShowed}, '*'), {once: true});
|
|
window.addEventListener('pageshow', () => pageShowed = true);
|
|
opener.postMessage({step: 'ready'}, '*');
|
|
}
|
|
</scr` + `ipt>
|
|
</body>
|
|
</html>`], {'type': 'text/html'});
|
|
|
|
const secondPage = new Blob([`<!DOCTYPE html>
|
|
<html>
|
|
<body onload="opener.postMessage({step: 'navigated'}, '*')">
|
|
<p>second page.</p>
|
|
</body>
|
|
</html>`], {'type': 'text/html'});
|
|
|
|
onmessage = (event) => {
|
|
switch (event.data.step) {
|
|
case 'opened':
|
|
newWindow.postMessage('getready', '*');
|
|
break;
|
|
case 'ready':
|
|
newWindow.location = URL.createObjectURL(secondPage);
|
|
break;
|
|
case 'navigated':
|
|
newWindow.history.back();
|
|
break;
|
|
case 'check':
|
|
result.textContent = event.data.pageShowed ? 'PASS' : 'FAIL';
|
|
newWindow.close();
|
|
if (window.testRunner)
|
|
testRunner.notifyDone();
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (window.testRunner)
|
|
start();
|
|
else
|
|
document.write('<button onclick="start()">Start</button>');
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|