| <!DOCTYPE html> <!-- webkit-test-runner [ domPasteAllowed=false useFlexibleViewport=true ignoreSynchronousMessagingTimeouts=true ] --> |
| <html> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <head> |
| <script src="./resources/dom-paste-helper.js"></script> |
| <script src="../../../resources/js-test.js"></script> |
| <script src="../../../resources/ui-helper.js"></script> |
| <style> |
| body { |
| margin: 0; |
| } |
| |
| #copy { |
| width: 100%; |
| height: 50px; |
| border: 1px dashed black; |
| } |
| |
| #editor { |
| width: 100%; |
| height: 100px; |
| border: 1px dashed silver; |
| text-align: center; |
| } |
| </style> |
| </head> |
| <body> |
| <div id="editor" contenteditable></div> |
| <iframe id="copy" src="data:text/html,<div id='copy' style='font-size: 40px; text-align: center;'>Click here to copy</div> |
| <script> |
| copy.addEventListener('click', () => { |
| getSelection().selectAllChildren(copy); |
| document.execCommand('Copy'); |
| getSelection().removeAllRanges(); |
| }); |
| </script>"></iframe> |
| <div id="description"></div> |
| <div id="console"></div> |
| <script> |
| jsTestIsAsync = true; |
| |
| const editor = document.getElementById("editor"); |
| |
| description("Verifies that no callout is shown when the page programmatically triggers paste outside the scope of user interaction. This test requires WebKitTestRunner."); |
| |
| function checkDone() { |
| if (!window.doneCount) |
| doneCount = 0; |
| |
| if (++doneCount == 2) |
| finishJSTest(); |
| } |
| |
| editor.addEventListener("click", event => { |
| editor.focus(); |
| shouldBe("document.execCommand('Paste')", "true"); |
| requestAnimationFrame(() => { |
| shouldBe("document.execCommand('Paste')", "false") |
| shouldBeEqualToString("editor.textContent", "Click here to copy"); |
| checkDone(); |
| }); |
| }); |
| |
| addEventListener("load", async () => { |
| await UIHelper.activateAt(160, 125); |
| await triggerPasteMenuAfterTapAt(160, 50); |
| checkDone(); |
| }); |
| </script> |
| </body> |
| </html> |