<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test.js"></script>
<script src="../../../resources/ui-helper.js"></script>
</head>
<body>
<div id="test-container">
    <input type="text" id="input" value="Text">
    <button onclick="checkResultAndNotifyDone()">Check Result</button>
</div>
<script>
window.jsTestIsAsync = true;

description("Tests that pressing the forward delete key in an editable element deletes the next character. To run this test  manually, press the forward delete key and then click Check Result.");

runTest();

async function runTest()
{
    let inputElement = document.getElementById("input");
    if (!window.testRunner) {
        inputElement.focus();
        inputElement.setSelectionRange(0, 0);
        return;
    }
    // FIXME: We cannot listen for a keyup event because the forward delete key does not generate one
    // due to <rdar://problem/45772078>. So, we listen for a blur event.
    inputElement.addEventListener("blur", checkResultAndNotifyDone, {once: true});
    await UIHelper.activateFormControl(inputElement);
    inputElement.setSelectionRange(0, 0);
    await UIHelper.typeCharacter("forwardDelete");
    inputElement.blur();
}

function checkResultAndNotifyDone()
{
    shouldBeEqualToString('document.getElementById("input").value', "ext");
    document.body.removeChild(document.getElementById("test-container"));
    finishJSTest();
}
</script>
</body>
</html>
