Skip to content

Commit 94d4130

Browse files
committed
Firefox: don't dispatch keypress event if defaultPrevent() of the keydown event is called because KEY_FLAG_PREVENT_DEFAULT has no effect
1 parent 6477098 commit 94d4130

File tree

2 files changed

+21
-26
lines changed

2 files changed

+21
-26
lines changed

java/client/test/org/openqa/selenium/TypingTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,6 @@ public void testShouldNotTypeIntoElementsThatPreventKeyDownEvents() {
643643
@Test
644644
public void testGenerateKeyPressEventEvenWhenElementPreventsDefault() {
645645
assumeFalse(isFirefox(driver) && getFirefoxVersion(driver) < 25);
646-
assumeTrue(((HasCapabilities)driver).getCapabilities().is(CapabilityType.HAS_NATIVE_EVENTS));
647646
driver.get(pages.javascriptPage);
648647

649648
WebElement silent = driver.findElement(By.name("suppress"));

javascript/firefox-driver/js/utils.js

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -277,25 +277,25 @@ Utils.type = function(doc, element, text, opt_useNativeEvents, jsTimer, releaseM
277277
if (controlKey) {
278278
var kCode = Components.interfaces.nsIDOMKeyEvent.DOM_VK_CONTROL;
279279
Utils.keyEvent(doc, element, 'keyup', kCode, 0,
280-
controlKey = false, shiftKey, altKey, metaKey, false);
280+
controlKey = false, shiftKey, altKey, metaKey);
281281
}
282282

283283
if (shiftKey) {
284284
var kCode = Components.interfaces.nsIDOMKeyEvent.DOM_VK_SHIFT;
285285
Utils.keyEvent(doc, element, 'keyup', kCode, 0,
286-
controlKey, shiftKey = false, altKey, metaKey, false);
286+
controlKey, shiftKey = false, altKey, metaKey);
287287
}
288288

289289
if (altKey) {
290290
var kCode = Components.interfaces.nsIDOMKeyEvent.DOM_VK_ALT;
291291
Utils.keyEvent(doc, element, 'keyup', kCode, 0,
292-
controlKey, shiftKey, altKey = false, metaKey, false);
292+
controlKey, shiftKey, altKey = false, metaKey);
293293
}
294294

295295
if (metaKey) {
296296
var kCode = Components.interfaces.nsIDOMKeyEvent.DOM_VK_META;
297297
Utils.keyEvent(doc, element, 'keyup', kCode, 0,
298-
controlKey, shiftKey, altKey, metaKey = false, false);
298+
controlKey, shiftKey, altKey, metaKey = false);
299299
}
300300

301301
continue;
@@ -475,7 +475,7 @@ Utils.type = function(doc, element, text, opt_useNativeEvents, jsTimer, releaseM
475475

476476
if (modifierEvent) {
477477
Utils.keyEvent(doc, element, modifierEvent, keyCode, 0,
478-
controlKey, shiftKey, altKey, metaKey, false);
478+
controlKey, shiftKey, altKey, metaKey);
479479
continue;
480480
}
481481

@@ -489,7 +489,7 @@ Utils.type = function(doc, element, text, opt_useNativeEvents, jsTimer, releaseM
489489
if (needsShift && !shiftKey) {
490490
var kCode = Components.interfaces.nsIDOMKeyEvent.DOM_VK_SHIFT;
491491
Utils.keyEvent(doc, element, 'keydown', kCode, 0,
492-
controlKey, true, altKey, metaKey, false);
492+
controlKey, true, altKey, metaKey);
493493
Utils.shiftCount += 1;
494494
}
495495

@@ -509,7 +509,7 @@ Utils.type = function(doc, element, text, opt_useNativeEvents, jsTimer, releaseM
509509
var mapTo = '~!@#$%^&*()_+{}|:"<>?';
510510

511511
var value = String.fromCharCode(charCode).
512-
replace(/([\[\\\.])/g, '\\$1');
512+
replace(/([\[\\\.])/g, '\\$1');
513513
var index = mapFrom.search(value);
514514
if (index >= 0) {
515515
charCode = mapTo.charCodeAt(index);
@@ -519,21 +519,23 @@ Utils.type = function(doc, element, text, opt_useNativeEvents, jsTimer, releaseM
519519
}
520520

521521
var accepted =
522-
Utils.keyEvent(doc, element, 'keydown', keyCode, 0,
523-
controlKey, needsShift || shiftKey, altKey, metaKey, false);
522+
Utils.keyEvent(doc, element, 'keydown', keyCode, 0,
523+
controlKey, needsShift || shiftKey, altKey, metaKey);
524524

525-
Utils.keyEvent(doc, element, 'keypress', pressCode, charCode,
526-
controlKey, needsShift || shiftKey, altKey, metaKey, !accepted);
525+
if (accepted) {
526+
Utils.keyEvent(doc, element, 'keypress', pressCode, charCode,
527+
controlKey, needsShift || shiftKey, altKey, metaKey);
528+
}
527529

528530
Utils.keyEvent(doc, element, 'keyup', keyCode, 0,
529-
controlKey, needsShift || shiftKey, altKey, metaKey, false);
531+
controlKey, needsShift || shiftKey, altKey, metaKey);
530532

531533
// shift up if needed
532534

533535
if (needsShift && !shiftKey) {
534536
var kCode = Components.interfaces.nsIDOMKeyEvent.DOM_VK_SHIFT;
535537
Utils.keyEvent(doc, element, 'keyup', kCode, 0,
536-
controlKey, false, altKey, metaKey, false);
538+
controlKey, false, altKey, metaKey);
537539
}
538540
}
539541

@@ -542,25 +544,25 @@ Utils.type = function(doc, element, text, opt_useNativeEvents, jsTimer, releaseM
542544
if (controlKey && releaseModifiers) {
543545
var kCode = Components.interfaces.nsIDOMKeyEvent.DOM_VK_CONTROL;
544546
Utils.keyEvent(doc, element, 'keyup', kCode, 0,
545-
controlKey = false, shiftKey, altKey, metaKey, false);
547+
controlKey = false, shiftKey, altKey, metaKey);
546548
}
547549

548550
if (shiftKey && releaseModifiers) {
549551
var kCode = Components.interfaces.nsIDOMKeyEvent.DOM_VK_SHIFT;
550552
Utils.keyEvent(doc, element, 'keyup', kCode, 0,
551-
controlKey, shiftKey = false, altKey, metaKey, false);
553+
controlKey, shiftKey = false, altKey, metaKey);
552554
}
553555

554556
if (altKey && releaseModifiers) {
555557
var kCode = Components.interfaces.nsIDOMKeyEvent.DOM_VK_ALT;
556558
Utils.keyEvent(doc, element, 'keyup', kCode, 0,
557-
controlKey, shiftKey, altKey = false, metaKey, false);
559+
controlKey, shiftKey, altKey = false, metaKey);
558560
}
559561

560562
if (metaKey && releaseModifiers) {
561563
var kCode = Components.interfaces.nsIDOMKeyEvent.DOM_VK_META;
562564
Utils.keyEvent(doc, element, 'keyup', kCode, 0,
563-
controlKey, shiftKey, altKey, metaKey = false, false);
565+
controlKey, shiftKey, altKey, metaKey = false);
564566
}
565567

566568
if (opt_keysState) {
@@ -573,8 +575,7 @@ Utils.type = function(doc, element, text, opt_useNativeEvents, jsTimer, releaseM
573575

574576

575577
Utils.keyEvent = function(doc, element, type, keyCode, charCode,
576-
controlState, shiftState, altState, metaState,
577-
shouldPreventDefault) {
578+
controlState, shiftState, altState, metaState) {
578579
// Silently bail out if the element is no longer attached to the DOM.
579580
var isAttachedToDom = goog.dom.getAncestor(element, function(node) {
580581
return node === element.ownerDocument.documentElement;
@@ -602,12 +603,7 @@ Utils.keyEvent = function(doc, element, type, keyCode, charCode,
602603
modifiers += windowUtils.MODIFIER_META;
603604
}
604605

605-
var additionalFlags = 0;
606-
if (shouldPreventDefault) {
607-
additionalFlags += windowUtils.KEY_FLAG_PREVENT_DEFAULT;
608-
}
609-
610-
return windowUtils.sendKeyEvent(type, keyCode, charCode, modifiers, additionalFlags);
606+
return windowUtils.sendKeyEvent(type, keyCode, charCode, modifiers, 0);
611607
};
612608

613609

0 commit comments

Comments
 (0)