blob: 735a4485fc7ec4c9119b2c4c0ea8c67add7d558a [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<style>
#editor {
direction: rtl;
border: 1px blue dashed;
}
</style>
</head>
<body>
<div id="editor" contenteditable oninput=handleInputEvent(event) onbeforeinput=handleBeforeInputEvent(event)>
<div id="content">Hello world</div>
</div>
<input type="text" id="textfield" value="hi" dir="rtl" oninput=handleInputEvent(event) onbeforeinput=handleBeforeInputEvent(event)></input>
<div id="output"></div>
<script>
let write = s => output.innerHTML += `${s}<br>`;
(function()
{
window.shouldPreventDefault = true;
if (!window.eventSender || !window.internals || !window.testRunner) {
write("To test manually, try to change the text direction to ltr. This should be prevented.");
return;
}
internals.settings.setInputEventsEnabled(true);
testRunner.dumpAsText();
editor.focus();
write("*** TESTING RICH TEXT ***");
write(`Initial text direction: "${getComputedStyle(content).direction}"`);
internals.setBaseWritingDirection("Ltr");
write(`Text direction after setting to LTR while preventing default: "${getComputedStyle(content).direction}"`);
window.shouldPreventDefault = false;
internals.setBaseWritingDirection("Ltr");
write(`Text direction after setting to LTR without preventing default: "${getComputedStyle(content).direction}"`);
window.shouldPreventDefault = true;
textfield.focus();
write("*** TESTING PLAIN TEXT ***");
write(`Initial text direction: "${textfield.getAttribute("dir")}"`);
internals.setBaseWritingDirection("Ltr");
write(`Text direction after setting to LTR while preventing default: "${textfield.getAttribute("dir")}"`);
window.shouldPreventDefault = false;
internals.setBaseWritingDirection("Ltr");
write(`Text direction after setting to LTR without preventing default: "${textfield.getAttribute("dir")}"`);
})();
function handleInputEvent(event)
{
write(`Fired input event of inputType '${event.inputType}' with data: '${event.data}'`);
}
function handleBeforeInputEvent(event)
{
write(`Fired onbeforeinput event of inputType '${event.inputType}' with data: '${event.data}'`);
if (window.shouldPreventDefault)
event.preventDefault();
}
</script>
</body>
</html>