| <!DOCTYPE html> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="utils.js"></script> | |
| <script> | |
| const params = new URLSearchParams(location.search); | |
| // The main test page (restriction-window-move.html) loads the | |
| // initiator page, then the initiator page will prerender itself with the | |
| // `prerendering` parameter. | |
| const isPrerendering = params.has('prerendering'); | |
| function tryRun(func) { | |
| try { | |
| func(); | |
| } catch (e) { | |
| const testChannel = new PrerenderChannel('test-channel'); | |
| testChannel.postMessage({status: 'FAIL: ' + e}); | |
| } | |
| } | |
| if (!isPrerendering) { | |
| // Ensure that the primary page can move this window. | |
| tryRun(() => { | |
| const expectedPosition = {x: screen.availLeft + 1, y: screen.availTop + 1}; | |
| window.moveTo(expectedPosition.x, expectedPosition.y); | |
| assert_equals(window.screenX, expectedPosition.x, 'x position for primary'); | |
| assert_equals(window.screenY, expectedPosition.y, 'y position for primary'); | |
| }); | |
| // Start prerendering a page which tries to move this window. | |
| loadInitiatorPage(); | |
| } else { | |
| const prevPosition = {x: window.screenX, y: window.screenY}; | |
| tryRun( | |
| () => { | |
| // Try to move this window, and should not succeed. | |
| const moveToOrMoveBy = params.get('move'); | |
| switch (moveToOrMoveBy) { | |
| case 'moveTo': | |
| window.moveTo(screen.availLeft + 10, screen.availTop + 10); | |
| break; | |
| case 'moveBy': | |
| window.moveBy(screen.availLeft + 10 - window.screenX, | |
| screen.availTop + 10 - window.screenY); | |
| break; | |
| default: | |
| assert_unreached(`wrong parameter: ${moveToOrMoveBy}`); | |
| } | |
| } | |
| ); | |
| const bc = new PrerenderChannel('test-channel'); | |
| bc.postMessage({ | |
| 'status': 'PASS', | |
| 'prevPosition': prevPosition, | |
| 'newPosition': {x: window.screenX, y: window.screenY} | |
| }); | |
| bc.close(); | |
| } | |
| </script> |