chromium/third_party/blink/web_tests/editing/input/setting-input-value-cancel-ime-composition.html

<!DOCTYPE html>
<html>
<head>
<title> Testcase for bug crbug.com/242715 </title>
<script src="../../resources/js-test.js"></script>
<script>
function runTest() {
    description('This test ensures WebKit clears IME composition inside an input element \
when the value is programmatically set.');

    var test = document.getElementById('test');
    test.addEventListener('keyup', function(event) {
        if (event.keyCode == 40)
            test.value = 'henhao';
    });

    test.focus();
    test.selectionStart = 0;
    test.selectionEnd = 0;
    textInputController.setMarkedText("nihao", 0, 5);

    debug('nihao should marked from 0 to 5');
    shouldBeTrue("textInputController.hasMarkedText()");
    shouldBeEqualToString("textInputController.markedRange().toString()", "0,5");

    test.value = '';
    debug('text was removed so there should be no marked text');
    shouldBeFalse("textInputController.hasMarkedText()");

    textInputController.setMarkedText("nihao", 0, 5);
    debug('nihao should marked from 0 to 5');
    shouldBeTrue("textInputController.hasMarkedText()");
    shouldBeEqualToString("textInputController.markedRange().toString()", "0,5");

    eventSender.keyDown('ArrowDown');

    debug('the text was changed so there should be no marked text');
    shouldBeFalse("textInputController.hasMarkedText()");

    document.body.removeChild(test);
    isSuccessfullyParsed();
}
</script>
</body>
<body onload="runTest();">
 <input id="test" type="text">
 <div id="description"></div>
 <div id="console"></div>
</body>
</html>