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