mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-26 02:17:34 +09:00
moebius#195: DOM - PointerEvent - improvements
https://github.com/MoonchildProductions/moebius/pull/195
This commit is contained in:
parent
3d237024d5
commit
a968f1d6c2
10 changed files with 228 additions and 20 deletions
|
|
@ -6,6 +6,14 @@ support-files =
|
|||
pointerevent_styles.css
|
||||
pointerevent_support.js
|
||||
|
||||
[test_bug1285128.html]
|
||||
[test_bug1293174_implicit_pointer_capture_for_touch_1.html]
|
||||
support-files = bug1293174_implicit_pointer_capture_for_touch_1.html
|
||||
[test_bug1293174_implicit_pointer_capture_for_touch_2.html]
|
||||
support-files = bug1293174_implicit_pointer_capture_for_touch_2.html
|
||||
[test_bug1323158.html]
|
||||
[test_empty_file.html]
|
||||
disabled = disabled # Bug 1150091 - Issue with support-files
|
||||
[test_pointerevent_attributes_mouse-manual.html]
|
||||
support-files = pointerevent_attributes_mouse-manual.html
|
||||
[test_pointerevent_capture_mouse-manual.html]
|
||||
|
|
@ -143,11 +151,5 @@ support-files =
|
|||
pointerevent_touch-action-span-test_touch-manual.html
|
||||
pointerevent_touch-action-svg-test_touch-manual.html
|
||||
pointerevent_touch-action-table-test_touch-manual.html
|
||||
[test_bug1285128.html]
|
||||
[test_bug1293174_implicit_pointer_capture_for_touch_1.html]
|
||||
support-files = bug1293174_implicit_pointer_capture_for_touch_1.html
|
||||
[test_bug1293174_implicit_pointer_capture_for_touch_2.html]
|
||||
support-files = bug1293174_implicit_pointer_capture_for_touch_2.html
|
||||
[test_bug1323158.html]
|
||||
[test_empty_file.html]
|
||||
disabled = disabled # Bug 1150091 - Issue with support-files
|
||||
[test_trigger_fullscreen_by_pointer_events.html]
|
||||
[test_trigger_popup_by_pointer_events.html]
|
||||
|
|
|
|||
|
|
@ -0,0 +1,57 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for triggering Fullscreen by pointer events</title>
|
||||
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script src="/tests/SimpleTest/EventUtils.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
function startTest() {
|
||||
let win = window.open("data:text/html,<body><div id='target' style='width: 50px; height: 50px; background: green'></div></body>", "_blank");
|
||||
win.addEventListener("load", () => {
|
||||
let target = win.document.getElementById("target");
|
||||
target.addEventListener("pointerdown", () => {
|
||||
target.requestFullscreen();
|
||||
target.addEventListener("pointerdown", () => {
|
||||
win.document.exitFullscreen();
|
||||
}, {once: true});
|
||||
}, {once: true});
|
||||
|
||||
win.document.addEventListener("fullscreenchange", () => {
|
||||
if (win.document.fullscreenElement) {
|
||||
ok(win.document.fullscreenElement, target, "fullscreenElement should be the div element");
|
||||
// synthesize mouse events to generate pointer events and leave full screen.
|
||||
synthesizeMouseAtCenter(target, { type: "mousedown" }, win);
|
||||
synthesizeMouseAtCenter(target, { type: "mouseup" }, win);
|
||||
} else {
|
||||
win.close();
|
||||
SimpleTest.finish();
|
||||
}
|
||||
});
|
||||
// Make sure our window is focused before starting the test
|
||||
SimpleTest.waitForFocus(() => {
|
||||
// synthesize mouse events to generate pointer events and enter full screen.
|
||||
synthesizeMouseAtCenter(target, { type: "mousedown" }, win);
|
||||
synthesizeMouseAtCenter(target, { type: "mouseup" }, win);
|
||||
}, win);
|
||||
});
|
||||
}
|
||||
|
||||
SimpleTest.waitForFocus(() => {
|
||||
SpecialPowers.pushPrefEnv({
|
||||
"set": [
|
||||
["full-screen-api.unprefix.enabled", true],
|
||||
["full-screen-api.allow-trusted-requests-only", false],
|
||||
["dom.w3c_pointer_events.enabled", true]
|
||||
]
|
||||
}, startTest);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for triggering popup by pointer events</title>
|
||||
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script src="/tests/SimpleTest/EventUtils.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<div id="target" style="width: 50px; height: 50px; background: green"></div>
|
||||
<script>
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
function sendMouseEvent(element, eventName, listenEventName, handler) {
|
||||
element.addEventListener(listenEventName, handler, {once: true});
|
||||
synthesizeMouseAtCenter(element, {type: eventName});
|
||||
}
|
||||
|
||||
function checkAllowOpenPopup(e) {
|
||||
let w = window.open("about:blank");
|
||||
ok(w, "Should allow popup in the " + e.type + " listener");
|
||||
if (w) {
|
||||
w.close();
|
||||
}
|
||||
}
|
||||
|
||||
function checkBlockOpenPopup(e) {
|
||||
let w = window.open("about:blank");
|
||||
ok(!w, "Should block popup in the " + e.type + " listener");
|
||||
if (w) {
|
||||
w.close();
|
||||
}
|
||||
}
|
||||
|
||||
function startTest() {
|
||||
let target = document.getElementById("target");
|
||||
// By default, only allow opening popup in the pointerup listener.
|
||||
sendMouseEvent(target, "mousemove", "pointermove", checkBlockOpenPopup);
|
||||
sendMouseEvent(target, "mousedown", "pointerdown", checkBlockOpenPopup);
|
||||
sendMouseEvent(target, "mousemove", "pointermove", checkBlockOpenPopup);
|
||||
sendMouseEvent(target, "mouseup", "pointerup", checkAllowOpenPopup);
|
||||
SpecialPowers.pushPrefEnv({"set": [["dom.popup_allowed_events",
|
||||
"pointerdown pointerup"]]}, () => {
|
||||
// Adding pointerdown to preference should work
|
||||
sendMouseEvent(target, "mousemove", "pointermove", checkBlockOpenPopup);
|
||||
sendMouseEvent(target, "mousedown", "pointerdown", checkAllowOpenPopup);
|
||||
sendMouseEvent(target, "mousemove", "pointermove", checkBlockOpenPopup);
|
||||
sendMouseEvent(target, "mouseup", "pointerup", checkAllowOpenPopup);
|
||||
SpecialPowers.pushPrefEnv({"set": [["dom.popup_allowed_events",
|
||||
"pointerdown pointerup pointermove"]]}, () => {
|
||||
// Adding pointermove to preference should be no effect.
|
||||
sendMouseEvent(target, "mousemove", "pointermove", checkBlockOpenPopup);
|
||||
sendMouseEvent(target, "mousedown", "pointerdown", checkAllowOpenPopup);
|
||||
sendMouseEvent(target, "mousemove", "pointermove", checkBlockOpenPopup);
|
||||
sendMouseEvent(target, "mouseup", "pointerup", checkAllowOpenPopup);
|
||||
SimpleTest.finish();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
const DENY_ACTION = SpecialPowers.Ci.nsIPermissionManager.DENY_ACTION;
|
||||
|
||||
SimpleTest.waitForFocus(() => {
|
||||
SpecialPowers.pushPermissions([{'type': 'popup', 'allow': DENY_ACTION,
|
||||
'context': document}], () => {
|
||||
SpecialPowers.pushPrefEnv({
|
||||
"set": [["dom.w3c_pointer_events.enabled", true]]
|
||||
}, startTest);
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue