62 lines
1.9 KiB
HTML
62 lines
1.9 KiB
HTML
<!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>
|