tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_bug682463.html (4298B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=682463
      5 -->
      6 <head>
      7  <title>Test for Bug 682463</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=682463">Mozilla Bug 682463</a>
     13 <p id="display"></p>
     14 <div id="content" style="display: none">
     15 
     16 </div>
     17 <pre id="test">
     18 <script type="application/javascript">
     19 
     20 /** Test for Bug 682463 */
     21 
     22  function text(s) {
     23    return document.createTextNode(s);
     24  }
     25  function div(l,r) {
     26    var d = document.createElement("DIV");
     27    if (l) d.appendChild(l);
     28    if (r) d.appendChild(r);
     29    return d;
     30  }
     31  function createRange(sn,so,en,eo) {
     32    var r = document.createRange();
     33    r.setStart(sn,so);
     34    r.setEnd(en,eo);
     35    return r;
     36  }
     37  function verifyRange(msg,r,sn,so,en,eo) {
     38    ok(r.startContainer == sn && r.startOffset == so &&
     39       r.endContainer == en && r.endOffset == eo, msg);
     40  }
     41  function showRange(r,msg) {
     42    var s = "" + r.startContainer + ":  " + r.startOffset;
     43    s+= '\n';
     44    s += "" + r.endContainer + ":  " + r.endOffset;
     45    alert(msg + ':\n' + s)
     46  }
     47 
     48  var tests = [
     49  function() {
     50    var t = text("foobar");
     51    var r = createRange(t,2,t,t.length);
     52    var t2 = t.splitText(1);
     53    verifyRange("split before, no parent",r,t2,1,t2,5);
     54  },
     55  function() {
     56    var t = text("foobar");
     57    var r = createRange(t,0,t,t.length);
     58    var t2 = t.splitText(3);
     59    verifyRange("split middle, no parent",r,t,0,t,3);
     60  },
     61  function() {
     62    var t = text("foobar");
     63    var r = createRange(t,0,t,t.length);
     64    var n = t.length;
     65    var t2 = t.splitText(n);
     66    verifyRange("split after, no parent",r,t,0,t,n);
     67  },
     68  function() {
     69    var t = text("foobar");
     70    var parent = div(t);
     71    var r = createRange(t,0,t,t.length);
     72    var t2 = t.splitText(3);
     73    verifyRange("split middle, parent",r,t,0,t2,3);
     74    parent.removeChild(t);
     75    verifyRange("removed left, parent",r,parent,0,t2,3);
     76    var t2b = t2.splitText(1);
     77    verifyRange("split middle, parent, end",r,parent,0,t2b,2);
     78  },
     79  function() {
     80    var t0 = text("x");
     81    var t = text("foobar");
     82    var parent = div(t0,t);
     83    var r = createRange(t,0,t,t.length);
     84    var t2 = t.splitText(3);
     85    parent.removeChild(t);
     86    verifyRange("removed left, text sibling",r,parent,1,t2,3);
     87  },
     88  function() {
     89    var t = text("foobar");
     90    var parent = div(t);
     91    var r = createRange(t,2,t,t.length);
     92    var t2 = t.splitText(1);
     93    verifyRange("split before, parent",r,t2,1,t2,5);
     94    parent.removeChild(t2);
     95    verifyRange("removed right, parent",r,parent,1,parent,1);
     96  },
     97  function() {
     98    var t = text("foobar");
     99    var parent = div(t);
    100    var r = createRange(t,0,t,t.length);
    101    var n = t.length;
    102    var t2 = t.splitText(n);
    103    verifyRange("split after, parent",r,t,0,t,n);
    104    r.setEnd(t2,0);
    105    verifyRange("split after, parent, extend",r,t,0,t2,0);
    106    t2.splitText(0);
    107    verifyRange("split after, parent, extend, split end",r,t,0,t2,0);
    108    t2.textContent = "baz";
    109    t2.splitText(2);
    110    verifyRange("split after, parent, extend, split after end",r,t,0,t2,0);
    111    r.setEnd(t2,2);
    112    var t2b = t2.splitText(1);
    113    verifyRange("split after, parent, split end",r,t,0,t2b,1);
    114  },
    115  function() {
    116    var t = text("foobar");
    117    var parent = div(t);
    118    document.body.appendChild(parent);
    119    var r = createRange(t,0,t,t.length);
    120    var t2 = t.splitText(3);
    121    verifyRange("split middle, in document",r,t,0,t2,3);
    122  },
    123  function() {
    124    var t = text("foobar");
    125    var parent = div(t);
    126    document.body.appendChild(parent);
    127    var r = createRange(t,2,t,t.length);
    128    var t2 = t.splitText(1);
    129    verifyRange("split before, in document",r,t2,1,t2,5);
    130  },
    131  function() {
    132    var t = text("foobar");
    133    var parent = div(t);
    134    document.body.appendChild(parent);
    135    var r = createRange(t,0,t,t.length);
    136    var n = t.length;
    137    var t2 = t.splitText(n);
    138    verifyRange("split after, in document",r,t,0,t,n);
    139  }
    140  ];
    141 
    142  function runTests() {
    143    var len = tests.length;
    144    for (var i = 0; i < len; ++i) {
    145      tests[i]();
    146    }
    147    SimpleTest.finish();
    148  }
    149 
    150 addLoadEvent(runTests);
    151 SimpleTest.waitForExplicitFinish();
    152 
    153 </script>
    154 </pre>
    155 </body>
    156 </html>