| <head> |
| <script src="../../resources/dump-as-markup.js"></script> |
| <script> |
| Markup.description('If there are NULL characters in text nodes, they should not be copied to the clipboard. This test requires DumpRenderTree.'); |
| Markup.noAutoDump(); |
| |
| function runTest() |
| { |
| var sel = window.getSelection(); |
| |
| var source = document.getElementById("source"); |
| var textWithNull = "Copy\0 paste me"; |
| source.textContent = textWithNull; |
| |
| var results = document.getElementById("results"); |
| // Make sure innerHTML still has the NULL. |
| if (source.innerHTML != textWithNull) { |
| results.innerText = "source.innerHTML has the wrong value (expected " + |
| JSON.stringify(textWithNull) + " but found " + |
| JSON.stringify(source.innerHTML) + ")."; |
| Markup.dump(document.body); |
| Markup.notifyDone(); |
| return; |
| } |
| |
| sel.setPosition(source, 0); |
| document.execCommand("SelectAll"); |
| document.execCommand("Copy"); |
| |
| var destinationRichText = document.getElementById("destination-rich-text"); |
| sel.setPosition(destinationRichText, 0); |
| document.execCommand("Paste"); |
| |
| var destinationPlainText = document.getElementById("destination-plain-text"); |
| destinationPlainText.focus(); |
| document.execCommand("Paste"); |
| |
| var expectedPlainTextValue = "Copy paste me"; |
| if (expectedPlainTextValue != destinationPlainText.value) { |
| results.innerText = "Plain text field has the wrong value (expected " + |
| JSON.stringify(expectedPlainTextValue) + " but found " + |
| JSON.stringify(destinationPlainText.value) + ")."; |
| Markup.dump(document.body); |
| Markup.notifyDone(); |
| return; |
| } |
| |
| // Run the same test but include some richly formatted text. |
| var outerSource = document.getElementById("outerSource"); |
| sel.setBaseAndExtent(outerSource, 0, destinationRichText, 0); |
| document.execCommand("Copy"); |
| |
| // Remove the source text so we don't end up with a null character in the |
| // expected output file. |
| source.parentNode.removeChild(source); |
| |
| sel.setPosition(destinationRichText, 0); |
| document.execCommand("Paste"); |
| |
| destinationPlainText.focus(); |
| document.execCommand("Paste"); |
| |
| var expectedPlainTextValue2 = "Copy paste mebold\n\nCopy paste me\ngreen"; |
| if (expectedPlainTextValue2 != destinationPlainText.value) { |
| results.innerText = "Plain text field has the wrong value (expected " + |
| JSON.stringify(expectedPlainTextValue2) + " but found " + |
| JSON.stringify(destinationPlainText.value) + ")."; |
| Markup.dump(document.body); |
| Markup.notifyDone(); |
| return; |
| } |
| |
| results.innerText = "PASSED"; |
| |
| Markup.dump(document.body); |
| Markup.notifyDone(); |
| } |
| </script> |
| </head> |
| |
| <body onload="runTest()"> |
| <div id="outerSource"><p><b>bold</b></p> |
| <div id="source" contentEditable="true"></div> |
| <p style="color: green">green</p> |
| </div> |
| <div id="destination-rich-text" contentEditable="true"></div> |
| <textarea id="destination-plain-text"></textarea> |
| <div id="results">FAILED</div> |
| </body> |