diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /dom/tests/mochitest/pointerlock/file_pointerlock-api-with-shadow.html | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/tests/mochitest/pointerlock/file_pointerlock-api-with-shadow.html')
-rw-r--r-- | dom/tests/mochitest/pointerlock/file_pointerlock-api-with-shadow.html | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/dom/tests/mochitest/pointerlock/file_pointerlock-api-with-shadow.html b/dom/tests/mochitest/pointerlock/file_pointerlock-api-with-shadow.html new file mode 100644 index 0000000000..a9c2d525de --- /dev/null +++ b/dom/tests/mochitest/pointerlock/file_pointerlock-api-with-shadow.html @@ -0,0 +1,110 @@ +<!DOCTYPE HTML> +<html> +<!--https://bugzilla.mozilla.org/show_bug.cgi?id=633602--> +<head> + <title>Bug 633602</title> + <script src="/tests/SimpleTest/EventUtils.js"> + </script> + <script src="/tests/SimpleTest/SimpleTest.js"> + </script> + <script type="application/javascript" src="pointerlock_utils.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> +</head> +<body> + <a target="_blank" + href="https://bugzilla.mozilla.org/show_bug.cgi?id=633602"> + Mozilla Bug 633602 + </a> + <div id="host"></div> + <pre id="test"> + <script type="text/javascript"> + /* + * Test for Bug 1430303 + * Make sure DOM API is correct. + */ + + SimpleTest.waitForExplicitFinish(); + + var div, + host, + hasRequestPointerLock = false, + pointerLockChangeEventFired = false, + pointerUnlocked = false, + pointerLocked = false, + hasExitPointerLock = false, + pointerLockElement = false, + hasMovementX = false, + hasMovementY = false; + gotContextMenuEvent = false; + + function runTests () { + ok(hasRequestPointerLock, "Element should have requestPointerLock."); + ok(pointerLockChangeEventFired, "pointerlockchange event should fire."); + ok(pointerUnlocked, "Should be able to unlock pointer locked element."); + ok(pointerLocked, "Requested element should be able to lock."); + ok(hasExitPointerLock, "Document should have exitPointerLock"); + ok(pointerLockElement, "Document should keep track of correct pointer locked element"); + ok(hasMovementX, "Mouse Event should have movementX."); + ok(hasMovementY, "Mouse Event should have movementY."); + ok(!gotContextMenuEvent, "Shouldn't have got a contextmenu event."); + } + + function mouseMoveHandler(e) { + info("Got mousemove"); + document.removeEventListener("mousemove", mouseMoveHandler); + + hasMovementX = "movementX" in e; + hasMovementY = "movementY" in e; + + hasExitPointerLock = "exitPointerLock" in document; + document.exitPointerLock(); + } + + document.addEventListener("pointerlockchange", function (e) { + pointerLockChangeEventFired = true; + + if (document.pointerLockElement) { + info("Got pointerlockchange for entering"); + pointerLocked = true; + pointerLockElement = document.pointerLockElement === host; + is(host.shadowRoot.firstChild, host.shadowRoot.pointerLockElement, + "ShadowRoot's pointerLockElement shouldn't be retargeted."); + + window.addEventListener("contextmenu", + function() { gotContextMenuEvent = true; }, + true); + synthesizeMouse(document.body, 4, 4, + { type: "contextmenu", button: 2 }, + window); + + document.addEventListener("mousemove", mouseMoveHandler); + synthesizeMouseAtCenter(host, {type: "mousemove"}, window); + } else { + info("Got pointerlockchange for exiting"); + pointerUnlocked = true; + addFullscreenChangeContinuation("exit", function() { + info("Got fullscreenchange for exiting"); + runTests(); + SimpleTest.finish(); + }); + document.exitFullscreen(); + } + }); + + function start() { + host = document.getElementById("host"); + var sr = host.attachShadow({mode: "open"}); + sr.innerHTML = "<div><div>"; + div = sr.firstChild; + info("Requesting fullscreen on parent"); + addFullscreenChangeContinuation("enter", function() { + info("Got fullscreenchange for entering"); + hasRequestPointerLock = "requestPointerLock" in div; + div.requestPointerLock(); + }); + host.requestFullscreen(); + } + </script> + </pre> +</body> +</html> |