<!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;

            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}' and isComposing: ${event.isComposing}`);
        }

        function handlePlainInput(event)
        {
            if (event.inputType === "insertText" || event.inputType === "insertReplacementText")
                debug(`Plain textarea received '${event.type}' with inputType: '${event.inputType}' and data: '${event.data}' and isComposing: ${event.isComposing}`);
        }
    </script>
    <script src="../../resources/js-test-post.js"></script>
</body>

</html>
