1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/base/test/test_bug469020.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,128 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<!-- 1.7 +https://bugzilla.mozilla.org/show_bug.cgi?id=469020 1.8 +--> 1.9 +<head> 1.10 + <title>Test for Bug 469020</title> 1.11 + <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.12 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 1.13 +</head> 1.14 +<body> 1.15 +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=469020">Mozilla Bug 469020</a> 1.16 +<p id="display"></p> 1.17 +<div id="content" style="display: none"> 1.18 + 1.19 +</div> 1.20 +<pre id="test"> 1.21 +<script type="application/javascript"> 1.22 + 1.23 +/** Test for Bug 469020 **/ 1.24 + 1.25 + var range = null; 1.26 + var anchor = null; 1.27 + 1.28 + function doRangeAnchor(elem, start, end) { 1.29 + range = document.createRange(); 1.30 + range.setStart(elem.firstChild, start); 1.31 + end = end < elem.lastChild.length ? end : elem.lastChild.length 1.32 + range.setEnd(elem.lastChild, end); 1.33 + anchor = document.createElement('a'); 1.34 + anchor.href = "javascript: void(0);"; 1.35 + range.surroundContents(anchor); 1.36 + } 1.37 + 1.38 + function undoRangeAnchor() { 1.39 + var pnode = anchor.parentNode; 1.40 + var range2 = document.createRange(); 1.41 + range2.selectNodeContents(anchor); 1.42 + var contents = range2.extractContents(); 1.43 + pnode.replaceChild(contents,anchor); 1.44 + } 1.45 + 1.46 +function serializeNode(node) { 1.47 + var s; 1.48 + var isElem = false; 1.49 + if (node.nodeName == "#text") { 1.50 + if (node.nodeValue) { 1.51 + s = node.nodeValue 1.52 + } else { 1.53 + s = "<#empty>" 1.54 + } 1.55 + } else { 1.56 + isElem = true; 1.57 + s = "<" + node.nodeName + ">"; 1.58 + } 1.59 + for (var j = 0; j < node.childNodes.length; ++j) { 1.60 + s += serializeNode(node.childNodes[j]); 1.61 + } 1.62 + if (isElem) { 1.63 + s += "</" + node.nodeName + ">"; 1.64 + } 1.65 + return s; 1.66 +} 1.67 + 1.68 +function runTest(elementID, start, end, expected1, expected2, expected3) { 1.69 + var e = document.getElementById(elementID); 1.70 + doRangeAnchor(e, start, end); 1.71 + is(serializeNode(e), expected1, "Wrong range behavior!"); 1.72 + document.getElementById('log').textContent += serializeNode(e) + "\n"; 1.73 + undoRangeAnchor(); 1.74 + is(serializeNode(e), expected2, "Wrong range behavior!"); 1.75 + document.getElementById('log').textContent += serializeNode(e) + "\n"; 1.76 + doRangeAnchor(e, start, end); 1.77 + is(serializeNode(e), expected3, "Wrong range behavior!"); 1.78 + document.getElementById('log').textContent += serializeNode(e) + "\n"; 1.79 +} 1.80 + 1.81 +function runTests() { 1.82 + runTest("test1", 0, 3, 1.83 + "<P><#empty><A>http://www.<SPAN>mozilla.</SPAN>org</A><#empty></P>", 1.84 + "<P><#empty>http://www.<SPAN>mozilla.</SPAN>org<#empty></P>", 1.85 + "<P><#empty><A><#empty>http://www.<SPAN>mozilla.</SPAN>org<#empty></A><#empty></P>"); 1.86 + 1.87 + runTest("test2", 1, 3, 1.88 + "<P>h<A>ttp://www.<SPAN>mozilla.</SPAN>org</A><#empty></P>", 1.89 + "<P>http://www.<SPAN>mozilla.</SPAN>org<#empty></P>", 1.90 + "<P>h<A><#empty>ttp://www.<SPAN>mozilla.</SPAN>org<#empty></A><#empty></P>"); 1.91 + 1.92 + runTest("test3", 0, 2, 1.93 + "<P><#empty><A>http://www.<SPAN>mozilla.</SPAN>or</A>g</P>", 1.94 + "<P><#empty>http://www.<SPAN>mozilla.</SPAN>org</P>", 1.95 + "<P><#empty><A><#empty>http://www.<SPAN>mozilla.</SPAN>org</A><#empty></P>"); 1.96 + 1.97 + runTest("test4", 1, 2, 1.98 + "<P>h<A>ttp://www.<SPAN>mozilla.</SPAN>or</A>g</P>", 1.99 + "<P>http://www.<SPAN>mozilla.</SPAN>org</P>", 1.100 + "<P>h<A><#empty>ttp://www.<SPAN>mozilla.</SPAN>org</A><#empty></P>"); 1.101 + 1.102 + runTest("test5", 11, 0, 1.103 + "<P>http://www.<A><#empty><SPAN>mozilla.</SPAN><#empty></A>org</P>", 1.104 + "<P>http://www.<#empty><SPAN>mozilla.</SPAN><#empty>org</P>", 1.105 + "<P>http://www.<A><#empty><#empty><SPAN>mozilla.</SPAN><#empty><#empty></A>org</P>"); 1.106 + 1.107 + runTest("test6", 10, 1, 1.108 + "<P>http://www<A>.<SPAN>mozilla.</SPAN>o</A>rg</P>", 1.109 + "<P>http://www.<SPAN>mozilla.</SPAN>org</P>", 1.110 + "<P>http://www<A><#empty>.<SPAN>mozilla.</SPAN>or</A>g</P>"); 1.111 + 1.112 + SimpleTest.finish(); 1.113 +} 1.114 + 1.115 +SimpleTest.waitForExplicitFinish(); 1.116 +addLoadEvent(runTests); 1.117 + 1.118 + 1.119 + 1.120 +</script> 1.121 +</pre> 1.122 +<p id="test1">http://www.<span>mozilla.</span>org</p> 1.123 +<p id="test2">http://www.<span>mozilla.</span>org</p> 1.124 +<p id="test3">http://www.<span>mozilla.</span>org</p> 1.125 +<p id="test4">http://www.<span>mozilla.</span>org</p> 1.126 +<p id="test5">http://www.<span>mozilla.</span>org</p> 1.127 +<p id="test6">http://www.<span>mozilla.</span>org</p> 1.128 +<pre id="log"> 1.129 +</pre> 1.130 +</body> 1.131 +</html>