| |
| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta name="viewport" content="width=device-width, user-scalable=no"> |
| <script src="../../resources/js-test.js"></script> |
| <script src="../../resources/ui-helper.js"></script> |
| <style> |
| body { |
| margin: 0; |
| } |
| |
| input, button { |
| width: 100%; |
| height: 100px; |
| display: block; |
| } |
| </style> |
| </head> |
| <body> |
| <input type="text" id="field"></input> |
| <button value="Insert text" id="button"></button> |
| <div id="description"></div> |
| <div id="console"></div> |
| </body> |
| <script> |
| description("Verifies that programmatically changing text field values with user interaction invokes the -didChangeInTextField" |
| + " injected bundle method. This test requires WebKitTestRunner."); |
| |
| buttonClicked = false; |
| |
| if (window.testRunner) { |
| jsTestIsAsync = true; |
| testRunner.installTextDidChangeInTextFieldCallback(() => debug("Text did change in text field.")); |
| } |
| |
| field.addEventListener("keypress", event => { |
| field.value += event.key; |
| event.preventDefault(); |
| }); |
| |
| button.addEventListener("click", event => { |
| field.focus(); |
| field.value += "b"; |
| buttonClicked = true; |
| }); |
| |
| addEventListener("load", async () => { |
| if (!window.testRunner) |
| return; |
| |
| await UIHelper.activateAndWaitForInputSessionAt(100, 50); |
| |
| debug("1. Changing text field value with user typing gesture:"); |
| await UIHelper.typeCharacter("a"); |
| debug(`The value of the text field is: "${field.value}"`); |
| debug(""); |
| |
| debug("2. Changing text field value with non-typing user gesture:"); |
| UIHelper.activateAt(100, 150); |
| await new Promise(resolve => shouldBecomeEqual("buttonClicked", "true", resolve)); |
| debug(`The value of the text field is: "${field.value}"`); |
| debug(""); |
| |
| debug("3. Changing text field value without user gesture:"); |
| field.value += "c"; |
| debug(`The value of the text field is: "${field.value}"`); |
| |
| finishJSTest(); |
| }); |
| </script> |
| </html> |