2011-01-18 Maciej Stachowiak <mjs@apple.com>
[WebKit-https.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     alert(destinationRichText.innerHTML);
22
23     var destinationPlainText = document.getElementById("destination-plain-text");
24     destinationPlainText.focus();
25     document.execCommand("Paste");
26
27     var results = document.getElementById("results");
28     var expectedPlainTextValue = "Copy paste me";
29     if (expectedPlainTextValue != destinationPlainText.value) {
30         results.innerText = "Plain text field has the wrong value (expected " +
31             JSON.stringify(expectedPlainTextValue) + " but found " +
32             JSON.stringify(destinationPlainText.value) + ").";
33         Markup.dump(document.body);
34         Markup.notifyDone();
35         return;
36     }
37
38     // Run the same test but include some richly formatted text.
39     var outerSource = document.getElementById("outerSource");
40     sel.setBaseAndExtent(outerSource, 0, destinationRichText, 0);
41     document.execCommand("Copy");
42
43     // Remove the source text so we don't end up with a null character in the
44     // expected output file.
45     source.parentNode.removeChild(source);
46
47     sel.setPosition(destinationRichText, 0);
48     document.execCommand("Paste");
49
50     destinationPlainText.focus();
51     document.execCommand("Paste");
52
53     var expectedPlainTextValue2 = "Copy paste mebold\n\nCopy paste me\ngreen";
54     if (expectedPlainTextValue2 != destinationPlainText.value) {
55         results.innerText = "Plain text field has the wrong value (expected " +
56             JSON.stringify(expectedPlainTextValue2) + " but found " +
57             JSON.stringify(destinationPlainText.value) + ").";
58         Markup.dump(document.body);
59         Markup.notifyDone();
60         return;
61     }
62
63     results.innerText = "PASSED";
64
65     Markup.dump(document.body);
66     Markup.notifyDone();
67 }
68 </script>
69 </head>
70
71 <body onload="runTest()">
72 <div id="outerSource"><p><b>bold</b></p>
73   <div id="source" contentEditable="true"></div>
74   <p style="color: green">green</p>
75 </div>
76 <div id="destination-rich-text" contentEditable="true"></div>
77 <textarea id="destination-plain-text"></textarea>
78 <div id="results">FAILED</div>
79 </body>