59 lines
2.0 KiB
HTML
59 lines
2.0 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;
|
|
var VK_SHIFT = 16;
|
|
var VK_CONTROL = 17;
|
|
var VK_MENU = 18;
|
|
|
|
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, expectedKeyCode, expectedLocation) {
|
|
eventSender.keyDown(evString, []);
|
|
shouldBe("lastKeyboardEvent.type", '"keydown"');
|
|
shouldEvaluateTo("lastKeyboardEvent.keyCode", expectedKeyCode);
|
|
shouldEvaluateTo("lastKeyboardEvent.location", expectedLocation);
|
|
}
|
|
|
|
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("leftShift", VK_SHIFT, "KeyboardEvent.DOM_KEY_LOCATION_LEFT");
|
|
testKeyEventWithLocation("leftControl", VK_CONTROL, "KeyboardEvent.DOM_KEY_LOCATION_LEFT");
|
|
testKeyEventWithLocation("leftAlt", VK_MENU, "KeyboardEvent.DOM_KEY_LOCATION_LEFT");
|
|
|
|
testKeyEventWithLocation("rightShift", VK_SHIFT, "KeyboardEvent.DOM_KEY_LOCATION_RIGHT");
|
|
testKeyEventWithLocation("rightControl", VK_CONTROL, "KeyboardEvent.DOM_KEY_LOCATION_RIGHT");
|
|
testKeyEventWithLocation("rightAlt", VK_MENU, "KeyboardEvent.DOM_KEY_LOCATION_RIGHT");
|
|
} else {
|
|
debug("This test requires DumpRenderTree.");
|
|
}
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|