layout/reftests/selection/dom-mutations-ref.html

branch
TOR_BUG_9701
changeset 9
a63d609f5ebe
equal deleted inserted replaced
-1:000000000000 0:2fcf8e627d10
1 <!DOCTYPE HTML>
2 <html class="reftest-wait">
3 <!--
4 https://bugzilla.mozilla.org/show_bug.cgi?id=619273
5 -->
6 <head>
7 <title>Test for Bug 619273</title>
8 <script type="application/javascript;version=1.7">
9 /** Test DOM mutations inside selection **/
10 function createDOM(doc) {
11 let s = doc.createElement('span');
12 s.appendChild(doc.createTextNode('|'))
13 let s2 = doc.createElement('span');
14 s2.appendChild(doc.createTextNode('z'))
15 s.appendChild(s2)
16 return s;
17 }
18
19 var tests_done = 0;
20 var tests = [
21 function(win,doc,sel) {
22 doc.body.innerHTML = '.I<br>B<br>C|z'
23 let a = doc.body.firstChild;
24 let r = doc.createRange();
25 r.setStart(a, 1);
26 r.setEnd(a, 2);
27 sel.addRange(r);
28 },
29 function(win,doc,sel) {
30 doc.body.innerHTML = '.I<br>B<br>C|z'
31 let a = doc.body.firstChild;
32 let r = doc.createRange();
33 r.setStart(doc.firstChild, 0);
34 r.setEnd(a, 2);
35 sel.addRange(r);
36 },
37 function(win,doc,sel) {
38 doc.body.innerHTML = 'I<br>.B<br>C|z'
39 let a = doc.body.firstChild;
40 let b = doc.body.childNodes[2];
41 let c = doc.body.childNodes[4];
42 let r = doc.createRange();
43 r.setStart(a, 0);
44 r.setEnd(c, 1);
45 sel.addRange(r);
46 },
47 function(win,doc,sel) {
48 doc.body.innerHTML = 'I<br>.B<br>C|z'
49 let b = doc.body.childNodes[2];
50 let c = doc.body.childNodes[4];
51 let r = doc.createRange();
52 r.setStart(doc.body, 0);
53 r.setEnd(c, 1);
54 sel.addRange(r);
55 },
56 function(win,doc,sel) {
57 doc.body.innerHTML = 'I<br>.B<br>C|z'
58 let b = doc.body.childNodes[2];
59 let c = doc.body.childNodes[4];
60 let r = doc.createRange();
61 r.setStart(doc, 0);
62 r.setEnd(c, 1);
63 sel.addRange(r);
64 },
65 function(win,doc,sel) {
66 doc.body.innerHTML = 'I<br>B<br>.C|z'
67 let a = doc.body.firstChild;
68 let c = doc.body.childNodes[4];
69 let r = doc.createRange();
70 r.setStart(a, 0);
71 r.setEnd(c, 2);
72 sel.addRange(r);
73 },
74
75 function(win,doc,sel) {
76 doc.body.innerHTML = '|z|zI<br>B<br>C'
77 let a = doc.body.firstChild;
78 let r = doc.createRange();
79 r.setStart(a, 4);
80 r.setEnd(a, 5);
81 sel.addRange(r);
82 },
83 function(win,doc,sel) {
84 doc.body.innerHTML = '|z|zI<br>B<br>C'
85 let a = doc.body.firstChild;
86 let r = doc.createRange();
87 r.setStart(doc.firstChild, 0);
88 r.setEnd(a, 5);
89 sel.addRange(r);
90 },
91 function(win,doc,sel) {
92 doc.body.innerHTML = 'I<br>|z|zB<br>C'
93 let a = doc.body.firstChild;
94 let b = doc.body.childNodes[2];
95 let c = doc.body.childNodes[4];
96 let r = doc.createRange();
97 r.setStart(a, 0);
98 r.setEnd(c, 1);
99 sel.addRange(r);
100 },
101 function(win,doc,sel) {
102 doc.body.innerHTML = 'I<br>|z|zB<br>C'
103 let b = doc.body.childNodes[2];
104 let c = doc.body.childNodes[4];
105 let r = doc.createRange();
106 r.setStart(doc.body, 0);
107 r.setEnd(c, 1);
108 sel.addRange(r);
109 },
110 function(win,doc,sel) {
111 doc.body.innerHTML = 'I<br>|z|zB<br>C'
112 let b = doc.body.childNodes[2];
113 let c = doc.body.childNodes[4];
114 let r = doc.createRange();
115 r.setStart(doc, 0);
116 r.setEnd(c, 1);
117 sel.addRange(r);
118 },
119 function(win,doc,sel) {
120 doc.body.innerHTML = 'I<br>B<br>|z|zC'
121 let a = doc.body.firstChild;
122 let c = doc.body.childNodes[4];
123 let r = doc.createRange();
124 r.setStart(a, 0);
125 r.setEnd(c, 5);
126 sel.addRange(r);
127 },
128
129 function(win,doc,sel) {
130 doc.body.innerHTML = '<br>B<br>CI'
131 },
132 function(win,doc,sel) {
133 doc.body.innerHTML = '<br>B<br>C'
134 },
135 function(win,doc,sel) {
136 doc.body.innerHTML = 'I<br>B<br>C'
137 let a = doc.body.firstChild;
138 let c = doc.body.childNodes[4];
139 let r = doc.createRange();
140 r.setStart(a, 0);
141 r.setEnd(c, 1);
142 sel.addRange(r);
143 },
144
145 function(win,doc,sel) {
146 doc.body.innerHTML = 'I|z'
147 let a = doc.body.firstChild;
148 let r = doc.createRange();
149 r.setStart(a, 1);
150 r.setEnd(a, 2);
151 sel.addRange(r);
152 },
153
154 function(win,doc,sel) {
155 doc.body.innerHTML = 'Iz|'
156 let a = doc.body.firstChild;
157 let r = doc.createRange();
158 r.setStart(a, 1);
159 r.setEnd(a, 2);
160 sel.addRange(r);
161
162 document.body.appendChild(document.createTextNode('I'));
163 document.body.appendChild(document.createTextNode(' '));
164 document.body.appendChild(createDOM(document));
165 },
166 ]
167
168 function runTestInIframe(run,t) {
169 let f = document.createElement('iframe');
170 f.setAttribute('frameborder','0');
171 f.setAttribute('height','100');
172 f.setAttribute('width','200');
173 f.src = 'data:text/html,<body style="margin:0;padding:0;font-family:monospace">';
174 f.onload = function () {
175 try {
176 run(f.contentWindow, f.contentDocument, f.contentWindow.getSelection());
177 } finally { ++tests_done; }
178 }
179 return f;
180 }
181
182 var id;
183 function checkFinished() {
184 if (window.frames.length == tests_done) {
185 clearInterval(id);
186 document.documentElement.className = "";
187 }
188 }
189
190 function runTest() {
191 for (let i=0; i < tests.length; ++i) {
192 let t = tests[i];
193 document.body.appendChild(runTestInIframe(t));
194 }
195 id = setInterval(checkFinished,500);
196 }
197 </script>
198 </head>
199 <body onload="runTest()"></body>
200 </html>

mercurial