Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
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 type="text/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=415860">Mozilla Bug 415860</a>
13 <p id="display"></p>
14 <div id="content" style="display: none">
16 </div>
17 <div id="testdata"> </div>
18 <pre id="test">
19 <script class="testbody" type="text/javascript">
21 /** Test for Bug 415860 **/
23 function tests() {
24 // #text node
25 n = document.getElementById('testdata').firstChild;
26 s = getSelection();
28 // Initial text..
29 n.textContent = "Hello!";
31 // select the second last character
32 r = document.createRange();
33 r.setStart(n, 4);
34 r.setEnd(n, 5);
35 s.addRange(r);
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!'");
42 // Update the text
43 n.textContent = "Hello!";
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!'");
50 // select the last character
51 r = document.createRange();
52 r.setStart(n, 5);
53 r.setEnd(n, 6);
54 s.addRange(r);
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!'");
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!'");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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 }
234 tests();
236 </script>
237 </pre>
238 </body>
239 </html>