diff options
Diffstat (limited to 'testing/web-platform/tests/speculation-rules/prerender/restriction-window-move.html')
-rw-r--r-- | testing/web-platform/tests/speculation-rules/prerender/restriction-window-move.html | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/testing/web-platform/tests/speculation-rules/prerender/restriction-window-move.html b/testing/web-platform/tests/speculation-rules/prerender/restriction-window-move.html new file mode 100644 index 0000000000..232760db36 --- /dev/null +++ b/testing/web-platform/tests/speculation-rules/prerender/restriction-window-move.html @@ -0,0 +1,48 @@ +<!DOCTYPE html> +<meta name="timeout" content="long"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/utils.js"></script> +<script src="../resources/utils.js"></script> +<script src="resources/utils.js"></script> + +<body> +<script> +setup(() => assertSpeculationRulesIsSupported()); + +// moveTo and moveBy operations should be ignored. +// See https://github.com/jeremyroman/alternate-loading-modes/issues/73. +['moveTo', 'moveBy'].forEach(moveFunc => { + promise_test(async t => { + const uid = token(); + const bc = new PrerenderChannel('test-channel', uid); + t.add_cleanup(_ => bc.close()); + + const gotMessage = new Promise(resolve => { + bc.addEventListener('message', e => { + resolve(e.data); + }, {once: true}); + }); + + const url = `resources/window-move.html?move=${moveFunc}&uid=${uid}`; + + // We have to open a new window to run the test, since a window that was + // not created by window.open() cannot be moved. + window.open(url, '_blank', + `left=${window.screen.availLeft}, + top=${window.screen.availTop}, + width=${window.screen.availWidth / 2}, + height=${window.screen.availHeight / 2}, + noopener`); + + const result = await gotMessage; + assert_equals(result.status, 'PASS'); + assert_equals( + result.prevPosition.x, result.newPosition.x, + 'x position for prerendering'); + assert_equals( + result.prevPosition.y, result.newPosition.y, + 'y position for prerendering'); + }, `a prerendering page cannot move its window by executing ${moveFunc}.`); +}); +</script> |