| <!DOCTYPE html> |
| <html> |
| <body> |
| <script src="../../resources/js-test.js"></script> |
| <script> |
| |
| description('This tests copying and pasting content with "overflow: auto" would not strip its content.'); |
| |
| function startTest() { |
| const iframe = document.createElement('iframe'); |
| document.body.appendChild(iframe); |
| iframe.src = `data:text/html;charset=utf-8,<!DOCTYPE html> |
| <body><button onclick="document.execCommand('selectAll'); document.execCommand('copy'); getSelection().removeAllRanges();">Start</button> |
| <script> |
| document.addEventListener('copy', () => { |
| event.preventDefault(); |
| event.clipboardData.setData('text/html', '<div>Start</div><div style="height: 1000px;"></div><!-- secret -->' |
| + '<div style="visibility: hidden;">secret</div><p style="overflow: auto;">Content</p><div style="height: 1000px;"></div><span id="end">End</span>'); |
| window.parent.postMessage({}, '*'); |
| }); |
| window.onload = () => { |
| document.execCommand('selectAll'); |
| document.execCommand('copy'); |
| } |
| </sc` + `ript> |
| </body>`; |
| } |
| |
| |
| function continueTest() { |
| editor.focus(); |
| document.execCommand('selectAll'); |
| if (window.testRunner) |
| testRunner.execCommand('paste'); |
| } |
| |
| function didPaste(event) { |
| window.markup = event.clipboardData.getData('text/html'); |
| shouldBeFalse('markup.includes("secret")'); |
| shouldBeTrue('markup.includes("Start</div>")'); |
| shouldBeTrue('markup.includes("Content</p>")'); |
| shouldBeTrue('markup.includes("End</span>")'); |
| |
| setTimeout(() => { |
| shouldBeEqualToString('editor.querySelector("div").textContent', 'Start'); |
| shouldBeEqualToString('editor.querySelector("p").textContent', 'Content'); |
| shouldBeEqualToString('editor.querySelector("span").textContent', 'End'); |
| editor.textContent = editor.innerHTML; |
| editor.contentEditable = false; |
| if (window.testRunner) |
| editor.style.display = 'none'; |
| finishJSTest(); |
| }, 0); |
| } |
| |
| onload = startTest; |
| onmessage = continueTest; |
| jsTestIsAsync = true; |
| |
| </script> |
| <div id="editor" onpaste="didPaste(event)" contenteditable>Paste now</div> |
| </body> |
| </html> |