Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 <html xmlns="http://www.w3.org/1999/xhtml">
2 <!-- NodeIterator mutation tests.
3 Originally written by Ian Hickson, Mochi-ified by Zack Weinberg.
4 This file based on 00[3-9].xml from
5 http://hixie.ch/tests/adhoc/dom/traversal/node-iterator/
6 -->
7 <head>
8 <title>DOM Traversal: NodeIterator: Mutations (1/x)</title>
9 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
10 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
11 </head>
12 <body>
13 <p id="display"></p>
14 <div id="content" style="display: none">
15 <span id="X"></span><span id="Y"><span id="root1"><span id="A"><span id="B"><span id="C"><span id="D"><span id="E"></span></span></span></span></span></span></span>
16 <span id="root2"><span id="F"><span id="FF"></span></span><span id="G"></span><span id="H"><span id="HH"></span></span></span>
17 <span id="root3"><span id="I"><span id="II"></span></span><span id="J"></span><span id="K"><span id="KK"></span></span></span>
18 <span id="root4"><span id="L"></span><span id="M"><span id="MM"></span></span><span id="N"></span></span>
19 <span id="root5"><span id="O"></span><span id="P"><span id="PP"></span></span><span id="Q"></span></span>
20 <span id="root6"><span id="R"></span><span id="S"><span id="SS"></span></span><span id="T"></span></span>
21 <span id="root7"><span id="U"></span><span id="V"><span id="VV"></span></span><span id="W"></span></span>
22 </div>
23 <pre id="test">
24 <script class="testbody" type="text/javascript"><![CDATA[
25 /** Originally written by Ian Hickson. **/
27 function check(f, e, label) {
28 var eid = e.id;
29 var fid = f ? f.id : 'null';
30 is(f, e, label + ': expected ' + eid + ' have ' + fid);
31 }
33 var childid = 0;
34 function addChildTo(a) {
35 var x = document.createElementNS('http://www.w3.org/1999/xhtml', 'span');
36 x.id = 'X' + childid;
37 childid++;
38 ok(a, 'parent ' + (a?a.id:'undefined') + ' for child ' + x.id);
39 if (a)
40 a.appendChild(x);
41 return x;
42 }
43 function remove(a) {
44 var p = a.parentNode;
45 ok(a && p,
46 'removing ' + ( a?(a.id?a.id:'(no id)'):'undefined' )
47 + ' with parent ' + ( p?(p.id?p.id:'(no id)'):'undefined' ));
48 if (a && p)
49 p.removeChild(a);
50 }
52 /** Removal of nodes that should have no effect **/
53 (function () {
54 var root = $('root1');
55 var A = $('A');
56 var B = $('B');
57 var C = $('C');
58 var D = $('D');
59 var E = $('E');
61 var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
62 null);
63 check(iterator.nextNode(), root, '1.0');
65 // 1. Remove a node unrelated to the reference node
66 remove($('X'));
67 check(iterator.nextNode(), A, '1.1');
69 // 2. Remove an ancestor of the root node
70 remove($('Y'));
71 check(iterator.nextNode(), B, '1.2');
73 // 3. Remove the root node itself
74 remove(root);
75 check(iterator.nextNode(), C, '1.3');
77 // 4. Remove a descendant of the reference node
78 remove(E);
79 check(iterator.nextNode(), D, '1.4');
80 })();
82 /** Removal of the reference node **/
83 (function () {
84 var root = $('root2');
85 var F = $('F');
86 var FF = $('FF');
87 var G = $('G');
88 var H = $('H');
89 var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
90 null);
92 check(iterator.nextNode(), root, '2.0');
93 check(iterator.nextNode(), F, '2.1');
94 check(iterator.nextNode(), FF, '2.2');
95 check(iterator.nextNode(), G, '2.3');
96 remove(G);
97 check(iterator.previousNode(), FF, '2.4');
98 remove(FF);
99 check(iterator.nextNode(), H, '2.5');
100 })();
102 /** Removal of the reference node (deep check) **/
103 (function () {
104 var root = $('root3');
105 var I = $('I');
106 var II = $('II');
107 var J = $('J');
108 var K = $('K');
109 var KK = $('KK');
111 var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
112 null);
113 check(iterator.nextNode(), root, '3.0');
114 check(iterator.nextNode(), I, '3.1');
115 check(iterator.nextNode(), II, '3.2');
116 check(iterator.nextNode(), J, '3.3');
117 remove(J);
118 var X = addChildTo(II);
119 check(iterator.nextNode(), X, '3.4');
120 check(iterator.previousNode(), X, '3.5');
121 remove(X);
122 var Y = addChildTo(II);
123 check(iterator.previousNode(), Y, '3.6');
124 check(iterator.nextNode(), Y, '3.7');
125 check(iterator.nextNode(), K, '3.8');
126 check(iterator.nextNode(), KK, '3.9');
127 })();
129 /** Removal of an ancestor of the Reference Node (forwards) **/
130 (function () {
131 var root = $('root4');
132 var L = $('L');
133 var M = $('M');
134 var MM = $('MM');
135 var N = $('N');
137 var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
138 null);
139 check(iterator.nextNode(), root, '4.1');
140 check(iterator.nextNode(), L, '4.2');
141 check(iterator.nextNode(), M, '4.3');
142 check(iterator.nextNode(), MM, '4.4');
143 remove(M);
144 check(iterator.previousNode(), L, '4.5');
145 })();
147 /** Removal of an ancestor of the Reference Node (forwards) (deep check) **/
148 (function () {
149 var root = $('root5');
150 var O = $('O');
151 var P = $('P');
152 var PP = $('PP');
153 var Q = $('Q');
155 var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
156 null);
157 check(iterator.nextNode(), root, '5.1');
158 check(iterator.nextNode(), O, '5.2');
159 check(iterator.nextNode(), P, '5.3');
160 check(iterator.nextNode(), PP, '5.4');
161 remove(P);
162 var X = addChildTo(O);
163 check(iterator.nextNode(), X, '5.5');
164 })();
166 /** Removal of an ancestor of the Reference Node (backwards) **/
167 (function () {
168 var root = $('root6');
169 var R = $('R');
170 var S = $('S');
171 var SS = $('SS');
172 var T = $('T');
174 var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
175 null);
176 check(iterator.nextNode(), root, '6.1');
177 check(iterator.nextNode(), R, '6.2');
178 check(iterator.nextNode(), S, '6.3');
179 check(iterator.nextNode(), SS, '6.4');
180 check(iterator.previousNode(), SS, '6.5');
181 remove(S);
182 check(iterator.nextNode(), T, '6.6');
183 })();
185 /** Removal of an ancestor of the Reference Node (backwards) (deep check) **/
186 (function () {
187 var root = $('root7');
188 var U = $('U');
189 var V = $('V');
190 var VV = $('VV');
191 var W = $('W');
193 var iterator = document.createNodeIterator(root, NodeFilter.SHOW_ALL,
194 null);
195 check(iterator.nextNode(), root, '7.1');
196 check(iterator.nextNode(), U, '7.2');
197 check(iterator.nextNode(), V, '7.3');
198 check(iterator.nextNode(), VV, '7.4');
199 check(iterator.previousNode(), VV, '7.5');
200 remove(V);
201 var X = addChildTo(U);
202 check(iterator.previousNode(), X, '7.6');
203 })();
204 ]]></script></pre></body></html>