--- a/dom/tests/mochitest/pointerlock/file_screenClientXYConst.html
+++ b/dom/tests/mochitest/pointerlock/file_screenClientXYConst.html
@@ -25,16 +25,17 @@ https://bugzilla.mozilla.org/show_bug.cg
SimpleTest.waitForExplicitFinish();
SimpleTest.requestFlakyTimeout("We may need to wait for window's moving");
var div
, divRect
, unLockedCoords
, lockedCoords
+ , mouseMoveIntervalID
, isUnlocked = false
, isLocked = false;
function runTests () {
ok(isUnlocked, "Pointer should be unlocked");
ok(isLocked, "Pointer should be locked");
// Confirm that pointer coords are constant while locked
@@ -45,16 +46,17 @@ https://bugzilla.mozilla.org/show_bug.cg
is(unLockedCoords.screenX, lockedCoords.screenX,
"screenX should be equal to where the mouse was originaly locked");
is(unLockedCoords.screenY, lockedCoords.screenY,
"screenY should be equal to where the mouse was originaly locked");
}
function moveUnlocked(e) {
info("Got mousemove via moveUnlocked");
+ clearInterval(mouseMoveIntervalID);
var firstCall = !unLockedCoords;
if (!firstCall) {
todo(false, "mousemove is fired twice.");
}
unLockedCoords = {
screenX: e.screenX,
screenY: e.screenY,
@@ -67,16 +69,17 @@ https://bugzilla.mozilla.org/show_bug.cg
}
isUnlocked = !document.pointerLockElement;
div.requestPointerLock();
}
function moveLocked(e) {
info("Got mousemove via moveLocked");
+ clearInterval(mouseMoveIntervalID);
div.removeEventListener("mousemove", moveLocked);
isLocked = !!document.pointerLockElement;
lockedCoords = {
screenX: e.screenX,
screenY: e.screenY,
clientX: e.clientX,
clientY: e.clientY
@@ -91,31 +94,39 @@ https://bugzilla.mozilla.org/show_bug.cg
}
document.addEventListener("pointerlockchange", function (e) {
if (document.pointerLockElement === div) {
info("Got pointerlockchange for entering");
div.removeEventListener("mousemove", moveUnlocked);
div.addEventListener("mousemove", moveLocked);
divRect = div.getBoundingClientRect();
- synthesizeNativeMouseMove(div, (divRect.width / 4) * 3,
- (divRect.height / 4) * 3);
+ // Bug 1295815
+ // Retrigger synthesizeNativeMouseMove until it actually happens.
+ mouseMoveIntervalID = setInterval(() => {
+ synthesizeNativeMouseMove(div, (divRect.width / 4) * 3,
+ (divRect.height / 4) * 3);
+ }, 100);
} else {
info("Got pointerlockchange for exiting");
}
});
function start() {
div = document.getElementById("div");
info("Requesting fullscreen on parent");
addFullscreenChangeContinuation("enter", function() {
info("Got fullscreenchange for entering");
synthesizeNativeMouseMove(div, 0, 0, () => {
div.addEventListener("mousemove", moveUnlocked);
divRect = div.getBoundingClientRect();
- synthesizeNativeMouseMove(div, divRect.width / 2, divRect.height / 2);
+ // Bug 1295815
+ // Retrigger synthesizeNativeMouseMove until it actually happens.
+ mouseMoveIntervalID = setInterval(() => {
+ synthesizeNativeMouseMove(div, divRect.width / 2, divRect.height / 2);
+ }, 100);
});
});
div.requestFullscreen();
}
</script>
</body>
</html>