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