Files
firefox/testing/web-platform/tests/pointerlock/pointerlock_fullscreen-manual.html
Sam SneddonandJan-Ivar Bruaroey be45cf8650 Bug 1659864 [wpt PR 25086] - Replace ===/!== in assert_true/false, a=testonly
Automatic update from web-platform-tests
Replace assert_true(x === y) with assert_equals

--
Replace assert_false(x === y) with assert_not_equals

--
Replace assert_true(x !== y) with assert_not_equals

--
Replace assert_true(x == y) with assert_equals

--
Replace assert_false(x == y) with assert_not_equals

--
Replace assert_true(x != y) with assert_not_equals

--
Fix actual/expected argument order

Co-authored-by: Jan-Ivar Bruaroey <[email protected]>

--

wpt-commits: e2ddf48b78209d0aef4fa513b53a9f28243c9335, d80a3bccd7b88a7810522c6a1e317a53b0daad57, 54ee81d1501b46e990bc1a1cde162949f7d0ba71, d4beec831b7484382a25bca41b1449b68c235d0a, 278cf9fd6cfb113fd72dc5186534db239cde9e29, e1f3c83b5abc4d122e92db3c390aa8c9b8b4b792, 3cabe516b8e1234ccafd4f5e8aef7f9663b2f53f
wpt-pr: 25086
2020-09-25 19:29:25 +00:00

174 lines
6.2 KiB
HTML

<!DOCTYPE html>
<html>
<body>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<meta name='flags' content='interact'>
<style type="text/css">
button {
color: blue;
}
#test-element-wrap {
position: relative;
background-color: lightgrey;
width: 400px;
height: 200px;
border: grey 1px solid;
}
#test-element {
position: relative;
background-color: lightyellow;
width: 100px;
height: 30px;
border: yellow 1px solid;
}
#status-log {
margin: 10px 0;
color: green;
}
</style>
</head>
<body>
<h2>Description</h2>
<p>This test validates that pointer lock won't be exited when fullscreen is entered or exited, unless fullscreen is exited with the same user gesture as pointer lock.</p>
<hr/>
<h2>Manual Test Steps:</h2>
<p>
<ol>
<li>Click the "scriptExitFullscreen" button.</li>
<li>If the exitFullscreen doesn't work, use the menu (or any other interaction except for the "esc" key) to exit fullscreen.</li>
<li>First test case done.</li>
<li>Click the "gestureExitFullscreen" button.</li>
<li>Use the "esc" key to exit fullscreen.</li>
<li>Second test case done.</li>
</ol>
</p>
<hr/>
<button onclick="scriptExitFullscreen();">scriptExitFullscreen</button>
<button onclick="gestureExitFullscreen();">gestureExitFullscreen</button>
<div id="test-element-wrap">
<div id="status-log">Waiting... Please click the "scriptExitFullscreen" button.</div>
<div id="test-element">Target</div>
</div>
<hr/>
<div id="log"></div>
<script type="text/javascript" >
var test_element = document.querySelector('#test-element'),
test_element_wrap = document.querySelector('#test-element-wrap')
status_log = document.querySelector('#status-log');
var enable_gestureExitFullscreen = false;
var gestureExit_pl = false;
var gestureExit_fs = false;
var gestureLock = false;
var scriptExitFullscreenTest = async_test("Test that pointer lock won't be exited when fullscreen is entered or exited with script.");
var gestureExitFullscreenTest = async_test("Test that pointer lock is exited when fullscreen is entered or exited with the same user gesture.");
function RequestFullscreen(element) {
var requestFullscreen = element.requestFullscreen || element.webkitRequestFullscreen || element.mozRequestFullscreen || element.msRequestFullscreen;
requestFullscreen.call(element);
}
function ExitFullscreen() {
var exitFullscreen = document.exitFullscreen || document.webkitExitFullscreen || document.mozExitFullscreen || document.msExitFullscreen;
exitFullscreen.call(document);
}
function FullscreenElement() {
var fullscreenElement = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullscreenElement || document.msFullscreenElement;
return fullscreenElement ? fullscreenElement : null;
}
document.addEventListener("pointerlockchange", function() {
if(!enable_gestureExitFullscreen) {
// first test, enable fullscreen and pointer lock
if(document.pointerLockElement) {
ExitFullscreen();
logStatus();
scriptExitFullscreenTest.step(function() {
assert_true(FullscreenElement() === null, "fullscreen is sucessfully exited");
assert_equals(document.pointerLockElement, test_element, "pointer is still locked at the target element");
});
scriptExitFullscreenTest.done();
document.exitPointerLock();
} else{
// first test, fullscreen and pointer lock are exited
enable_gestureExitFullscreen = true;
}
} else {
gestureLock = true;
if(!document.pointerLockElement) {
// second test, pointer lock exited
gestureExit_pl = true;
if(gestureExit_fs) {
// second test, fullscreen and pointer lock both exited
gestureExitFullscreenTest.step(function() {
assert_equals(document.pointerLockElement, null, "pointer is sucessfully exited");
assert_true(FullscreenElement() === null, "fullscreen is sucessfully exited");
});
gestureExitFullscreenTest.done();
}
}
}
});
document.addEventListener("fullscreenchange", fullscreenChangeHandler);
document.addEventListener("webkitfullscreenchange",fullscreenChangeHandler);
function fullscreenChangeHandler() {
if(enable_gestureExitFullscreen && gestureLock && !FullscreenElement()) {
if(gestureExit_pl) {
// second test, fullscreen and pointer lock both exited
gestureExitFullscreenTest.step(function() {
assert_equals(document.pointerLockElement, null, "pointer is sucessfully exited");
assert_true(FullscreenElement() === null, "fullscreen is sucessfully exited");
});
gestureExitFullscreenTest.done();
} else {
gestureExit_fs = true;
}
}
}
function logStatus() {
var status = "";
if(document.pointerLockElement) {
status = "<p>Pointer is Locked.</p>"
} else {
status = "<p>Pointer Lock exited.</p>"
}
if(FullscreenElement()) {
status += "<p>Fullscreen is on now.</p>"
} else {
status += "<p>Fullscreen exited.</p>"
}
status_log.innerHTML = status;
}
function scriptExitFullscreen() {
test_element.requestPointerLock();
RequestFullscreen(test_element_wrap);
}
function gestureExitFullscreen() {
RequestFullscreen(test_element_wrap);
test_element.requestPointerLock();
}
</script>
</body>
</html>