Backed out changeset 2450366cf7ca (bug 1891629) for causing win msix mochitest failures
[gecko.git] / dom / base / test / test_bug469020.html
blobf7f7631c938e259f75672009d3d274e844189dd0
1 <!DOCTYPE HTML>
2 <html>
3 <!--
4 https://bugzilla.mozilla.org/show_bug.cgi?id=469020
5 -->
6 <head>
7 <title>Test for Bug 469020</title>
8 <script src="/tests/SimpleTest/SimpleTest.js"></script>
9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
10 </head>
11 <body>
12 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=469020">Mozilla Bug 469020</a>
13 <p id="display"></p>
14 <div id="content" style="display: none">
16 </div>
17 <pre id="test">
18 <script type="application/javascript">
20 /** Test for Bug 469020 **/
22 var range = null;
23 var anchor = null;
25 function doRangeAnchor(elem, start, end) {
26 range = document.createRange();
27 range.setStart(elem.firstChild, start);
28 end = end < elem.lastChild.length ? end : elem.lastChild.length
29 range.setEnd(elem.lastChild, end);
30 anchor = document.createElement('a');
31 anchor.href = "javascript: void(0);";
32 range.surroundContents(anchor);
35 function undoRangeAnchor() {
36 var pnode = anchor.parentNode;
37 var range2 = document.createRange();
38 range2.selectNodeContents(anchor);
39 var contents = range2.extractContents();
40 pnode.replaceChild(contents,anchor);
43 function serializeNode(node) {
44 var s;
45 var isElem = false;
46 if (node.nodeName == "#text") {
47 if (node.nodeValue) {
48 s = node.nodeValue
49 } else {
50 s = "<#empty>"
52 } else {
53 isElem = true;
54 s = "<" + node.nodeName + ">";
56 for (var j = 0; j < node.childNodes.length; ++j) {
57 s += serializeNode(node.childNodes[j]);
59 if (isElem) {
60 s += "</" + node.nodeName + ">";
62 return s;
65 function runTest(elementID, start, end, expected1, expected2, expected3) {
66 var e = document.getElementById(elementID);
67 doRangeAnchor(e, start, end);
68 is(serializeNode(e), expected1, "Wrong range behavior!");
69 document.getElementById('log').textContent += serializeNode(e) + "\n";
70 undoRangeAnchor();
71 is(serializeNode(e), expected2, "Wrong range behavior!");
72 document.getElementById('log').textContent += serializeNode(e) + "\n";
73 doRangeAnchor(e, start, end);
74 is(serializeNode(e), expected3, "Wrong range behavior!");
75 document.getElementById('log').textContent += serializeNode(e) + "\n";
78 function runTests() {
79 runTest("test1", 0, 3,
80 "<P><#empty><A>http://www.<SPAN>mozilla.</SPAN>org</A><#empty></P>",
81 "<P><#empty>http://www.<SPAN>mozilla.</SPAN>org<#empty></P>",
82 "<P><#empty><A><#empty>http://www.<SPAN>mozilla.</SPAN>org<#empty></A><#empty></P>");
84 runTest("test2", 1, 3,
85 "<P>h<A>ttp://www.<SPAN>mozilla.</SPAN>org</A><#empty></P>",
86 "<P>http://www.<SPAN>mozilla.</SPAN>org<#empty></P>",
87 "<P>h<A><#empty>ttp://www.<SPAN>mozilla.</SPAN>org<#empty></A><#empty></P>");
89 runTest("test3", 0, 2,
90 "<P><#empty><A>http://www.<SPAN>mozilla.</SPAN>or</A>g</P>",
91 "<P><#empty>http://www.<SPAN>mozilla.</SPAN>org</P>",
92 "<P><#empty><A><#empty>http://www.<SPAN>mozilla.</SPAN>org</A><#empty></P>");
94 runTest("test4", 1, 2,
95 "<P>h<A>ttp://www.<SPAN>mozilla.</SPAN>or</A>g</P>",
96 "<P>http://www.<SPAN>mozilla.</SPAN>org</P>",
97 "<P>h<A><#empty>ttp://www.<SPAN>mozilla.</SPAN>org</A><#empty></P>");
99 runTest("test5", 11, 0,
100 "<P>http://www.<A><#empty><SPAN>mozilla.</SPAN><#empty></A>org</P>",
101 "<P>http://www.<#empty><SPAN>mozilla.</SPAN><#empty>org</P>",
102 "<P>http://www.<A><#empty><#empty><SPAN>mozilla.</SPAN><#empty><#empty></A>org</P>");
104 runTest("test6", 10, 1,
105 "<P>http://www<A>.<SPAN>mozilla.</SPAN>o</A>rg</P>",
106 "<P>http://www.<SPAN>mozilla.</SPAN>org</P>",
107 "<P>http://www<A><#empty>.<SPAN>mozilla.</SPAN>or</A>g</P>");
109 SimpleTest.finish();
112 SimpleTest.waitForExplicitFinish();
113 addLoadEvent(runTests);
117 </script>
118 </pre>
119 <p id="test1">http://www.<span>mozilla.</span>org</p>
120 <p id="test2">http://www.<span>mozilla.</span>org</p>
121 <p id="test3">http://www.<span>mozilla.</span>org</p>
122 <p id="test4">http://www.<span>mozilla.</span>org</p>
123 <p id="test5">http://www.<span>mozilla.</span>org</p>
124 <p id="test6">http://www.<span>mozilla.</span>org</p>
125 <pre id="log">
126 </pre>
127 </body>
128 </html>