<!DOCTYPE HTML> <html> <!--https://bugzilla.mozilla.org/show_bug.cgi?id=633602--> <head> <title>Bug 633602</title> <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"> </script> <script type="application/javascript" 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="div"></div> <pre id="test"> <script type="text/javascript"> /* * Test for Bug 633602 * Escape key should unlock the pointer */ SimpleTest.waitForExplicitFinish(); var div = document.getElementById("div") , pointerUnLocked = false; function start() { addFullscreenChangeContinuation("enter", enteredFullscreen); div.requestFullscreen(); } function enteredFullscreen(e) { is(document.fullscreenElement, div, "Element #div should entered fullscreen"); ok(!document.pointerLockElement, "Pointer shouldn't have been locked"); document.addEventListener("pointerlockchange", lockedPointer); div.requestPointerLock(); } function lockedPointer(e) { document.removeEventListener("pointerlockchange", lockedPointer); is(document.pointerLockElement, div, "Pointer should have been locked on #div"); document.addEventListener("pointerlockchange", unlockedPointer); addFullscreenChangeContinuation("exit", leavedFullscreen); SimpleTest.executeSoon(() => synthesizeKey("VK_ESCAPE", {})); } var pointerUnlocked = false; var exitedFullscreen = false; function unlockedPointer() { document.removeEventListener("pointerlockchange", unlockedPointer); ok(!pointerUnlocked, "Shouldn't have unlocked pointer before"); ok(!document.pointerLockElement, "Pointer should have been unlocked now"); pointerUnlocked = true; finishTest(); } function leavedFullscreen() { ok(!exitedFullscreen, "Shouldn't have exited fullscreen before"); ok(!document.fullscreenElement, "Should have exited fullscreen now"); exitedFullscreen = true; finishTest(); } function finishTest() { if (pointerUnlocked && exitedFullscreen) { SimpleTest.finish(); } } </script> </pre> </body> </html>