168 lines
4.3 KiB
HTML
168 lines
4.3 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
|
"http://www.w3.org/TR/html4/strict.dtd">
|
|
<html>
|
|
<head>
|
|
<title>doh.robot keypress event tests</title>
|
|
|
|
<style>
|
|
@import "../../../util/doh/robot/robot.css";
|
|
</style>
|
|
|
|
<!-- required: dojo.js -->
|
|
<script type="text/javascript" src="../../../dojo/dojo.js"
|
|
djConfig="isDebug: true"></script>
|
|
|
|
<script type="text/javascript">
|
|
dojo.require("dojo.robotx");
|
|
|
|
var navigation = [
|
|
"BACKSPACE",
|
|
"TAB",
|
|
"ENTER",
|
|
"ESCAPE",
|
|
"PAGE_UP",
|
|
"PAGE_DOWN",
|
|
"END",
|
|
"HOME",
|
|
"LEFT_ARROW",
|
|
"UP_ARROW",
|
|
"RIGHT_ARROW",
|
|
"DOWN_ARROW"
|
|
|
|
/*
|
|
F1 to F10 are just too problematic to test; they have special meanings
|
|
on the browsers.
|
|
|
|
// "F1", // brings up help
|
|
"F2",
|
|
// "F3", // brings up search
|
|
// "F4", // address bar access on IE,
|
|
// "F5", // refreshes the page
|
|
// "F6", // address bar access on IE
|
|
// "F7", // affects "caret browsing" on FF
|
|
"F8",
|
|
"F9",
|
|
// "F10", // access File menu on IE
|
|
// "F11", // full screen mode
|
|
// "F12" // opens firebug console
|
|
*/
|
|
];
|
|
|
|
// Test a few normal keystrokes, but be careful about testing things
|
|
// that are entered using the SHIFT key as that produces two onkeypress
|
|
// events on IE (one for the SHIFT key and one for the character)
|
|
var printables = [" ", "n", "7"];
|
|
|
|
dojo.addOnLoad(function(){
|
|
doh.robot.initRobot('eventKeyPress.html');
|
|
|
|
var typer, // <input> that will receive keyboard events
|
|
events; // array of events on typer, populated by dojo.connect() in eventKeyPress.html
|
|
|
|
doh.register("setup", function(){
|
|
typer = dojo.byId("typer");
|
|
});
|
|
|
|
doh.register("navigation keys", dojo.map(navigation, function(code){
|
|
return {
|
|
name: code,
|
|
timeout: 1000,
|
|
runTest: function(){
|
|
var d = new doh.Deferred();
|
|
|
|
events = dojo.global.events = [];
|
|
typer.focus();
|
|
|
|
// Send the keystroke
|
|
doh.robot.keyPress(dojo.keys[code], 50, {});
|
|
|
|
doh.robot.sequence(d.getTestCallback(function(){
|
|
doh.is(1, events.length, "got (exactly) one onkeypress event");
|
|
doh.is(dojo.keys[code], events[0].charOrCode, "correct keycode");
|
|
}), 250);
|
|
|
|
return d;
|
|
}
|
|
};
|
|
}));
|
|
|
|
doh.register("normal keys", dojo.map(printables, function(c){
|
|
return {
|
|
name: "'" + c + "'",
|
|
timeout: 1000,
|
|
runTest: function(){
|
|
var d = new doh.Deferred();
|
|
|
|
events = dojo.global.events = [];
|
|
typer.focus();
|
|
|
|
// Send the keystroke
|
|
doh.robot.keyPress(c, 50, {});
|
|
|
|
doh.robot.sequence(d.getTestCallback(function(){
|
|
doh.is(1, events.length, "got (exactly) one onkeypress event");
|
|
doh.is(c, events[0].charOrCode, "correct char");
|
|
}), 250);
|
|
|
|
return d;
|
|
}
|
|
};
|
|
}));
|
|
|
|
/*
|
|
TODO: test ctrl-key combinations if/when #9511 is fixed.
|
|
106:42,
|
|
111:47,
|
|
186:59,
|
|
187:43,
|
|
188:44,
|
|
189:45,
|
|
190:46,
|
|
191:47,
|
|
192:96,
|
|
219:91,
|
|
220:92,
|
|
221:93,
|
|
222:39
|
|
*/
|
|
|
|
// Ctrl-alphabetic tests.
|
|
// Skip ctrl-o and ctrl-p which cause open and print dialogs on IE, even with the dojo.stopEvent()
|
|
doh.register("ctrl-alphabetic", dojo.map("abcdefghijklmnqrstuvwxyz", function(c){
|
|
return {
|
|
name: "ctrl-" + c,
|
|
timeout: 1000,
|
|
runTest: function(){
|
|
var d = new doh.Deferred();
|
|
|
|
typer.focus();
|
|
|
|
events = dojo.global.events = [];
|
|
|
|
// Send the keystroke
|
|
doh.robot.keyPress(c, 50, {ctrl: true});
|
|
|
|
doh.robot.sequence(d.getTestCallback(function(){
|
|
console.log("event is: ", events[0]);
|
|
doh.is(1, events.length, "got (exactly) one onkeypress event");
|
|
doh.is(c, events[0].charOrCode, "correct char");
|
|
doh.t(events[0].ctrlKey, "control key was pressed");
|
|
}), 250);
|
|
|
|
return d;
|
|
}
|
|
};
|
|
}));
|
|
|
|
/* TODO: test preventDefault() of up/down arrows */
|
|
|
|
/* TODO: ctrl-break, ctrl-enter */
|
|
|
|
/* TODO: Test preventDefault() (in eventKeyPress.html) stopping down arrow on <button> from scrolling page. */
|
|
|
|
doh.run();
|
|
});
|
|
</script>
|
|
</head>
|
|
</html>
|