content/base/test/test_bug469020.html

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     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 type="application/javascript" 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">
    16 </div>
    17 <pre id="test">
    18 <script type="application/javascript">
    20 /** Test for Bug 469020 **/
    22   var range = null;
    23   var anchor = null;
    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   }
    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   }
    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 }
    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 }
    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>");
    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>");
    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>");
    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>");
    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>");
   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>");
   109   SimpleTest.finish();
   110 }
   112 SimpleTest.waitForExplicitFinish();
   113 addLoadEvent(runTests);
   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>

mercurial