| <!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] --> |
| <html> |
| <meta name="viewport" content="width=device-width"> |
| <head> |
| <script src="../../../resources/js-test.js"></script> |
| <script src="../../../resources/ui-helper.js"></script> |
| <script> |
| doneCount = 0; |
| lastInputEvent = null; |
| jsTestIsAsync = true; |
| |
| function enterTextAndWaitForKeyboardToHide(text) { |
| return new Promise(async resolve => { |
| await UIHelper.activateAndWaitForInputSessionAt(100, 100); |
| UIHelper.waitForKeyboardToHide().then(resolve); |
| UIHelper.enterText(text); |
| }); |
| } |
| |
| async function runTest() { |
| if (!window.testRunner) { |
| description(`This test requires WebKitTestRunner.`); |
| return; |
| } |
| |
| await enterTextAndWaitForKeyboardToHide("testing"); |
| inputEventAfterInsertingText = lastInputEvent; |
| valueAfterInsertingText = field.value; |
| |
| await enterTextAndWaitForKeyboardToHide(""); |
| inputEventAfterDeletingText = lastInputEvent; |
| valueAfterDeletingText = field.value; |
| |
| shouldBe("inputEventAfterInsertingText.type", "'input'"); |
| shouldBe("inputEventAfterInsertingText.inputType", "'insertText'"); |
| shouldBe("inputEventAfterInsertingText.data", "'testing'"); |
| shouldBe("valueAfterInsertingText", "'testing'"); |
| |
| shouldBe("inputEventAfterDeletingText.type", "'input'"); |
| shouldBe("inputEventAfterDeletingText.inputType", "'deleteContent'"); |
| shouldBe("inputEventAfterDeletingText.data", "null"); |
| shouldBe("valueAfterDeletingText", "''"); |
| |
| checkDone(); |
| } |
| |
| function handleInput(event) { |
| lastInputEvent = event; |
| } |
| |
| function checkDone() { |
| if (++doneCount === 3) |
| finishJSTest(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <input id="field" style="width: 320px; height: 568px;" oninput="handleInput(event)" onblur="checkDone()"></input> |
| </body> |
| </html> |