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

changeset 0
6474c204b198
     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>

mercurial