blob: bc29ac0532b76aeeda333433c06223b49f0190c8 [file] [log] [blame] [edit]
<!DOCTYPE HTML> <!-- webkit-test-runner [ PointerLockEnabled=true ] -->
<html>
<head>
<script src="/js-test-resources/js-test.js"></script>
<script src="../resources/pointer-lock/pointer-lock-test-harness.js"></script>
</head>
<body>
<div>
<div id="target1"></div>
<iframe src="../resources/pointer-lock/inner-iframe.html" onload="doNextStepWithUserGesture()"></iframe>
</div>
<script>
description("Test iframe from same origin can not transfer pointer lock across documents.")
window.jsTestIsAsync = true;
window.testRunner?.setHasMouseDeviceForTesting(true);
targetDiv1 = document.getElementById("target1");
iframe = document.getElementsByTagName("iframe")[0];
todo = [
function () {
expectOnlyChangeEvent("Lock targetDiv1.");
targetDiv1.requestPointerLock();
// doNextStep called by event handler.
},
function () {
shouldBe("document.pointerLockElement", "targetDiv1");
doNextStep();
},
function () {
iframe.contentWindow.postMessage(["eval", 'document.body.requestPointerLock()?.catch(e => {})'], "*");
window.onmessage = function (messageEvent) {
message = messageEvent.data;
shouldBeEqualToString("message", "inner-iframe.html onpointerlockerror");
window.onmessage = null;
doNextStep();
}
},
function () {
iframe.contentWindow.postMessage(["eval", 'document.exitPointerLock()'], "*");
window.onmessage = function (messageEvent) {
testFailed("exitPointerLock from a document that doesn't have a lock caused an event " + messageEvent.data);
finishJSTest();
}
doNextStep();
},
];
// doNextStep() called by iframe onload handler.
</script>
</body>
</html>