tor-browser

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

test_bug469020.html (4186B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=469020
      5 -->
      6 <head>
      7  <title>Test for Bug 469020</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=469020">Mozilla Bug 469020</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 469020 */
     21 
     22  var range = null;
     23  var anchor = null;
     24 
     25  function doRangeAnchor(elem, start, end) {
     26    range = document.createRange();
     27    range.setStart(elem.firstChild, start);
     28    end = end < elem.lastChild.length ? end : elem.lastChild.length
     29    range.setEnd(elem.lastChild, end);
     30    anchor = document.createElement('a');
     31    anchor.href = "javascript: void(0);";
     32    range.surroundContents(anchor);
     33  }
     34 
     35  function undoRangeAnchor() {
     36    var pnode = anchor.parentNode;
     37    var range2 = document.createRange();
     38    range2.selectNodeContents(anchor);
     39    var contents = range2.extractContents();
     40    pnode.replaceChild(contents,anchor);
     41  }
     42 
     43 function serializeNode(node) {
     44  var s;
     45  var isElem = false;
     46  if (node.nodeName == "#text") {
     47    if (node.nodeValue) {
     48      s = node.nodeValue
     49    } else {
     50      s = "<#empty>"
     51    }
     52  } else {
     53    isElem = true;
     54    s = "<" + node.nodeName + ">";
     55  }
     56  for (var j = 0; j < node.childNodes.length; ++j) {
     57    s += serializeNode(node.childNodes[j]);
     58  }
     59  if (isElem) {
     60    s += "</" + node.nodeName + ">";
     61  }
     62  return s;
     63 }
     64 
     65 function runTest(elementID, start, end, expected1, expected2, expected3) {
     66  var e = document.getElementById(elementID);
     67  doRangeAnchor(e, start, end);
     68  is(serializeNode(e), expected1, "Wrong range behavior!");
     69  document.getElementById('log').textContent += serializeNode(e) + "\n";
     70  undoRangeAnchor();
     71  is(serializeNode(e), expected2, "Wrong range behavior!");
     72  document.getElementById('log').textContent += serializeNode(e) + "\n";
     73  doRangeAnchor(e, start, end);
     74  is(serializeNode(e), expected3, "Wrong range behavior!");
     75  document.getElementById('log').textContent += serializeNode(e) + "\n";
     76 }
     77 
     78 function runTests() {
     79  runTest("test1", 0, 3,
     80          "<P><#empty><A>http://www.<SPAN>mozilla.</SPAN>org</A><#empty></P>",
     81          "<P><#empty>http://www.<SPAN>mozilla.</SPAN>org<#empty></P>",
     82          "<P><#empty><A><#empty>http://www.<SPAN>mozilla.</SPAN>org<#empty></A><#empty></P>");
     83 
     84  runTest("test2", 1, 3,
     85          "<P>h<A>ttp://www.<SPAN>mozilla.</SPAN>org</A><#empty></P>",
     86          "<P>http://www.<SPAN>mozilla.</SPAN>org<#empty></P>",
     87          "<P>h<A><#empty>ttp://www.<SPAN>mozilla.</SPAN>org<#empty></A><#empty></P>");
     88 
     89  runTest("test3", 0, 2,
     90          "<P><#empty><A>http://www.<SPAN>mozilla.</SPAN>or</A>g</P>",
     91          "<P><#empty>http://www.<SPAN>mozilla.</SPAN>org</P>",
     92          "<P><#empty><A><#empty>http://www.<SPAN>mozilla.</SPAN>org</A><#empty></P>");
     93 
     94  runTest("test4", 1, 2,
     95          "<P>h<A>ttp://www.<SPAN>mozilla.</SPAN>or</A>g</P>",
     96          "<P>http://www.<SPAN>mozilla.</SPAN>org</P>",
     97          "<P>h<A><#empty>ttp://www.<SPAN>mozilla.</SPAN>org</A><#empty></P>");
     98 
     99  runTest("test5", 11, 0,
    100          "<P>http://www.<A><#empty><SPAN>mozilla.</SPAN><#empty></A>org</P>",
    101          "<P>http://www.<#empty><SPAN>mozilla.</SPAN><#empty>org</P>",
    102          "<P>http://www.<A><#empty><#empty><SPAN>mozilla.</SPAN><#empty><#empty></A>org</P>");
    103 
    104  runTest("test6", 10, 1,
    105          "<P>http://www<A>.<SPAN>mozilla.</SPAN>o</A>rg</P>",
    106          "<P>http://www.<SPAN>mozilla.</SPAN>org</P>",
    107          "<P>http://www<A><#empty>.<SPAN>mozilla.</SPAN>or</A>g</P>");
    108 
    109  SimpleTest.finish();
    110 }
    111 
    112 SimpleTest.waitForExplicitFinish();
    113 addLoadEvent(runTests);
    114 
    115 
    116 
    117 </script>
    118 </pre>
    119 <p id="test1">http://www.<span>mozilla.</span>org</p>
    120 <p id="test2">http://www.<span>mozilla.</span>org</p>
    121 <p id="test3">http://www.<span>mozilla.</span>org</p>
    122 <p id="test4">http://www.<span>mozilla.</span>org</p>
    123 <p id="test5">http://www.<span>mozilla.</span>org</p>
    124 <p id="test6">http://www.<span>mozilla.</span>org</p>
    125 <pre id="log">
    126 </pre>
    127 </body>
    128 </html>