blob: 9545af20a61e1025ce96ffea0ccb2f6775197407 [file] [edit]
<!DOCTYPE html><!-- webkit-test-runner [ IPCTestingAPIEnabled=true IgnoreInvalidMessageWhenIPCTestingAPIEnabled=true FullScreenEnabled=true ] -->
<html>
<body>
<pre id="log"></pre>
<script>
// BeganEnterFullScreen must reject a FrameIdentifier naming a frame in another page.
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
function log(s) { document.getElementById('log').textContent += s + '\n'; }
function done() { if (window.testRunner) testRunner.notifyDone(); }
function takeInvalidMessageString() {
let reply = IPC.sendSyncMessage('UI', 0, IPC.messages.WebProcessProxy_TakeInvalidMessageStringForTesting.name, 1000, []);
return reply && reply.arguments && reply.arguments[0] ? reply.arguments[0].value : '';
}
async function main() {
if (!window.IPC) {
log('PASS: BeganEnterFullScreen rejected a FrameIdentifier from another page');
return done();
}
let foreignWindow = window.open('resources/cross-page-target.html', '_blank');
await new Promise(resolve => setTimeout(resolve, 200));
let foreignFrameID;
try {
foreignFrameID = foreignWindow.IPC.frameID;
} catch (e) { }
if (!foreignFrameID) {
log('FAIL: could not obtain a FrameIdentifier from a second page');
return done();
}
takeInvalidMessageString(); // Clear any earlier error.
let rect = { type: 'IntRect', x: 0, y: 0, width: 100, height: 100 };
IPC.connectionForProcessTarget('UI').sendWithAsyncReply(IPC.pageID,
IPC.messages.WebFullScreenManagerProxy_BeganEnterFullScreen.name, [
{ type: 'FrameID', value: foreignFrameID },
rect,
rect,
], () => { });
let error = takeInvalidMessageString();
if (error.includes('Message check failed') && error.includes('isFrameInSendingProcess'))
log('PASS: BeganEnterFullScreen rejected a FrameIdentifier from another page');
else if (error)
log('FAIL: BeganEnterFullScreen rejected the message for an unexpected reason: ' + error);
else
log('FAIL: BeganEnterFullScreen accepted a FrameIdentifier from another page');
foreignWindow.close();
done();
}
window.onload = () => { main().catch(e => { log('FAIL: ' + e); done(); }); };
</script>
</body>
</html>