| <!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] --> |
| |
| <html> |
| |
| <head> |
| <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> |
| <script> |
| let write = message => output.innerHTML += message + "<br>"; |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| let remainingInputEventCount = 0; |
| let resolveExpectedInputEvents = null; |
| function handleInput() { |
| remainingInputEventCount--; |
| if (resolveExpectedInputEvents && !remainingInputEventCount) |
| resolveExpectedInputEvents(); |
| } |
| |
| function runUIScriptAndExpectInputEvents(inputEventCount, nextAutocorrectValue) |
| { |
| remainingInputEventCount = inputEventCount; |
| resolveExpectedInputEvents = () => { |
| write(`With autocorrect ${editable.autocorrect ? "on" : "off"}, the result is: "${editable.textContent.trim()}"`); |
| editable.textContent = ""; |
| editable.autocorrect = nextAutocorrectValue; |
| editable.blur(); |
| }; |
| |
| return new Promise(function(resolve) { |
| let rect = editable.getBoundingClientRect(); |
| testRunner.runUIScript(`(function() { |
| uiController.removeAllDynamicDictionaries(); |
| uiController.didShowKeyboardCallback = function() { |
| uiController.typeCharacterUsingHardwareKeyboard("t", function() { |
| uiController.typeCharacterUsingHardwareKeyboard("i", function() { |
| uiController.typeCharacterUsingHardwareKeyboard(" ", function() { }); |
| }); |
| }); |
| } |
| uiController.didHideKeyboardCallback = function() { |
| uiController.uiScriptComplete(); |
| } |
| uiController.singleTapAtPoint(${rect.left + rect.width / 2}, ${rect.top + rect.height / 2}, function() {}); |
| })();`, resolve); |
| }); |
| } |
| |
| function runTest() |
| { |
| if (!window.testRunner || !testRunner.runUIScript) |
| return; |
| |
| runUIScriptAndExpectInputEvents(3, "on") |
| .then(() => runUIScriptAndExpectInputEvents(4, null)) |
| .then(() => testRunner.notifyDone()); |
| } |
| </script> |
| <style> |
| #editable { |
| width: 200px; |
| height: 100px; |
| top: 0; |
| left: 0; |
| position: absolute; |
| } |
| </style> |
| </head> |
| |
| <body onload=runTest()> |
| <div style="font-size: 24px;" contenteditable autocorrect="off" id="editable" oninput=handleInput()></div> |
| <p>To manually test, type 'Ti' into the contenteditable and a space. The 'Ti' should not be autocorrected.</p> |
| <code><div id="output"></div></code> |
| </body> |
| |
| </html> |