| <!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> |