diff options
Diffstat (limited to 'widget/tests/test_AltGr_key_events_in_web_content_on_windows.html')
-rw-r--r-- | widget/tests/test_AltGr_key_events_in_web_content_on_windows.html | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/widget/tests/test_AltGr_key_events_in_web_content_on_windows.html b/widget/tests/test_AltGr_key_events_in_web_content_on_windows.html new file mode 100644 index 0000000000..ff89f8fdad --- /dev/null +++ b/widget/tests/test_AltGr_key_events_in_web_content_on_windows.html @@ -0,0 +1,106 @@ +<!DOCTYPE html> +<html> +<head> + <title>Testing if AltGr keydown and keyup events are fired in web content on Windows</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <script src="/tests/SimpleTest/EventUtils.js"></script> + <script src="/tests/SimpleTest/NativeKeyCodes.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"> +</head> +<body> +<div id="display"> + <input id="input"> +</div> +<div id="content" style="display: none"> +</div> +<pre id="test"> +</pre> + +<script class="testbody" type="application/javascript"> +SimpleTest.waitForExplicitFinish(); + +function checkEvent(aEvent, aExpectedEvents, aDescription) { + if (!aExpectedEvents.length) { + ok(false, `${aDescription}: no more expected events ` + + `(type: ${aEvent.type}, code: ${aEvent.code}, key: ${aEvent.key}, keyCode: ${aEvent.keyCode}`); + } + let expectedEvent = aExpectedEvents.shift(); + for (let property in expectedEvent) { + is(aEvent[property], expectedEvent[property], `${aDescription}: ${property}`); + } +} + +async function runAltGrKeyTest() { + return new Promise(resolve => { + let target = document.getElementById("input"); + target.focus(); + + let events = [ + { type: "keydown", code: "ControlLeft", key: "Control", keyCode: KeyboardEvent.DOM_VK_CONTROL }, + { type: "keydown", code: "AltRight", key: "AltGraph", keyCode: KeyboardEvent.DOM_VK_ALT }, + { type: "keyup", code: "ControlLeft", key: "Control", keyCode: KeyboardEvent.DOM_VK_CONTROL }, + { type: "keyup", code: "AltRight", key: "AltGraph", keyCode: KeyboardEvent.DOM_VK_ALT }, + ]; + function handleEvent(aEvent) { + checkEvent(aEvent, events, "runAltGrKeyTest"); + if (aEvent.type === "keyup" && aEvent.code === "AltRight") { + is(events.length, 0, "runAltGrKeyTest: all expected events are fired"); + SimpleTest.executeSoon(() => { + target.removeEventListener("keydown", handleEvent); + target.removeEventListener("keypress", handleEvent); + target.removeEventListener("keyup", handleEvent); + resolve(); + }); + } + } + target.addEventListener("keydown", handleEvent); + target.addEventListener("keypress", handleEvent); + target.addEventListener("keyup", handleEvent); + + synthesizeNativeKey(KEYBOARD_LAYOUT_SPANISH, WIN_VK_RMENU, {}, + "", ""); + }); +} + +async function runEmulatingAltGrKeyTest() { + return new Promise(resolve => { + let target = document.getElementById("input"); + target.focus(); + + let events = [ + { type: "keydown", code: "ControlLeft", key: "Control", keyCode: KeyboardEvent.DOM_VK_CONTROL }, + { type: "keydown", code: "AltLeft", key: "Alt", keyCode: KeyboardEvent.DOM_VK_ALT }, + { type: "keyup", code: "AltLeft", key: "Alt", keyCode: KeyboardEvent.DOM_VK_ALT }, + { type: "keyup", code: "ControlLeft", key: "Control", keyCode: KeyboardEvent.DOM_VK_CONTROL }, + ]; + function handleEvent(aEvent) { + checkEvent(aEvent, events, "runEmulatingAltGrKeyTest"); + if (aEvent.type === "keyup" && aEvent.code === "ControlLeft") { + is(events.length, 0, "runAltGrKeyTest: all expected events are fired"); + SimpleTest.executeSoon(() => { + target.removeEventListener("keydown", handleEvent); + target.removeEventListener("keypress", handleEvent); + target.removeEventListener("keyup", handleEvent); + resolve(); + }); + } + } + target.addEventListener("keydown", handleEvent); + target.addEventListener("keypress", handleEvent); + target.addEventListener("keyup", handleEvent); + + synthesizeNativeKey(KEYBOARD_LAYOUT_SPANISH, WIN_VK_LMENU, { ctrlKey: true }, + "", ""); + }); +} + +async function runTests() { + await runAltGrKeyTest(); + await runEmulatingAltGrKeyTest(); + SimpleTest.finish(); +} + +SimpleTest.waitForFocus(runTests); +</script> +</body> +</html>
\ No newline at end of file |