c92ab8b46cf1050d398fa99c5b90386451eca58c
[WebKit.git] / LayoutTests / editing / pasteboard / copy-null-characters.html
1 <head>
2 <script src="../../resources/dump-as-markup.js"></script>
3 <script>
4 Markup.description('If there are NULL characters in text nodes, they should not be copied to the clipboard.  This test requires DumpRenderTree.');
5 Markup.noAutoDump();
6
7 function runTest()
8 {
9     var sel = window.getSelection();
10
11     var source = document.getElementById("source");
12     var textWithNull = "Copy\0 paste me";
13     source.textContent = textWithNull;
14     sel.setPosition(source, 0);
15     document.execCommand("SelectAll");
16     document.execCommand("Copy");
17
18     var destinationRichText = document.getElementById("destination-rich-text");
19     sel.setPosition(destinationRichText, 0);
20     document.execCommand("Paste");
21
22     var destinationPlainText = document.getElementById("destination-plain-text");
23     destinationPlainText.focus();
24     document.execCommand("Paste");
25
26     var results = document.getElementById("results");
27     var expectedPlainTextValue = "Copy paste me";
28     if (expectedPlainTextValue != destinationPlainText.value) {
29         results.innerText = "Plain text field has the wrong value (expected " +
30             JSON.stringify(expectedPlainTextValue) + " but found " +
31             JSON.stringify(destinationPlainText.value) + ").";
32         return;
33     }
34
35     // Run the same test but include some richly formatted text.
36     var outerSource = document.getElementById("outerSource");
37     sel.setBaseAndExtent(outerSource, 0, destinationRichText, 0);
38     document.execCommand("Copy");
39
40     // Remove the source text so we don't end up with a null character in the
41     // expected output file.
42     source.parentNode.removeChild(source);
43
44     sel.setPosition(destinationRichText, 0);
45     document.execCommand("Paste");
46
47     destinationPlainText.focus();
48     document.execCommand("Paste");
49
50     var expectedPlainTextValue2 = "Copy paste mebold\n\nCopy paste me\ngreen";
51     if (expectedPlainTextValue2 != destinationPlainText.value) {
52         results.innerText = "Plain text field has the wrong value (expected " +
53             JSON.stringify(expectedPlainTextValue2) + " but found " +
54             JSON.stringify(destinationPlainText.value) + ").";
55         return;
56     }
57
58     results.innerText = "PASSED";
59
60     Markup.dump(document.body);
61     Markup.notifyDone();
62 }
63 </script>
64 </head>
65
66 <body onload="runTest()">
67 <div id="outerSource"><p><b>bold</b></p>
68   <div id="source" contentEditable="true"></div>
69   <p style="color: green">green</p>
70 </div>
71 <div id="destination-rich-text" contentEditable="true"></div>
72 <textarea id="destination-plain-text"></textarea>
73 <div id="results">FAILED</div>
74 </body>