tor-browser

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

test_bug415860.html (8120B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=415860
      5 -->
      6 <head>
      7  <title>Test for Bug 415860</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=415860">Mozilla Bug 415860</a>
     13 <p id="display"></p>
     14 <div id="content" style="display: none">
     15  
     16 </div>
     17 <div id="testdata"> </div>
     18 <pre id="test">
     19 <script class="testbody" type="text/javascript">
     20 
     21 /** Test for Bug 415860 */
     22 
     23 function tests() {
     24  // #text node
     25  n = document.getElementById('testdata').firstChild;
     26  s = getSelection();
     27 
     28  // Initial text..
     29  n.textContent = "Hello!";
     30 
     31  // select the second last character
     32  r = document.createRange();
     33  r.setStart(n, 4);
     34  r.setEnd(n, 5);
     35  s.addRange(r);
     36 
     37  ok(s == "o", "Should have selected 'o'");
     38  ok(r.toString() == "o", "Range should be 'o'");
     39  ok(r.collapsed == false, "Range shouldn't be collapsed");
     40  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
     41 
     42  // Update the text
     43  n.textContent = "Hello!";
     44 
     45  ok(s == "", "Should have selected ''");
     46  ok(r.toString() == "", "Range should be ''");
     47  ok(r.collapsed == true, "Range should be collapsed");
     48  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
     49 
     50  // select the last character
     51  r = document.createRange();
     52  r.setStart(n, 5);
     53  r.setEnd(n, 6);
     54  s.addRange(r);
     55 
     56  ok(s == "!", "Should have selected '!'");
     57  ok(r.toString() == "!", "Range should be '!'");
     58  ok(r.collapsed == false, "Range shouldn't be collapsed");
     59  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
     60 
     61  // Update the text
     62  n.textContent = "Hello!";
     63  ok(s == "", "Should have selected ''");
     64  ok(r.toString() == "", "Range should be ''");
     65  ok(r.collapsed == true, "Range should be collapsed");
     66  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
     67 
     68  r = document.createRange();
     69  r.setStart(n, 5);
     70  r.setEnd(n, 6);
     71  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
     72  ok(r.toString() == "!", "Range should be '!'");
     73  ok(r.collapsed == false, "Range shouldn't be collapsed");
     74 
     75  r.setStart(n, 0);
     76  r.setEnd(n, 6);
     77  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
     78  ok(r.toString() == "Hello!", "Range should be 'Hello!'");
     79  ok(r.collapsed == false, "Range shouldn't be collapsed");
     80 
     81  n.deleteData(0, 1);
     82  ok(n.nodeValue == "ello!", "Node value should be 'ello!'");
     83  ok(r.toString() == "ello!", "Range should be 'ello!'");
     84  ok(r.collapsed == false, "Range shouldn't be collapsed");
     85 
     86  n.deleteData(0, 4);
     87  ok(n.nodeValue == "!", "Node value should be '!'");
     88  ok(r.toString() == "!", "Range should be '!'");
     89  ok(r.collapsed == false, "Range shouldn't be collapsed");
     90 
     91  n.textContent = "Hello!";
     92  r.setStart(n, 0);
     93  r.setEnd(n, 6);
     94  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
     95  ok(r.toString() == "Hello!", "Range should be 'Hello!'");
     96  ok(r.collapsed == false, "Range shouldn't be collapsed");
     97 
     98  n.replaceData(0, 6, "hELLO?");
     99  ok(n.nodeValue == "hELLO?", "Node value should be 'hELLO?'");
    100  ok(r.toString() == "", "Range should be ''");
    101  ok(r.collapsed == true, "Range should be collapsed");
    102 
    103  n.textContent = "Hello!";
    104  r.setStart(n, 1);
    105  r.setEnd(n, 3);
    106  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
    107  ok(r.toString() == "el", "Range should be 'el'");
    108  ok(r.collapsed == false, "Range shouldn't be collapsed");
    109 
    110  n.replaceData(2, 6, "END");
    111  ok(n.nodeValue == "HeEND", "Node value should be 'HeEND!'");
    112  ok(r.toString() == "e", "Range should be 'e'");
    113  ok(r.collapsed == false, "Range shouldn't be collapsed");
    114 
    115  n.textContent = "Hello!";
    116  r.setStart(n, 1);
    117  r.setEnd(n, 5);
    118  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
    119  ok(r.toString() == "ello", "Range should be 'ello'");
    120  ok(r.collapsed == false, "Range shouldn't be collapsed");
    121 
    122  n.replaceData(2, 1, "MID");
    123  ok(n.nodeValue == "HeMIDlo!", "Node value should be 'HeMIDlo!'");
    124  ok(r.toString() == "eMIDlo", "Range should be 'eMIDlo'");
    125  ok(r.collapsed == false, "Range shouldn't be collapsed");
    126 
    127  n.textContent = "Hello!";
    128  r.setStart(n, 0);
    129  r.setEnd(n, 6);
    130  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
    131  ok(r.toString() == "Hello!", "Range should be 'Hello!'");
    132  ok(r.collapsed == false, "Range shouldn't be collapsed");
    133 
    134  n.textContent = "hELLO?...";
    135  ok(n.nodeValue == "hELLO?...", "Node value should be 'hELLO?...'");
    136  ok(r.toString() == "", "Range should be ''");
    137  ok(r.collapsed == true, "Range should be collapsed");
    138 
    139  n.textContent = "Hello!";
    140  r.setStart(n, 1);
    141  r.setEnd(n, 6);
    142  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
    143  ok(r.toString() == "ello!", "Range should be 'ello!'");
    144  ok(r.collapsed == false, "Range shouldn't be collapsed");
    145 
    146  n.textContent = "Hello!";
    147  r.setStart(n, 0);
    148  r.setEnd(n, 5);
    149  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
    150  ok(r.toString() == "Hello", "Range should be 'Hello'");
    151  ok(r.collapsed == false, "Range shouldn't be collapsed");
    152 
    153  n.textContent = "hELLO?...";
    154  ok(n.nodeValue == "hELLO?...", "Node value should be 'hELLO?...'");
    155  ok(r.toString() == "", "Range should be ''");
    156  ok(r.collapsed == true, "Range should be collapsed");
    157 
    158  n.textContent = "Hello!";
    159  r.setStart(n, 0);
    160  r.setEnd(n, 5);
    161  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
    162  ok(r.toString() == "Hello", "Range should be 'Hello'");
    163  ok(r.collapsed == false, "Range shouldn't be collapsed");
    164 
    165  n.textContent = "...";
    166  ok(n.nodeValue == "...", "Node value should be '...'");
    167  ok(r.toString() == "", "Range should be ''");
    168  ok(r.collapsed == true, "Range should be collapsed");
    169 
    170  n.textContent = "Hello!";
    171  r.setStart(n, 1);
    172  r.setEnd(n, 5);
    173  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
    174  ok(r.toString() == "ello", "Range should be 'ello'");
    175  ok(r.collapsed == false, "Range shouldn't be collapsed");
    176 
    177  n.textContent = "...";
    178  ok(n.nodeValue == "...", "Node value should be '...'");
    179  ok(r.toString() == "", "Range should be ''");
    180  ok(r.collapsed == true, "Range should be collapsed");
    181 
    182  n.textContent = "$";
    183  r.setStart(n, 0);
    184  r.setEnd(n, 1);
    185  ok(n.nodeValue == "$", "Node value should be $'");
    186  ok(r.toString() == "$", "Range should be '$'");
    187  ok(r.collapsed == false, "Range shouldn't be collapsed");
    188 
    189  n.textContent = "?";
    190  ok(n.nodeValue == "?", "Node value should be '?'");
    191  ok(r.toString() == "", "Range should be ''");
    192  ok(r.collapsed == true, "Range should be collapsed");
    193 
    194  n.textContent = "Hello!";
    195  r.setStart(n, 3);
    196  r.setEnd(n, 6);
    197  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
    198  ok(r.toString() == "lo!", "Range should be 'lo!'");
    199  ok(r.collapsed == false, "Range shouldn't be collapsed");
    200 
    201  n.replaceData(1, 4, "MID");
    202  ok(n.nodeValue == "HMID!", "Node value should be 'HMID!'");
    203  ok(r.toString() == "MID!", "Range should be 'MID!'");
    204  ok(r.collapsed == false, "Range shouldn't be collapsed");
    205 
    206  n.textContent = "Hello!";
    207  r.setStart(n, 3);
    208  r.setEnd(n, 6);
    209  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
    210  ok(r.toString() == "lo!", "Range should be 'lo!'");
    211  ok(r.collapsed == false, "Range shouldn't be collapsed");
    212 
    213  n.replaceData(1, 2, "MID");
    214  ok(n.nodeValue == "HMIDlo!", "Node value should be 'HMIDlo!'");
    215  ok(r.toString() == "MIDlo!", "Range should be 'MIDlo!'");
    216  ok(r.collapsed == false, "Range shouldn't be collapsed");
    217 
    218  n.textContent = "Hello!";
    219  r = document.createRange();
    220  r.setStart(n, 6);
    221  r.setEnd(n, 6);
    222  ok(n.nodeValue == "Hello!", " Node value should be 'Hello!'");
    223  ok(r.toString() == "", " Range should be ''");
    224  ok(r.startOffset == 6, "Start offset should be 6");
    225  ok(r.endOffset == 6, "End offset should be 6");
    226 
    227  n.textContent = "Hello!";
    228  ok(n.nodeValue == "Hello!", " Node value should be 'Hello!'");
    229  ok(r.toString() == "", " Range should be ''");
    230  ok(r.startOffset == 0, "Start offset should be 0");
    231  ok(r.endOffset == 0, "End offset should be 0");
    232 }
    233 
    234 tests();
    235 
    236 </script>
    237 </pre>
    238 </body>
    239 </html>