blob: 21c79957bfe38da8287d253e767bab3e2c19ee43 [file] [log] [blame] [edit]
<!DOCTYPE HTML> <!-- webkit-test-runner [ PointerLockEnabled=true ] -->
<html>
<head>
<script src="../resources/js-test.js"></script>
<script src="../resources/ui-helper.js"></script>
<script src="../http/tests/resources/pointer-lock/pointer-lock-test-harness.js"></script>
</head>
<body>
<div>
<div id="target1"></div>
</div>
<script>
description("Test pointer lock unadjustedMovement option.")
window.jsTestIsAsync = true;
shouldBeDefined("window.testRunner");
window.testRunner?.setHasMouseDeviceForTesting(true);
targetDiv1 = document.getElementById("target1");
todo = [
// verify that requestPointerLock returns a promise
async () => {
window.internals.settings.setPointerLockOptionsEnabled(true);
debug(" requestPointerLock()")
const promise = targetDiv1.requestPointerLock();
shouldBeNonNull(promise);
try {
await promise;
debug(" Promise resolved.");
doNextStepWithUserGesture();
} catch (error) {
testFailed(` Promise rejected with ${error}`);
finishJSTest();
}
},
// verify that it is possible to change to unadjustedMovement
// or, if it isn't possible on this platform, that we get the correct error for that.
async () => {
debug(" requestPointerLock({unadjustedMovement: true})");
const promise = targetDiv1.requestPointerLock({unadjustedMovement: true});
shouldBeNonNull(promise);
try {
await promise;
debug(" unadjustedMovement is supported.");
} catch (error) {
// Not all platforms support unadjustedMovement
if (error instanceof DOMException && error.code == DOMException.NOT_SUPPORTED_ERR) {
debug(" unadjustedMovement is not supported.");
} else {
testFailed(` Promise rejected with unexpected error ${error}`);
}
}
doNextStep();
},
// remove pointer lock
() => {
expectOnlyChangeEvent("Unlock");
document.exitPointerLock();
},
// verify that requestPointerLock doesn't return a promise when PointerLockOptionsEnabled = false
() => {
window.internals.settings.setPointerLockOptionsEnabled(false);
expectOnlyChangeEvent("Lock with PointerLockOptionsEnabled = false");
const promise = targetDiv1.requestPointerLock();
shouldBeUndefined(promise);
},
// remove pointer lock again
() => {
expectOnlyChangeEvent("Unlock");
document.exitPointerLock();
},
];
(async () => {
window.testRunner?.focusWebView();
await UIHelper.setWindowIsKey(true);
doNextStepWithUserGesture();
})();
</script>
</body>
</html>