1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/layout/reftests/selection/dom-mutations-ref.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,200 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html class="reftest-wait"> 1.6 +<!-- 1.7 +https://bugzilla.mozilla.org/show_bug.cgi?id=619273 1.8 +--> 1.9 +<head> 1.10 + <title>Test for Bug 619273</title> 1.11 +<script type="application/javascript;version=1.7"> 1.12 +/** Test DOM mutations inside selection **/ 1.13 +function createDOM(doc) { 1.14 + let s = doc.createElement('span'); 1.15 + s.appendChild(doc.createTextNode('|')) 1.16 + let s2 = doc.createElement('span'); 1.17 + s2.appendChild(doc.createTextNode('z')) 1.18 + s.appendChild(s2) 1.19 + return s; 1.20 +} 1.21 + 1.22 +var tests_done = 0; 1.23 +var tests = [ 1.24 + function(win,doc,sel) { 1.25 + doc.body.innerHTML = '.I<br>B<br>C|z' 1.26 + let a = doc.body.firstChild; 1.27 + let r = doc.createRange(); 1.28 + r.setStart(a, 1); 1.29 + r.setEnd(a, 2); 1.30 + sel.addRange(r); 1.31 + }, 1.32 + function(win,doc,sel) { 1.33 + doc.body.innerHTML = '.I<br>B<br>C|z' 1.34 + let a = doc.body.firstChild; 1.35 + let r = doc.createRange(); 1.36 + r.setStart(doc.firstChild, 0); 1.37 + r.setEnd(a, 2); 1.38 + sel.addRange(r); 1.39 + }, 1.40 + function(win,doc,sel) { 1.41 + doc.body.innerHTML = 'I<br>.B<br>C|z' 1.42 + let a = doc.body.firstChild; 1.43 + let b = doc.body.childNodes[2]; 1.44 + let c = doc.body.childNodes[4]; 1.45 + let r = doc.createRange(); 1.46 + r.setStart(a, 0); 1.47 + r.setEnd(c, 1); 1.48 + sel.addRange(r); 1.49 + }, 1.50 + function(win,doc,sel) { 1.51 + doc.body.innerHTML = 'I<br>.B<br>C|z' 1.52 + let b = doc.body.childNodes[2]; 1.53 + let c = doc.body.childNodes[4]; 1.54 + let r = doc.createRange(); 1.55 + r.setStart(doc.body, 0); 1.56 + r.setEnd(c, 1); 1.57 + sel.addRange(r); 1.58 + }, 1.59 + function(win,doc,sel) { 1.60 + doc.body.innerHTML = 'I<br>.B<br>C|z' 1.61 + let b = doc.body.childNodes[2]; 1.62 + let c = doc.body.childNodes[4]; 1.63 + let r = doc.createRange(); 1.64 + r.setStart(doc, 0); 1.65 + r.setEnd(c, 1); 1.66 + sel.addRange(r); 1.67 + }, 1.68 + function(win,doc,sel) { 1.69 + doc.body.innerHTML = 'I<br>B<br>.C|z' 1.70 + let a = doc.body.firstChild; 1.71 + let c = doc.body.childNodes[4]; 1.72 + let r = doc.createRange(); 1.73 + r.setStart(a, 0); 1.74 + r.setEnd(c, 2); 1.75 + sel.addRange(r); 1.76 + }, 1.77 + 1.78 + function(win,doc,sel) { 1.79 + doc.body.innerHTML = '|z|zI<br>B<br>C' 1.80 + let a = doc.body.firstChild; 1.81 + let r = doc.createRange(); 1.82 + r.setStart(a, 4); 1.83 + r.setEnd(a, 5); 1.84 + sel.addRange(r); 1.85 + }, 1.86 + function(win,doc,sel) { 1.87 + doc.body.innerHTML = '|z|zI<br>B<br>C' 1.88 + let a = doc.body.firstChild; 1.89 + let r = doc.createRange(); 1.90 + r.setStart(doc.firstChild, 0); 1.91 + r.setEnd(a, 5); 1.92 + sel.addRange(r); 1.93 + }, 1.94 + function(win,doc,sel) { 1.95 + doc.body.innerHTML = 'I<br>|z|zB<br>C' 1.96 + let a = doc.body.firstChild; 1.97 + let b = doc.body.childNodes[2]; 1.98 + let c = doc.body.childNodes[4]; 1.99 + let r = doc.createRange(); 1.100 + r.setStart(a, 0); 1.101 + r.setEnd(c, 1); 1.102 + sel.addRange(r); 1.103 + }, 1.104 + function(win,doc,sel) { 1.105 + doc.body.innerHTML = 'I<br>|z|zB<br>C' 1.106 + let b = doc.body.childNodes[2]; 1.107 + let c = doc.body.childNodes[4]; 1.108 + let r = doc.createRange(); 1.109 + r.setStart(doc.body, 0); 1.110 + r.setEnd(c, 1); 1.111 + sel.addRange(r); 1.112 + }, 1.113 + function(win,doc,sel) { 1.114 + doc.body.innerHTML = 'I<br>|z|zB<br>C' 1.115 + let b = doc.body.childNodes[2]; 1.116 + let c = doc.body.childNodes[4]; 1.117 + let r = doc.createRange(); 1.118 + r.setStart(doc, 0); 1.119 + r.setEnd(c, 1); 1.120 + sel.addRange(r); 1.121 + }, 1.122 + function(win,doc,sel) { 1.123 + doc.body.innerHTML = 'I<br>B<br>|z|zC' 1.124 + let a = doc.body.firstChild; 1.125 + let c = doc.body.childNodes[4]; 1.126 + let r = doc.createRange(); 1.127 + r.setStart(a, 0); 1.128 + r.setEnd(c, 5); 1.129 + sel.addRange(r); 1.130 + }, 1.131 + 1.132 + function(win,doc,sel) { 1.133 + doc.body.innerHTML = '<br>B<br>CI' 1.134 + }, 1.135 + function(win,doc,sel) { 1.136 + doc.body.innerHTML = '<br>B<br>C' 1.137 + }, 1.138 + function(win,doc,sel) { 1.139 + doc.body.innerHTML = 'I<br>B<br>C' 1.140 + let a = doc.body.firstChild; 1.141 + let c = doc.body.childNodes[4]; 1.142 + let r = doc.createRange(); 1.143 + r.setStart(a, 0); 1.144 + r.setEnd(c, 1); 1.145 + sel.addRange(r); 1.146 + }, 1.147 + 1.148 + function(win,doc,sel) { 1.149 + doc.body.innerHTML = 'I|z' 1.150 + let a = doc.body.firstChild; 1.151 + let r = doc.createRange(); 1.152 + r.setStart(a, 1); 1.153 + r.setEnd(a, 2); 1.154 + sel.addRange(r); 1.155 + }, 1.156 + 1.157 + function(win,doc,sel) { 1.158 + doc.body.innerHTML = 'Iz|' 1.159 + let a = doc.body.firstChild; 1.160 + let r = doc.createRange(); 1.161 + r.setStart(a, 1); 1.162 + r.setEnd(a, 2); 1.163 + sel.addRange(r); 1.164 + 1.165 + document.body.appendChild(document.createTextNode('I')); 1.166 + document.body.appendChild(document.createTextNode(' ')); 1.167 + document.body.appendChild(createDOM(document)); 1.168 + }, 1.169 +] 1.170 + 1.171 +function runTestInIframe(run,t) { 1.172 + let f = document.createElement('iframe'); 1.173 + f.setAttribute('frameborder','0'); 1.174 + f.setAttribute('height','100'); 1.175 + f.setAttribute('width','200'); 1.176 + f.src = 'data:text/html,<body style="margin:0;padding:0;font-family:monospace">'; 1.177 + f.onload = function () { 1.178 + try { 1.179 + run(f.contentWindow, f.contentDocument, f.contentWindow.getSelection()); 1.180 + } finally { ++tests_done; } 1.181 + } 1.182 + return f; 1.183 +} 1.184 + 1.185 +var id; 1.186 +function checkFinished() { 1.187 + if (window.frames.length == tests_done) { 1.188 + clearInterval(id); 1.189 + document.documentElement.className = ""; 1.190 + } 1.191 +} 1.192 + 1.193 +function runTest() { 1.194 + for (let i=0; i < tests.length; ++i) { 1.195 + let t = tests[i]; 1.196 + document.body.appendChild(runTestInIframe(t)); 1.197 + } 1.198 + id = setInterval(checkFinished,500); 1.199 +} 1.200 +</script> 1.201 +</head> 1.202 +<body onload="runTest()"></body> 1.203 +</html>