| <!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] --> |
| <html> |
| <head> |
| <script src="../../../resources/ui-helper.js"></script> |
| <script src="../../../resources/js-test.js"></script> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <style> |
| html, body { |
| margin: 0; |
| width: 100%; |
| height: 100%; |
| } |
| |
| input { |
| width: 100%; |
| font-size: 100px; |
| display: block; |
| } |
| </style> |
| </head> |
| <body> |
| <input></input> |
| <div id="description"></div> |
| <div id="console"></div> |
| <script> |
| description("This test verifies that temporarily suppressing the software keyboard while focusing an input field does not crash the UI process. This test requires WebKitTestRunner."); |
| |
| jsTestIsAsync = true; |
| addEventListener("load", async () => { |
| if (!window.testRunner) |
| return; |
| |
| await UIHelper.setHardwareKeyboardAttached(false); |
| |
| let input = document.querySelector("input"); |
| const x = input.offsetLeft + input.offsetWidth / 2; |
| const y = input.offsetTop + input.offsetHeight / 2; |
| |
| await new Promise(resolve => { |
| testRunner.runUIScript(` |
| (function() { |
| uiController.willStartInputSessionCallback = () => { |
| uiController.suppressSoftwareKeyboard = true; |
| uiController.suppressSoftwareKeyboard = false; |
| }; |
| |
| uiController.didShowKeyboardCallback = () => { |
| uiController.didShowKeyboardCallback = null; |
| uiController.willStartInputSessionCallback = null; |
| uiController.uiScriptComplete(); |
| }; |
| |
| uiController.singleTapAtPoint(${x}, ${y}, () => { }); |
| })()`, resolve); |
| }); |
| |
| input.blur(); |
| await UIHelper.waitForKeyboardToHide(); |
| finishJSTest(); |
| }); |
| </script> |
| </body> |
| </html> |