You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
4.1 KiB
167 lines
4.1 KiB
<!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>
|
|
|