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