| <!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true experimental:AsyncClipboardAPIEnabled=true ] --> |
| <html> |
| <meta charset="utf8"> |
| <head> |
| <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> |
| <script src="../../resources/js-test.js"></script> |
| <script src="../../resources/ui-helper.js"></script> |
| <script src="./resources/async-clipboard-helpers.js"></script> |
| <style> |
| button { |
| width: 100%; |
| height: 150px; |
| display: block; |
| } |
| </style> |
| </head> |
| <script> |
| jsTestIsAsync = true; |
| finishedCopying = false; |
| |
| async function runTest() { |
| description("This test verifies that navigator.clipboard.readText can be used to read plain text from the system clipboard. To verify manually, click the 'Copy' button to copy text to the clipboard, and then click the 'Paste' button to read back the text."); |
| |
| copy = document.getElementById("copy"); |
| paste = document.getElementById("paste"); |
| |
| copy.addEventListener("click", () => { |
| writeToClipboardUsingDataTransfer({ "text/plain" : "garply" }); |
| testPassed("Copied text to clipboard using DataTransfer."); |
| finishedCopying = true; |
| }); |
| |
| paste.addEventListener("click", async () => { |
| try { |
| clipboardText = await navigator.clipboard.readText(); |
| testPassed("Read text from clipboard using navigator.clipboard.readText."); |
| } catch (exception) { |
| testFailed("Could not read text from clipboard."); |
| } finally { |
| shouldBeEqualToString("clipboardText", "garply"); |
| copy.remove(); |
| paste.remove(); |
| finishJSTest(); |
| } |
| }); |
| |
| if (!window.testRunner) |
| return; |
| |
| await UIHelper.activateElement(copy); |
| await new Promise(r => shouldBecomeEqual("finishedCopying", "true", r)); |
| await UIHelper.activateElement(paste); |
| } |
| |
| addEventListener("load", runTest); |
| </script> |
| <body> |
| <button id="copy">Copy</button> |
| <button id="paste">Paste</button> |
| <p id="description"></p> |
| <p id="console"></p> |
| </body> |
| </html> |