| OLD | NEW |
| 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 var value; | 104 var value; |
| 105 var o0 = octets[0]; | 105 var o0 = octets[0]; |
| 106 if (o0 < 0x80) { | 106 if (o0 < 0x80) { |
| 107 value = o0; | 107 value = o0; |
| 108 } else if (o0 < 0xc2) { | 108 } else if (o0 < 0xc2) { |
| 109 throw new $URIError("URI malformed"); | 109 throw new $URIError("URI malformed"); |
| 110 } else { | 110 } else { |
| 111 var o1 = octets[1]; | 111 var o1 = octets[1]; |
| 112 if (o0 < 0xe0) { | 112 if (o0 < 0xe0) { |
| 113 var a = o0 & 0x1f; | 113 var a = o0 & 0x1f; |
| 114 if ((o1 < 0x80) || (o1 > 0xbf)) | 114 if ((o1 < 0x80) || (o1 > 0xbf)) { |
| 115 throw new $URIError("URI malformed"); | 115 throw new $URIError("URI malformed"); |
| 116 } |
| 116 var b = o1 & 0x3f; | 117 var b = o1 & 0x3f; |
| 117 value = (a << 6) + b; | 118 value = (a << 6) + b; |
| 118 if (value < 0x80 || value > 0x7ff) | 119 if (value < 0x80 || value > 0x7ff) { |
| 119 throw new $URIError("URI malformed"); | 120 throw new $URIError("URI malformed"); |
| 121 } |
| 120 } else { | 122 } else { |
| 121 var o2 = octets[2]; | 123 var o2 = octets[2]; |
| 122 if (o0 < 0xf0) { | 124 if (o0 < 0xf0) { |
| 123 var a = o0 & 0x0f; | 125 var a = o0 & 0x0f; |
| 124 if ((o1 < 0x80) || (o1 > 0xbf)) | 126 if ((o1 < 0x80) || (o1 > 0xbf)) { |
| 125 throw new $URIError("URI malformed"); | 127 throw new $URIError("URI malformed"); |
| 128 } |
| 126 var b = o1 & 0x3f; | 129 var b = o1 & 0x3f; |
| 127 if ((o2 < 0x80) || (o2 > 0xbf)) | 130 if ((o2 < 0x80) || (o2 > 0xbf)) { |
| 128 throw new $URIError("URI malformed"); | 131 throw new $URIError("URI malformed"); |
| 132 } |
| 129 var c = o2 & 0x3f; | 133 var c = o2 & 0x3f; |
| 130 value = (a << 12) + (b << 6) + c; | 134 value = (a << 12) + (b << 6) + c; |
| 131 if ((value < 0x800) || (value > 0xffff)) | 135 if ((value < 0x800) || (value > 0xffff)) { |
| 132 throw new $URIError("URI malformed"); | 136 throw new $URIError("URI malformed"); |
| 137 } |
| 133 } else { | 138 } else { |
| 134 var o3 = octets[3]; | 139 var o3 = octets[3]; |
| 135 if (o0 < 0xf8) { | 140 if (o0 < 0xf8) { |
| 136 var a = (o0 & 0x07); | 141 var a = (o0 & 0x07); |
| 137 if ((o1 < 0x80) || (o1 > 0xbf)) | 142 if ((o1 < 0x80) || (o1 > 0xbf)) { |
| 138 throw new $URIError("URI malformed"); | 143 throw new $URIError("URI malformed"); |
| 144 } |
| 139 var b = (o1 & 0x3f); | 145 var b = (o1 & 0x3f); |
| 140 if ((o2 < 0x80) || (o2 > 0xbf)) | 146 if ((o2 < 0x80) || (o2 > 0xbf)) { |
| 141 throw new $URIError("URI malformed"); | 147 throw new $URIError("URI malformed"); |
| 148 } |
| 142 var c = (o2 & 0x3f); | 149 var c = (o2 & 0x3f); |
| 143 if ((o3 < 0x80) || (o3 > 0xbf)) | 150 if ((o3 < 0x80) || (o3 > 0xbf)) { |
| 144 throw new $URIError("URI malformed"); | 151 throw new $URIError("URI malformed"); |
| 152 } |
| 145 var d = (o3 & 0x3f); | 153 var d = (o3 & 0x3f); |
| 146 value = (a << 18) + (b << 12) + (c << 6) + d; | 154 value = (a << 18) + (b << 12) + (c << 6) + d; |
| 147 if ((value < 0x10000) || (value > 0x10ffff)) | 155 if ((value < 0x10000) || (value > 0x10ffff)) { |
| 148 throw new $URIError("URI malformed"); | 156 throw new $URIError("URI malformed"); |
| 157 } |
| 149 } else { | 158 } else { |
| 150 throw new $URIError("URI malformed"); | 159 throw new $URIError("URI malformed"); |
| 151 } | 160 } |
| 152 } | 161 } |
| 153 } | 162 } |
| 154 } | 163 } |
| 164 if (0xD800 <= value && value <= 0xDFFF) { |
| 165 throw new $URIError("URI malformed"); |
| 166 } |
| 155 if (value < 0x10000) { | 167 if (value < 0x10000) { |
| 156 result[index++] = value; | 168 result[index++] = value; |
| 157 return index; | 169 return index; |
| 158 } else { | 170 } else { |
| 159 result[index++] = (value >> 10) + 0xd7c0; | 171 result[index++] = (value >> 10) + 0xd7c0; |
| 160 result[index++] = (value & 0x3ff) + 0xdc00; | 172 result[index++] = (value & 0x3ff) + 0xdc00; |
| 161 return index; | 173 return index; |
| 162 } | 174 } |
| 163 } | 175 } |
| 164 | 176 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 var cc = URIHexCharsToCharCode(uri.charCodeAt(++k), uri.charCodeAt(++k)); | 219 var cc = URIHexCharsToCharCode(uri.charCodeAt(++k), uri.charCodeAt(++k)); |
| 208 if (cc >> 7) { | 220 if (cc >> 7) { |
| 209 var n = 0; | 221 var n = 0; |
| 210 while (((cc << ++n) & 0x80) != 0) ; | 222 while (((cc << ++n) & 0x80) != 0) ; |
| 211 if (n == 1 || n > 4) throw new $URIError("URI malformed"); | 223 if (n == 1 || n > 4) throw new $URIError("URI malformed"); |
| 212 var octets = new $Array(n); | 224 var octets = new $Array(n); |
| 213 octets[0] = cc; | 225 octets[0] = cc; |
| 214 if (k + 3 * (n - 1) >= uriLength) throw new $URIError("URI malformed"); | 226 if (k + 3 * (n - 1) >= uriLength) throw new $URIError("URI malformed"); |
| 215 for (var i = 1; i < n; i++) { | 227 for (var i = 1; i < n; i++) { |
| 216 if (uri.charAt(++k) != '%') throw new $URIError("URI malformed"); | 228 if (uri.charAt(++k) != '%') throw new $URIError("URI malformed"); |
| 217 octets[i] = URIHexCharsToCharCode(uri.charCodeAt(++k), uri.charCodeAt(
++k)); | 229 octets[i] = URIHexCharsToCharCode(uri.charCodeAt(++k), |
| 230 uri.charCodeAt(++k)); |
| 218 } | 231 } |
| 219 index = URIDecodeOctets(octets, result, index); | 232 index = URIDecodeOctets(octets, result, index); |
| 220 } else { | 233 } else { |
| 221 if (reserved(cc)) { | 234 if (reserved(cc)) { |
| 222 result[index++] = 37; // Char code of '%'. | 235 result[index++] = 37; // Char code of '%'. |
| 223 result[index++] = uri.charCodeAt(k - 1); | 236 result[index++] = uri.charCodeAt(k - 1); |
| 224 result[index++] = uri.charCodeAt(k); | 237 result[index++] = uri.charCodeAt(k); |
| 225 } else { | 238 } else { |
| 226 result[index++] = cc; | 239 result[index++] = cc; |
| 227 } | 240 } |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 359 cc = cc >>> 4; | 372 cc = cc >>> 4; |
| 360 } | 373 } |
| 361 return r; | 374 return r; |
| 362 } | 375 } |
| 363 | 376 |
| 364 | 377 |
| 365 // Returns true if all digits in string s are valid hex numbers | 378 // Returns true if all digits in string s are valid hex numbers |
| 366 function IsValidHex(s) { | 379 function IsValidHex(s) { |
| 367 for (var i = 0; i < s.length; ++i) { | 380 for (var i = 0; i < s.length; ++i) { |
| 368 var cc = s.charCodeAt(i); | 381 var cc = s.charCodeAt(i); |
| 369 if ((48 <= cc && cc <= 57) || (65 <= cc && cc <= 70) || (97 <= cc && cc <= 1
02)) { | 382 if ((48 <= cc && cc <= 57) || |
| 383 (65 <= cc && cc <= 70) || |
| 384 (97 <= cc && cc <= 102)) { |
| 370 // '0'..'9', 'A'..'F' and 'a' .. 'f'. | 385 // '0'..'9', 'A'..'F' and 'a' .. 'f'. |
| 371 } else { | 386 } else { |
| 372 return false; | 387 return false; |
| 373 } | 388 } |
| 374 } | 389 } |
| 375 return true; | 390 return true; |
| 376 } | 391 } |
| 377 | 392 |
| 378 | 393 |
| 379 // ECMA-262 - B.2.1. | 394 // ECMA-262 - B.2.1. |
| (...skipping 20 matching lines...) Expand all Loading... |
| 400 "escape", URIEscape, | 415 "escape", URIEscape, |
| 401 "unescape", URIUnescape, | 416 "unescape", URIUnescape, |
| 402 "decodeURI", URIDecode, | 417 "decodeURI", URIDecode, |
| 403 "decodeURIComponent", URIDecodeComponent, | 418 "decodeURIComponent", URIDecodeComponent, |
| 404 "encodeURI", URIEncode, | 419 "encodeURI", URIEncode, |
| 405 "encodeURIComponent", URIEncodeComponent | 420 "encodeURIComponent", URIEncodeComponent |
| 406 )); | 421 )); |
| 407 } | 422 } |
| 408 | 423 |
| 409 SetUpUri(); | 424 SetUpUri(); |
| OLD | NEW |