| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <textarea id="plain" onbeforeinput=handlePlainInput(event) oninput=handlePlainInput(event)></textarea> |
| <div id="rich" contenteditable onbeforeinput=handleRichInput(event) oninput=handleRichInput(event)></div> |
| <script type="text/javascript"> |
| description(`To manually test this, type in both the rich contenteditable and plain textarea and/or insert candidates/autocorrections. |
| Both elements should have data when typing normally, but only the plain textarea should have data when inserting a replacement.`); |
| (function() { |
| if (!window.internals || !window.eventSender || !window.testRunner) |
| return; |
| |
| internals.settings.setInputEventsEnabled(true); |
| |
| document.querySelector("#plain").focus(); |
| simulateTypingWithReplacement(false); |
| |
| document.querySelector("#rich").focus(); |
| simulateTypingWithReplacement(true); |
| })(); |
| |
| function simulateTypingWithReplacement(isRich) |
| { |
| eventSender.keyDown("h", []); |
| eventSender.keyDown("e", []); |
| eventSender.keyDown("l", []); |
| eventSender.keyDown("o", []); |
| internals.handleAcceptedCandidate("hello", 0, 4); |
| } |
| |
| function handleRichInput(event) |
| { |
| if (event.inputType === "insertText" || event.inputType === "insertReplacementText") |
| debug(`Rich contenteditable received '${event.type}' with inputType: '${event.inputType}' and data: '${event.data}'`); |
| } |
| |
| function handlePlainInput(event) |
| { |
| if (event.inputType === "insertText" || event.inputType === "insertReplacementText") |
| debug(`Plain textarea received '${event.type}' with inputType: '${event.inputType}' and data: '${event.data}'`); |
| } |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| |
| </html> |