Skip to content

Commit

Permalink
EranMes: Use DomUtils to dispatch keyboard events.
Browse files Browse the repository at this point in the history
r18192
  • Loading branch information
eranmes committed Nov 26, 2012
1 parent f1d534c commit 54a71f7
Showing 1 changed file with 15 additions and 25 deletions.
40 changes: 15 additions & 25 deletions javascript/firefox-driver/js/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -599,33 +599,23 @@ Utils.keyEvent = function(doc, element, type, keyCode, charCode,
var preventDefault = shouldPreventDefault == undefined ? false
: shouldPreventDefault;

var keyboardEvent = doc.createEvent('KeyEvents');
var currentView = doc.defaultView;

keyboardEvent.initKeyEvent(
type, // in DOMString typeArg,
true, // in boolean canBubbleArg
true, // in boolean cancelableArg
currentView, // in nsIDOMAbstractView viewArg
controlState, // in boolean ctrlKeyArg
altState, // in boolean altKeyArg
shiftState, // in boolean shiftKeyArg
metaState, // in boolean metaKeyArg
keyCode, // in unsigned long keyCodeArg
charCode); // in unsigned long charCodeArg

if (preventDefault) {
keyboardEvent.preventDefault();
var modsMask = 0;
if (altState) {
modsMask = modsMask | 0x01;
}

if (bot.userAgent.isProductVersion(4)) {
var win = doc.defaultView;
var domUtil = win.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindowUtils);
return domUtil.dispatchDOMEventViaPresShell(element, keyboardEvent, true);
} else {
return element.dispatchEvent(keyboardEvent);
if (controlState) {
modsMask = modsMask | 0x02;
}
if (shiftState) {
modsMask = modsMask | 0x04;
}
if (metaState) {
modsMask = modsMask | 0x08;
}
var win = doc.defaultView;
var domUtil = win.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindowUtils);
return domUtil.sendKeyEvent(type, keyCode, charCode, modsMask, preventDefault);
};


Expand Down

0 comments on commit 54a71f7

Please sign in to comment.