| <!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] --> |
| <html> |
| <head> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <script src="../../../resources/ui-helper.js"></script> |
| <script src="../../../resources/js-test.js"></script> |
| <style> |
| body, html { |
| width: 100%; |
| height: 100%; |
| margin: 0; |
| } |
| |
| #editor { |
| width: 1px; |
| height: 1px; |
| outline: none; |
| overflow: hidden; |
| opacity: 0; |
| } |
| |
| button { |
| width: 320px; |
| height: 100px; |
| } |
| </style> |
| </head> |
| <body> |
| <button onclick="editor.focus()">Focus the editor</button> |
| <div id="editor" contenteditable autocorrect="off" autocapitalize="off" spellcheck="false"></div> |
| <div id="description"></div> |
| <div id="console"></div> |
| <script> |
| jsTestIsAsync = true; |
| |
| function caretRectToString(rect) { |
| if (!rect.width && !rect.height) |
| return "empty"; |
| return `(left=${rect.left}, top=${rect.top}, width=${rect.width}, height=${rect.height})`; |
| } |
| |
| async function checkCaretRect(description) |
| { |
| await UIHelper.ensurePresentationUpdate(); |
| const rect = await UIHelper.getUICaretViewRect(); |
| debug(`${description}, the caret rect is ${caretRectToString(rect)}`); |
| } |
| |
| (async () => { |
| description("Verifies that selection UI is suppressed when the editable root is extremely small. To manually test, " |
| + "tap on the button above and verify that (1) the editable element is focused, and (2) selection handles are " |
| + "not shown."); |
| |
| await UIHelper.activateAndWaitForInputSessionAt(160, 50); |
| await checkCaretRect("After focus"); |
| |
| await UIHelper.zoomToScale(3); |
| await UIHelper.typeCharacter("a"); |
| await checkCaretRect("After zooming in"); |
| await UIHelper.zoomToScale(1); |
| |
| editor.style.width = "100px"; |
| editor.style.height = "100px"; |
| await UIHelper.typeCharacter("b"); |
| await checkCaretRect("After making editor large"); |
| |
| editor.style.opacity = 1; |
| await UIHelper.typeCharacter("c"); |
| await checkCaretRect("After making editor opaque"); |
| |
| editor.style.width = "1px"; |
| editor.style.height = "1px"; |
| await UIHelper.typeCharacter("d"); |
| await checkCaretRect("After making editor tiny again"); |
| |
| editor.style.opacity = 0; |
| await UIHelper.typeCharacter("e"); |
| await checkCaretRect("After making editor transparent again"); |
| |
| editor.style.width = "100px"; |
| editor.style.height = "100px"; |
| await UIHelper.typeCharacter("f"); |
| await checkCaretRect("After making editor large again"); |
| |
| editor.style.opacity = 1; |
| await UIHelper.typeCharacter("g"); |
| await checkCaretRect("After making editor opaque again"); |
| |
| finishJSTest(); |
| })(); |
| </script> |
| </body> |
| </html> |