Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!doctype html>
<html>
<head>
<title>Not dispatching DOM "text" event on web apps</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script src="/tests/SimpleTest/EventUtils.js"></script>
<link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<input id="input">
<textarea id="textarea"></textarea>
<div contenteditable id="editor"><p><br></p></div>
<script>
SimpleTest.waitForExplicitFinish();
SimpleTest.waitForFocus(function doTests() {
for (let editorId of ["input", "textarea", "editor"]) {
let editor = document.getElementById(editorId);
editor.focus();
let fired = false;
function onText() {
fired = true;
}
editor.addEventListener("text", onText);
fired = false;
synthesizeCompositionChange({
composition: {string: "abc",
clauses: [{length: 3, attr: COMPOSITION_ATTR_RAW_CLAUSE}]},
caret: {start: 3, length: 0},
});
ok(!fired, `Starting composition shouldn't fire DOM "text" event in ${editorId}`);
fired = false;
synthesizeComposition({type: "compositioncommitasis", key: {key: "KEY_Enter"}});
ok(!fired, `Committing composition with the latest string shouldn't fire DOM "text" event in ${editorId}`);
fired = false;
synthesizeCompositionChange({
composition: {string: "def",
clauses: [{length: 3, attr: COMPOSITION_ATTR_RAW_CLAUSE}]},
caret: {start: 3, length: 0},
});
ok(!fired, `Restarting composition shouldn't fire DOM "text" event in ${editorId}`);
fired = false;
synthesizeComposition({type: "compositioncommit", data: "", key: {key: "KEY_Escape"}});
ok(!fired, `Committing composition with empty string shouldn't fire DOM "text" event in ${editorId}`);
fired = false;
synthesizeCompositionChange({
composition: {string: "de",
clauses: [{length: 2, attr: COMPOSITION_ATTR_RAW_CLAUSE}]},
caret: {start: 2, length: 0},
});
ok(!fired, `Restarting composition shouldn't fire DOM "text" event in ${editorId}`);
fired = false;
synthesizeComposition({type: "compositioncommit", data: "def", key: {key: "KEY_Escape"}});
ok(!fired, `Committing composition with new string shouldn't fire DOM "text" event in ${editorId}`);
fired = false;
synthesizeComposition({type: "compositioncommit", data: "ghi"});
ok(!fired, `Inserting string shouldn't fire DOM "text" event in ${editorId}`);
editor.removeEventListener("text", onText);
}
SimpleTest.finish();
});
</script>
</body>
</html>