71 lines
3.4 KiB
HTML
71 lines
3.4 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
description("This tests keyboard events with KeyLocationCode argument.");
|
|
|
|
var lastKeyboardEvent;
|
|
|
|
function recordKeyEvent(ev) {
|
|
ev = ev || event;
|
|
ev.keyCode = (ev.which || ev.keyCode);
|
|
if (window.eventSender) {
|
|
lastKeyboardEvent = ev;
|
|
} else {
|
|
debug('Type=' + ev.type + ',' +
|
|
'keyCode=' + ev.keyCode + ',' +
|
|
'ctrlKey=' + ev.ctrlKey + ',' +
|
|
'shiftKey=' + ev.shiftKey + ',' +
|
|
'altKey=' + ev.altKey + ',' +
|
|
'metaKey=' + ev.metaKey + ',' +
|
|
'location=' + ev.location);
|
|
}
|
|
}
|
|
|
|
function testKeyEventWithLocation(evString, evLocation, expectedKeyCode) {
|
|
eventSender.keyDown(evString, [], eval(evLocation));
|
|
shouldBe("lastKeyboardEvent.type", '"keydown"');
|
|
shouldEvaluateTo("lastKeyboardEvent.keyCode", expectedKeyCode);
|
|
shouldEvaluateTo("lastKeyboardEvent.location", evLocation);
|
|
}
|
|
|
|
var textarea = document.createElement("textarea");
|
|
textarea.addEventListener("keydown", recordKeyEvent, false);
|
|
document.body.insertBefore(textarea, document.body.firstChild);
|
|
textarea.focus();
|
|
|
|
if (window.eventSender) {
|
|
// location=0 indicates that we send events as standard keys.
|
|
testKeyEventWithLocation("pageUp", "KeyboardEvent.DOM_KEY_LOCATION_STANDARD", 33);
|
|
testKeyEventWithLocation("pageDown", "KeyboardEvent.DOM_KEY_LOCATION_STANDARD", 34);
|
|
testKeyEventWithLocation("home", "KeyboardEvent.DOM_KEY_LOCATION_STANDARD", 36);
|
|
testKeyEventWithLocation("end", "KeyboardEvent.DOM_KEY_LOCATION_STANDARD", 35);
|
|
testKeyEventWithLocation("leftArrow", "KeyboardEvent.DOM_KEY_LOCATION_STANDARD", 37);
|
|
testKeyEventWithLocation("rightArrow", "KeyboardEvent.DOM_KEY_LOCATION_STANDARD", 39);
|
|
testKeyEventWithLocation("upArrow", "KeyboardEvent.DOM_KEY_LOCATION_STANDARD", 38);
|
|
testKeyEventWithLocation("downArrow", "KeyboardEvent.DOM_KEY_LOCATION_STANDARD", 40);
|
|
testKeyEventWithLocation("insert", "KeyboardEvent.DOM_KEY_LOCATION_STANDARD", 45);
|
|
testKeyEventWithLocation("delete", "KeyboardEvent.DOM_KEY_LOCATION_STANDARD", 46);
|
|
|
|
// location=3 indicates that we send events as numeric-pad keys.
|
|
testKeyEventWithLocation("pageUp", "KeyboardEvent.DOM_KEY_LOCATION_NUMPAD", 33);
|
|
testKeyEventWithLocation("pageDown", "KeyboardEvent.DOM_KEY_LOCATION_NUMPAD", 34);
|
|
testKeyEventWithLocation("home", "KeyboardEvent.DOM_KEY_LOCATION_NUMPAD", 36);
|
|
testKeyEventWithLocation("end", "KeyboardEvent.DOM_KEY_LOCATION_NUMPAD", 35);
|
|
testKeyEventWithLocation("leftArrow", "KeyboardEvent.DOM_KEY_LOCATION_NUMPAD", 37);
|
|
testKeyEventWithLocation("rightArrow", "KeyboardEvent.DOM_KEY_LOCATION_NUMPAD", 39);
|
|
testKeyEventWithLocation("upArrow", "KeyboardEvent.DOM_KEY_LOCATION_NUMPAD", 38);
|
|
testKeyEventWithLocation("downArrow", "KeyboardEvent.DOM_KEY_LOCATION_NUMPAD", 40);
|
|
testKeyEventWithLocation("insert", "KeyboardEvent.DOM_KEY_LOCATION_NUMPAD", 45);
|
|
testKeyEventWithLocation("delete", "KeyboardEvent.DOM_KEY_LOCATION_NUMPAD", 46);
|
|
} else {
|
|
debug("This test requires DumpRenderTree. To manually test, 1) focus on the textarea above and push numpad keys without locking NumLock and 2) see if the location= value is KeyboardEvent.DOM_KEY_LOCATION_NUMPAD (specified in DOM level 3).");
|
|
}
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|