|
1 <!DOCTYPE HTML> |
|
2 <html> |
|
3 <head> |
|
4 <!-- |
|
5 https://bugzilla.mozilla.org/show_bug.cgi?id=445886 |
|
6 --> |
|
7 <meta http-equiv="Content-type" content="text/html; charset=gb18030"> |
|
8 <title>Test for Unicode non-characters</title> |
|
9 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> |
|
10 <link rel="stylesheet" type="text/css" |
|
11 href="/tests/SimpleTest/test.css"> |
|
12 </head> |
|
13 <body onload="Inject()"> |
|
14 <pre id="test"><script class="testbody" type="text/javascript"> |
|
15 |
|
16 /** Test that unicode non-characters are not discarded **/ |
|
17 function test() |
|
18 { |
|
19 is($("display").innerHTML, "All good.", "Noncharacters not stripped"); |
|
20 SimpleTest.finish(); |
|
21 } |
|
22 |
|
23 function Inject() |
|
24 { |
|
25 // script fragments containing Unicode non-characters |
|
26 try { |
|
27 // U+FDD0 |
|
28 eval("$(\"display\").innerHTML += \" U+FDD0 is evil \""); |
|
29 } catch(e) {} |
|
30 try { |
|
31 // U+FDD1 |
|
32 eval("$(\"display\").innerHTML += \" U+FDD1 is evil \""); |
|
33 } catch(e) {} |
|
34 try { |
|
35 // U+FDD2 |
|
36 eval("$(\"display\").innerHTML += \" U+FDD2 is evil \""); |
|
37 } catch(e) {} |
|
38 try { |
|
39 // U+FDD3 |
|
40 eval("$(\"display\").innerHTML += \" U+FDD3 is evil \""); |
|
41 } catch(e) {} |
|
42 try { |
|
43 // U+FDD4 |
|
44 eval("$(\"display\").innerHTML += \" U+FDD4 is evil \""); |
|
45 } catch(e) {} |
|
46 try { |
|
47 // U+FDD5 |
|
48 eval("$(\"display\").innerHTML += \" U+FDD5 is evil \""); |
|
49 } catch(e) {} |
|
50 try { |
|
51 // U+FDD6 |
|
52 eval("$(\"display\").innerHTML += \" U+FDD6 is evil \""); |
|
53 } catch(e) {} |
|
54 try { |
|
55 // U+FDD7 |
|
56 eval("$(\"display\").innerHTML += \" U+FDD7 is evil \""); |
|
57 } catch(e) {} |
|
58 try { |
|
59 // U+FDD8 |
|
60 eval("$(\"display\").innerHTML += \" U+FDD8 is evil \""); |
|
61 } catch(e) {} |
|
62 try { |
|
63 // U+FDD9 |
|
64 eval("$(\"display\").innerHTML += \" U+FDD9 is evil \""); |
|
65 } catch(e) {} |
|
66 try { |
|
67 // U+FDDA |
|
68 eval("$(\"display\").innerHTML += \" U+FDDA is evil \""); |
|
69 } catch(e) {} |
|
70 try { |
|
71 // U+FDDB |
|
72 eval("$(\"display\").innerHTML += \" U+FDDB is evil \""); |
|
73 } catch(e) {} |
|
74 try { |
|
75 // U+FDDC |
|
76 eval("$(\"display\").innerHTML += \" U+FDDC is evil \""); |
|
77 } catch(e) {} |
|
78 try { |
|
79 // U+FDDD |
|
80 eval("$(\"display\").innerHTML += \" U+FDDD is evil \""); |
|
81 } catch(e) {} |
|
82 try { |
|
83 // U+FDDE |
|
84 eval("$(\"display\").innerHTML += \" U+FDDE is evil \""); |
|
85 } catch(e) {} |
|
86 try { |
|
87 // U+FDDF |
|
88 eval("$(\"display\").innerHTML += \" U+FDDF is evil \""); |
|
89 } catch(e) {} |
|
90 try { |
|
91 // U+FDE0 |
|
92 eval("$(\"display\").innerHTML += \" U+FDE0 is evil \""); |
|
93 } catch(e) {} |
|
94 try { |
|
95 // U+FDE1 |
|
96 eval("$(\"display\").innerHTML += \" U+FDE1 is evil \""); |
|
97 } catch(e) {} |
|
98 try { |
|
99 // U+FDE2 |
|
100 eval("$(\"display\").innerHTML += \" U+FDE2 is evil \""); |
|
101 } catch(e) {} |
|
102 try { |
|
103 // U+FDE3 |
|
104 eval("$(\"display\").innerHTML += \" U+FDE3 is evil \""); |
|
105 } catch(e) {} |
|
106 try { |
|
107 // U+FDE4 |
|
108 eval("$(\"display\").innerHTML += \" U+FDE4 is evil \""); |
|
109 } catch(e) {} |
|
110 try { |
|
111 // U+FDE5 |
|
112 eval("$(\"display\").innerHTML += \" U+FDE5 is evil \""); |
|
113 } catch(e) {} |
|
114 try { |
|
115 // U+FDE6 |
|
116 eval("$(\"display\").innerHTML += \" U+FDE6 is evil \""); |
|
117 } catch(e) {} |
|
118 try { |
|
119 // U+FDE7 |
|
120 eval("$(\"display\").innerHTML += \" U+FDE7 is evil \""); |
|
121 } catch(e) {} |
|
122 try { |
|
123 // U+FDE8 |
|
124 eval("$(\"display\").innerHTML += \" U+FDE8 is evil \""); |
|
125 } catch(e) {} |
|
126 try { |
|
127 // U+FDE9 |
|
128 eval("$(\"display\").innerHTML += \" U+FDE9 is evil \""); |
|
129 } catch(e) {} |
|
130 try { |
|
131 // U+FDEA |
|
132 eval("$(\"display\").innerHTML += \" U+FDEA is evil \""); |
|
133 } catch(e) {} |
|
134 try { |
|
135 // U+FDEB |
|
136 eval("$(\"display\").innerHTML += \" U+FDEB is evil \""); |
|
137 } catch(e) {} |
|
138 try { |
|
139 // U+FDEC |
|
140 eval("$(\"display\").innerHTML += \" U+FDEC is evil \""); |
|
141 } catch(e) {} |
|
142 try { |
|
143 // U+FDED |
|
144 eval("$(\"display\").innerHTML += \" U+FDED is evil \""); |
|
145 } catch(e) {} |
|
146 try { |
|
147 // U+FDEE |
|
148 eval("$(\"display\").innerHTML += \" U+FDEE is evil \""); |
|
149 } catch(e) {} |
|
150 try { |
|
151 // U+FDEF |
|
152 eval("$(\"display\").innerHTML += \" U+FDEF is evil \""); |
|
153 } catch(e) {} |
|
154 try { |
|
155 // U+FFFE |
|
156 eval("$(\"display\").innerHTML += \" U+FFFE is evil \""); |
|
157 } catch(e) {} |
|
158 try { |
|
159 // U+FFFF |
|
160 eval("$(\"display\").innerHTML += \" U+FFFF is evil \""); |
|
161 } catch(e) {} |
|
162 try { |
|
163 // U+1FFFE |
|
164 eval("$(\"display\").innerHTML += \" U+1FFFE is evil \""); |
|
165 } catch(e) {} |
|
166 try { |
|
167 // U+1FFFF |
|
168 eval("$(\"display\").innerHTML += \" U+1FFFF is evil \""); |
|
169 } catch(e) {} |
|
170 try { |
|
171 // U+2FFFE |
|
172 eval("$(\"display\").innerHTML += \" U+2FFFE is evil \""); |
|
173 } catch(e) {} |
|
174 try { |
|
175 // U+2FFFF |
|
176 eval("$(\"display\").innerHTML += \" U+2FFFF is evil \""); |
|
177 } catch(e) {} |
|
178 try { |
|
179 // U+3FFFE |
|
180 eval("$(\"display\").innerHTML += \" U+3FFFE is evil \""); |
|
181 } catch(e) {} |
|
182 try { |
|
183 // U+3FFFF |
|
184 eval("$(\"display\").innerHTML += \" U+3FFFF is evil \""); |
|
185 } catch(e) {} |
|
186 try { |
|
187 // U+4FFFE |
|
188 eval("$(\"display\").innerHTML += \" U+4FFFE is evil \""); |
|
189 } catch(e) {} |
|
190 try { |
|
191 // U+4FFFF |
|
192 eval("$(\"display\").innerHTML += \" U+4FFFF is evil \""); |
|
193 } catch(e) {} |
|
194 try { |
|
195 // U+5FFFE |
|
196 eval("$(\"display\").innerHTML += \" U+5FFFE is evil \""); |
|
197 } catch(e) {} |
|
198 try { |
|
199 // U+5FFFF |
|
200 eval("$(\"display\").innerHTML += \" U+5FFFF is evil \""); |
|
201 } catch(e) {} |
|
202 try { |
|
203 // U+6FFFE |
|
204 eval("$(\"display\").innerHTML += \" U+6FFFE is evil \""); |
|
205 } catch(e) {} |
|
206 try { |
|
207 // U+6FFFF |
|
208 eval("$(\"display\").innerHTML += \" U+6FFFF is evil \""); |
|
209 } catch(e) {} |
|
210 try { |
|
211 // U+7FFFE |
|
212 eval("$(\"display\").innerHTML += \" U+7FFFE is evil \""); |
|
213 } catch(e) {} |
|
214 try { |
|
215 // U+7FFFF |
|
216 eval("$(\"display\").innerHTML += \" U+7FFFF is evil \""); |
|
217 } catch(e) {} |
|
218 try { |
|
219 // U+8FFFE |
|
220 eval("$(\"display\").innerHTML += \" U+8FFFE is evil \""); |
|
221 } catch(e) {} |
|
222 try { |
|
223 // U+8FFFF |
|
224 eval("$(\"display\").innerHTML += \" U+8FFFF is evil \""); |
|
225 } catch(e) {} |
|
226 try { |
|
227 // U+9FFFE |
|
228 eval("$(\"display\").innerHTML += \" U+9FFFE is evil \""); |
|
229 } catch(e) {} |
|
230 try { |
|
231 // U+9FFFF |
|
232 eval("$(\"display\").innerHTML += \" U+9FFFF is evil \""); |
|
233 } catch(e) {} |
|
234 try { |
|
235 // U+AFFFE |
|
236 eval("$(\"display\").innerHTML += \" U+AFFFE is evil \""); |
|
237 } catch(e) {} |
|
238 try { |
|
239 // U+AFFFF |
|
240 eval("$(\"display\").innerHTML += \" U+AFFFF is evil \""); |
|
241 } catch(e) {} |
|
242 try { |
|
243 // U+BFFFE |
|
244 eval("$(\"display\").innerHTML += \" U+BFFFE is evil \""); |
|
245 } catch(e) {} |
|
246 try { |
|
247 // U+BFFFF |
|
248 eval("$(\"display\").innerHTML += \" U+BFFFF is evil \""); |
|
249 } catch(e) {} |
|
250 try { |
|
251 // U+CFFFE |
|
252 eval("$(\"display\").innerHTML += \" U+CFFFE is evil \""); |
|
253 } catch(e) {} |
|
254 try { |
|
255 // U+CFFFF |
|
256 eval("$(\"display\").innerHTML += \" U+CFFFF is evil \""); |
|
257 } catch(e) {} |
|
258 try { |
|
259 // U+DFFFE |
|
260 eval("$(\"display\").innerHTML += \" U+DFFFE is evil \""); |
|
261 } catch(e) {} |
|
262 try { |
|
263 // U+DFFFF |
|
264 eval("$(\"display\").innerHTML += \" U+DFFFF is evil \""); |
|
265 } catch(e) {} |
|
266 try { |
|
267 // U+EFFFE |
|
268 eval("$(\"display\").innerHTML += \" U+EFFFE is evil \""); |
|
269 } catch(e) {} |
|
270 try { |
|
271 // U+EFFFF |
|
272 eval("$(\"display\").innerHTML += \" U+EFFFF is evil \""); |
|
273 } catch(e) {} |
|
274 try { |
|
275 // U+FFFFE |
|
276 eval("$(\"display\").innerHTML += \" U+FFFFE is evil \""); |
|
277 } catch(e) {} |
|
278 try { |
|
279 // U+FFFFF |
|
280 eval("$(\"display\").innerHTML += \" U+FFFFF is evil \""); |
|
281 } catch(e) {} |
|
282 try { |
|
283 // U+10FFFE |
|
284 eval("$(\"display\").innerHTML += \" U+10FFFE is evil \""); |
|
285 } catch(e) {} |
|
286 try { |
|
287 // U+10FFFF |
|
288 eval("$(\"display\").innerHTML += \" U+10FFFF is evil \""); |
|
289 } catch(e) {} |
|
290 test(); |
|
291 } |
|
292 |
|
293 SimpleTest.waitForExplicitFinish(); |
|
294 </script> |
|
295 </pre> |
|
296 <a target="_blank" |
|
297 href="https://bugzilla.mozilla.org/show_bug.cgi?id=445886">Mozilla Bug |
|
298 445886</a> |
|
299 <p id="display">All good.</p> |
|
300 <div id="content" style="display: none;"></div> |
|
301 </body> |
|
302 </html> |