1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/base/test/test_bug682463.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,156 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<!-- 1.7 +https://bugzilla.mozilla.org/show_bug.cgi?id=682463 1.8 +--> 1.9 +<head> 1.10 + <title>Test for Bug 682463</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=682463">Mozilla Bug 682463</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 682463 **/ 1.24 + 1.25 + function text(s) { 1.26 + return document.createTextNode(s); 1.27 + } 1.28 + function div(l,r) { 1.29 + var div = document.createElement("DIV"); 1.30 + if (l) div.appendChild(l); 1.31 + if (r) div.appendChild(r); 1.32 + return div; 1.33 + } 1.34 + function createRange(sn,so,en,eo) { 1.35 + var r = document.createRange(); 1.36 + r.setStart(sn,so); 1.37 + r.setEnd(en,eo); 1.38 + return r; 1.39 + } 1.40 + function verifyRange(msg,r,sn,so,en,eo) { 1.41 + ok(r.startContainer == sn && r.startOffset == so && 1.42 + r.endContainer == en && r.endOffset == eo, msg); 1.43 + } 1.44 + function showRange(r,msg) { 1.45 + var s = "" + r.startContainer + ": " + r.startOffset; 1.46 + s+= '\n'; 1.47 + s += "" + r.endContainer + ": " + r.endOffset; 1.48 + alert(msg + ':\n' + s) 1.49 + } 1.50 + 1.51 + var tests = [ 1.52 + function() { 1.53 + var t = text("foobar"); 1.54 + var r = createRange(t,2,t,t.length); 1.55 + var t2 = t.splitText(1); 1.56 + verifyRange("split before, no parent",r,t2,1,t2,5); 1.57 + }, 1.58 + function() { 1.59 + var t = text("foobar"); 1.60 + var r = createRange(t,0,t,t.length); 1.61 + var t2 = t.splitText(3); 1.62 + verifyRange("split middle, no parent",r,t,0,t,3); 1.63 + }, 1.64 + function() { 1.65 + var t = text("foobar"); 1.66 + var r = createRange(t,0,t,t.length); 1.67 + var n = t.length; 1.68 + var t2 = t.splitText(n); 1.69 + verifyRange("split after, no parent",r,t,0,t,n); 1.70 + }, 1.71 + function() { 1.72 + var t = text("foobar"); 1.73 + var parent = div(t); 1.74 + var r = createRange(t,0,t,t.length); 1.75 + var t2 = t.splitText(3); 1.76 + verifyRange("split middle, parent",r,t,0,t2,3); 1.77 + parent.removeChild(t); 1.78 + verifyRange("removed left, parent",r,parent,0,t2,3); 1.79 + var t2b = t2.splitText(1); 1.80 + verifyRange("split middle, parent, end",r,parent,0,t2b,2); 1.81 + }, 1.82 + function() { 1.83 + var t0 = text("x"); 1.84 + var t = text("foobar"); 1.85 + var parent = div(t0,t); 1.86 + var r = createRange(t,0,t,t.length); 1.87 + var t2 = t.splitText(3); 1.88 + parent.removeChild(t); 1.89 + verifyRange("removed left, text sibling",r,parent,1,t2,3); 1.90 + }, 1.91 + function() { 1.92 + var t = text("foobar"); 1.93 + var parent = div(t); 1.94 + var r = createRange(t,2,t,t.length); 1.95 + var t2 = t.splitText(1); 1.96 + verifyRange("split before, parent",r,t2,1,t2,5); 1.97 + parent.removeChild(t2); 1.98 + verifyRange("removed right, parent",r,parent,1,parent,1); 1.99 + }, 1.100 + function() { 1.101 + var t = text("foobar"); 1.102 + var parent = div(t); 1.103 + var r = createRange(t,0,t,t.length); 1.104 + var n = t.length; 1.105 + var t2 = t.splitText(n); 1.106 + verifyRange("split after, parent",r,t,0,t,n); 1.107 + r.setEnd(t2,0); 1.108 + verifyRange("split after, parent, extend",r,t,0,t2,0); 1.109 + t2.splitText(0); 1.110 + verifyRange("split after, parent, extend, split end",r,t,0,t2,0); 1.111 + t2.textContent = "baz"; 1.112 + t2.splitText(2); 1.113 + verifyRange("split after, parent, extend, split after end",r,t,0,t2,0); 1.114 + r.setEnd(t2,2); 1.115 + var t2b = t2.splitText(1); 1.116 + verifyRange("split after, parent, split end",r,t,0,t2b,1); 1.117 + }, 1.118 + function() { 1.119 + var t = text("foobar"); 1.120 + var parent = div(t); 1.121 + document.body.appendChild(parent); 1.122 + var r = createRange(t,0,t,t.length); 1.123 + var t2 = t.splitText(3); 1.124 + verifyRange("split middle, in document",r,t,0,t2,3); 1.125 + }, 1.126 + function() { 1.127 + var t = text("foobar"); 1.128 + var parent = div(t); 1.129 + document.body.appendChild(parent); 1.130 + var r = createRange(t,2,t,t.length); 1.131 + var t2 = t.splitText(1); 1.132 + verifyRange("split before, in document",r,t2,1,t2,5); 1.133 + }, 1.134 + function() { 1.135 + var t = text("foobar"); 1.136 + var parent = div(t); 1.137 + document.body.appendChild(parent); 1.138 + var r = createRange(t,0,t,t.length); 1.139 + var n = t.length; 1.140 + var t2 = t.splitText(n); 1.141 + verifyRange("split after, in document",r,t,0,t,n); 1.142 + } 1.143 + ]; 1.144 + 1.145 + function runTests() { 1.146 + var len = tests.length; 1.147 + for (var i = 0; i < len; ++i) { 1.148 + tests[i](); 1.149 + } 1.150 + SimpleTest.finish(); 1.151 + } 1.152 + 1.153 +addLoadEvent(runTests); 1.154 +SimpleTest.waitForExplicitFinish(); 1.155 + 1.156 +</script> 1.157 +</pre> 1.158 +</body> 1.159 +</html>