Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<!DOCTYPE HTML>
<html>
<!--
-->
<head>
<meta charset="utf-8">
<title>Test for Bug 1295719</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>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<input id="test_number" type="number" value=50>
<input id="test_range" type="range" value=50 max=100 min=0>
<script type="text/javascript">
/** Test for Bug 1295719 **/
SimpleTest.waitForExplicitFinish();
SimpleTest.waitForFocus(runTests);
function runTests() {
let number = window.document.getElementById("test_number");
let range = window.document.getElementById("test_range");
let waiting_event_sequence = ["keydown", "input", "change"];
let waiting_event_idx = 0;
waiting_event_sequence.forEach((eventType) => {
number.addEventListener(eventType, (event) => {
let waiting_event = waiting_event_sequence[waiting_event_idx];
is(waiting_event, eventType, "Waiting " + waiting_event + " get " + eventType);
// Input element will fire input and change events when handling keypress
// with keycode=arrows. When user press and hold the keyboard, we expect
// that input element repeatedly fires "keydown"(, "keypress"), "input", and
// "change" events until user release the keyboard. Using
// waiting_event_sequence as a circular buffer and reset waiting_event_idx
// when it point to the end of buffer.
waiting_event_idx = waiting_event_idx == waiting_event_sequence.length -1 ? 0 : waiting_event_idx + 1;
});
range.addEventListener(eventType, (event) => {
let waiting_event = waiting_event_sequence[waiting_event_idx];
is(waiting_event, eventType, "Waiting " + waiting_event + " get " + eventType);
waiting_event_idx = waiting_event_idx == waiting_event_sequence.length - 1 ? 0 : waiting_event_idx + 1;
});
});
number.focus();
synthesizeKey("KEY_ArrowDown", {type: "keydown"});
synthesizeKey("KEY_ArrowDown", {type: "keydown"});
synthesizeKey("KEY_ArrowDown", {type: "keyup"});
number.blur();
range.focus();
waiting_event_idx = 0;
synthesizeKey("KEY_ArrowDown", {type: "keydown"});
synthesizeKey("KEY_ArrowDown", {type: "keydown"});
synthesizeKey("KEY_ArrowDown", {type: "keyup"});
SimpleTest.finish();
}
</script>
</body>
</html>