paste-clipboard-change.tentative.html (1886B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <title>This Test is for clipboard content changes during the paste event handler</title> 4 <meta name="variant" content="?id=text"> 5 <meta name="variant" content="?id=contenteditable"> 6 <script src=/resources/testharness.js></script> 7 <script src=/resources/testharnessreport.js></script> 8 <script src="/resources/testdriver.js"></script> 9 <script src="/resources/testdriver-vendor.js"></script> 10 <script src="/resources/testdriver-actions.js"></script> 11 <script src="../include/editor-test-utils.js"></script> 12 <div contenteditable="true" id="contentCopy">Original text</div> 13 <div id="pasteContainer"> 14 <input type="text" id="text"> 15 <div id="contenteditable" contenteditable="true"></div> 16 </div> 17 <script> 18 "use strict"; 19 20 const testingId = new URLSearchParams(document.location.search).get("id"); 21 const testElement = document.getElementById(testingId); 22 const utils = new EditorTestUtils(testElement); 23 24 promise_test(async () => { 25 // Copy the content to the clipboard. 26 const range = document.createRange(); 27 const contentToCopy = document.getElementById("contentCopy"); 28 range.selectNodeContents(contentToCopy); 29 const selection = window.getSelection(); 30 selection.removeAllRanges(); 31 selection.addRange(range); 32 await utils.sendCopyShortcutKey(); 33 34 // Paste the content to the test element. 35 testElement.addEventListener("copy", (e) => { 36 e.preventDefault(); 37 e.clipboardData.setData("text/plain", "New text"); 38 }, { once: true }); 39 testElement.addEventListener("paste", (e) => { 40 // Overwrite the clipboard content. 41 document.execCommand("copy"); 42 }, { once: true }); 43 await test_driver.click(testElement); 44 await utils.sendPasteShortcutKey(); 45 46 // Check content. 47 assert_equals(testElement.isContentEditable ? testElement.textContent : testElement.value, "New text"); 48 }, "clipboard change during paste event handler"); 49 </script>