blob: 1adc27fc99c362e510da9c7686898406eccfaea4 [file] [log] [blame]
<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<script src="../../../resources/ui-helper.js"></script>
<style>
#editable {
width: 200px;
height: 200px;
top: 0;
left: 0;
position: absolute;
}
</style>
</head>
<body style="margin: 0;">
<div contenteditable id="editable"></div>
<p>This test verifies that input events of type "insertReplacementText" target the right ranges.</p>
<p>To manually test, type 'T' into the input field and try to select a candidate. The output should indicate that the beforeinput and input events for the text replacement were handled, and that the range of the beforeinput event is from 0 to 1.</p>
<div id="output"></div>
<script>
let write = (message) => output.innerHTML += (message + "<br>");
function checkForCompletion() {
doneCount = window.doneCount ? doneCount : 0;
if (++doneCount == 3 && window.testRunner)
testRunner.notifyDone();
}
function logInputEvent(event)
{
if (event.inputType !== "insertReplacementText")
return;
if (event.type === "beforeinput") {
let firstRange = event.getTargetRanges()[0];
write(`Observed text replacement before input event with range: [${firstRange.startOffset}, ${firstRange.endOffset}] and data: "${event.dataTransfer.getData("text/plain")}"`);
} else
write(`Observed text replacement input event with data: "${event.dataTransfer.getData("text/plain")}"`);
checkForCompletion();
}
function triggerAutocorrectionAfterFirstInput() {
editable.removeEventListener("input", triggerAutocorrectionAfterFirstInput);
write(`Replacing "T" with "The"...`);
getSelection().setBaseAndExtent(editable, 0, editable, 1);
UIHelper.applyAutocorrection("The", "T").then(checkForCompletion);
}
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
editable.addEventListener("beforeinput", logInputEvent);
editable.addEventListener("input", logInputEvent);
editable.addEventListener("input", triggerAutocorrectionAfterFirstInput);
UIHelper.activateAndWaitForInputSessionAt(100, 100).then(() => UIHelper.typeCharacter("T"));
</script>
</body>
</html>