<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=930374 --> <head> <meta charset="utf-8"> <title>Test for Bug 930374</title> <script src="/tests/SimpleTest/SimpleTest.js"></script> <script src="/tests/SimpleTest/EventUtils.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> </head> <body> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=930374">Mozilla Bug 930374</a> <div id="display"> <input id="input-text"> </div> <div id="content" style="display: none"> </div> <pre id="test"> <script type="application/javascript"> SimpleTest.waitForExplicitFinish(); var gKeyPress = null; function onKeyPress(aEvent) { gKeyPress = aEvent; is(aEvent.target, document.getElementById("input-text"), "input element should have focus"); ok(!aEvent.defaultPrevented, "keypress event should be consumed before keypress event handler"); } function runTests() { document.addEventListener("keypress", onKeyPress); var input = document.getElementById("input-text"); input.focus(); input.addEventListener("input", function (aEvent) { ok(gKeyPress, "Test1: keypress event must be fired before an input event"); ok(!gKeyPress.defaultPrevented, "Test1: keypress event's defaultPrevented should be false even though it's consumed by the default action handler of editor"); gKeyPress.preventDefault(); ok(gKeyPress.defaultPrevented, "Test1: keypress event's defaultPrevented should become true because of a call of preventDefault()"); }, {once: true}); sendChar("a"); gKeyPress = null; input.addEventListener("input", function (aEvent) { ok(gKeyPress, "Test2: keypress event must be fired before an input event"); ok(!gKeyPress.defaultPrevented, "Test2: keypress event's defaultPrevented should be false even though it's consumed by the default action handler of editor"); setTimeout(function () { ok(!gKeyPress.defaultPrevented, "Test2: keypress event's defaultPrevented should not become true after event dispatching finished"); SimpleTest.finish(); }, 0); }, {once: true}); sendChar("b"); } SimpleTest.waitForFocus(runTests); </script> </pre> </body> </html>