| 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 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // This file contains support for URI manipulations written in | 5 // This file contains support for URI manipulations written in |
| 6 // JavaScript. | 6 // JavaScript. |
| 7 | 7 |
| 8 (function(global, utils) { | 8 (function(global, utils) { |
| 9 | 9 |
| 10 "use strict"; | 10 "use strict"; |
| 11 | 11 |
| 12 %CheckIsBootstrapping(); | 12 %CheckIsBootstrapping(); |
| 13 | 13 |
| 14 //- ------------------------------------------------------------------ | 14 //- ------------------------------------------------------------------ |
| 15 // Imports | 15 // Imports |
| 16 | 16 |
| 17 var GlobalObject = global.Object; | 17 var GlobalObject = global.Object; |
| 18 var GlobalArray = global.Array; | |
| 19 var InternalArray = utils.InternalArray; | 18 var InternalArray = utils.InternalArray; |
| 20 var MakeURIError; | 19 var MakeURIError; |
| 21 | 20 |
| 22 utils.Import(function(from) { | 21 utils.Import(function(from) { |
| 23 MakeURIError = from.MakeURIError; | 22 MakeURIError = from.MakeURIError; |
| 24 }); | 23 }); |
| 25 | 24 |
| 26 | 25 |
| 27 // ------------------------------------------------------------------- | 26 // ------------------------------------------------------------------- |
| 28 // Define internal helper functions. | 27 // Define internal helper functions. |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 if (octets[1]) index = URIAddEncodedOctetToBuffer(octets[1], result, index); | 68 if (octets[1]) index = URIAddEncodedOctetToBuffer(octets[1], result, index); |
| 70 if (octets[2]) index = URIAddEncodedOctetToBuffer(octets[2], result, index); | 69 if (octets[2]) index = URIAddEncodedOctetToBuffer(octets[2], result, index); |
| 71 if (octets[3]) index = URIAddEncodedOctetToBuffer(octets[3], result, index); | 70 if (octets[3]) index = URIAddEncodedOctetToBuffer(octets[3], result, index); |
| 72 return index; | 71 return index; |
| 73 } | 72 } |
| 74 | 73 |
| 75 function URIEncodeSingle(cc, result, index) { | 74 function URIEncodeSingle(cc, result, index) { |
| 76 var x = (cc >> 12) & 0xF; | 75 var x = (cc >> 12) & 0xF; |
| 77 var y = (cc >> 6) & 63; | 76 var y = (cc >> 6) & 63; |
| 78 var z = cc & 63; | 77 var z = cc & 63; |
| 79 var octets = new GlobalArray(3); | 78 var octets = new InternalArray(3); |
| 80 if (cc <= 0x007F) { | 79 if (cc <= 0x007F) { |
| 81 octets[0] = cc; | 80 octets[0] = cc; |
| 82 } else if (cc <= 0x07FF) { | 81 } else if (cc <= 0x07FF) { |
| 83 octets[0] = y + 192; | 82 octets[0] = y + 192; |
| 84 octets[1] = z + 128; | 83 octets[1] = z + 128; |
| 85 } else { | 84 } else { |
| 86 octets[0] = x + 224; | 85 octets[0] = x + 224; |
| 87 octets[1] = y + 128; | 86 octets[1] = y + 128; |
| 88 octets[2] = z + 128; | 87 octets[2] = z + 128; |
| 89 } | 88 } |
| 90 return URIEncodeOctets(octets, result, index); | 89 return URIEncodeOctets(octets, result, index); |
| 91 } | 90 } |
| 92 | 91 |
| 93 function URIEncodePair(cc1 , cc2, result, index) { | 92 function URIEncodePair(cc1 , cc2, result, index) { |
| 94 var u = ((cc1 >> 6) & 0xF) + 1; | 93 var u = ((cc1 >> 6) & 0xF) + 1; |
| 95 var w = (cc1 >> 2) & 0xF; | 94 var w = (cc1 >> 2) & 0xF; |
| 96 var x = cc1 & 3; | 95 var x = cc1 & 3; |
| 97 var y = (cc2 >> 6) & 0xF; | 96 var y = (cc2 >> 6) & 0xF; |
| 98 var z = cc2 & 63; | 97 var z = cc2 & 63; |
| 99 var octets = new GlobalArray(4); | 98 var octets = new InternalArray(4); |
| 100 octets[0] = (u >> 2) + 240; | 99 octets[0] = (u >> 2) + 240; |
| 101 octets[1] = (((u & 3) << 4) | w) + 128; | 100 octets[1] = (((u & 3) << 4) | w) + 128; |
| 102 octets[2] = ((x << 4) | y) + 128; | 101 octets[2] = ((x << 4) | y) + 128; |
| 103 octets[3] = z + 128; | 102 octets[3] = z + 128; |
| 104 return URIEncodeOctets(octets, result, index); | 103 return URIEncodeOctets(octets, result, index); |
| 105 } | 104 } |
| 106 | 105 |
| 107 function URIHexCharsToCharCode(highChar, lowChar) { | 106 function URIHexCharsToCharCode(highChar, lowChar) { |
| 108 var highCode = HexValueOf(highChar); | 107 var highCode = HexValueOf(highChar); |
| 109 var lowCode = HexValueOf(lowChar); | 108 var lowCode = HexValueOf(lowChar); |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 for ( ; k < uriLength; k++) { | 240 for ( ; k < uriLength; k++) { |
| 242 var code = %_StringCharCodeAt(uri, k); | 241 var code = %_StringCharCodeAt(uri, k); |
| 243 if (code == 37) { // '%' | 242 if (code == 37) { // '%' |
| 244 if (k + 2 >= uriLength) throw MakeURIError(); | 243 if (k + 2 >= uriLength) throw MakeURIError(); |
| 245 var cc = URIHexCharsToCharCode(%_StringCharCodeAt(uri, ++k), | 244 var cc = URIHexCharsToCharCode(%_StringCharCodeAt(uri, ++k), |
| 246 %_StringCharCodeAt(uri, ++k)); | 245 %_StringCharCodeAt(uri, ++k)); |
| 247 if (cc >> 7) { | 246 if (cc >> 7) { |
| 248 var n = 0; | 247 var n = 0; |
| 249 while (((cc << ++n) & 0x80) != 0) { } | 248 while (((cc << ++n) & 0x80) != 0) { } |
| 250 if (n == 1 || n > 4) throw MakeURIError(); | 249 if (n == 1 || n > 4) throw MakeURIError(); |
| 251 var octets = new GlobalArray(n); | 250 var octets = new InternalArray(n); |
| 252 octets[0] = cc; | 251 octets[0] = cc; |
| 253 if (k + 3 * (n - 1) >= uriLength) throw MakeURIError(); | 252 if (k + 3 * (n - 1) >= uriLength) throw MakeURIError(); |
| 254 for (var i = 1; i < n; i++) { | 253 for (var i = 1; i < n; i++) { |
| 255 if (uri[++k] != '%') throw MakeURIError(); | 254 if (uri[++k] != '%') throw MakeURIError(); |
| 256 octets[i] = URIHexCharsToCharCode(%_StringCharCodeAt(uri, ++k), | 255 octets[i] = URIHexCharsToCharCode(%_StringCharCodeAt(uri, ++k), |
| 257 %_StringCharCodeAt(uri, ++k)); | 256 %_StringCharCodeAt(uri, ++k)); |
| 258 } | 257 } |
| 259 index = URIDecodeOctets(octets, two_byte, index); | 258 index = URIDecodeOctets(octets, two_byte, index); |
| 260 } else if (reserved(cc)) { | 259 } else if (reserved(cc)) { |
| 261 %_TwoByteSeqStringSetChar(index++, 37, two_byte); // '%'. | 260 %_TwoByteSeqStringSetChar(index++, 37, two_byte); // '%'. |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 utils.InstallFunctions(global, DONT_ENUM, [ | 370 utils.InstallFunctions(global, DONT_ENUM, [ |
| 372 "escape", URIEscapeJS, | 371 "escape", URIEscapeJS, |
| 373 "unescape", URIUnescapeJS, | 372 "unescape", URIUnescapeJS, |
| 374 "decodeURI", URIDecode, | 373 "decodeURI", URIDecode, |
| 375 "decodeURIComponent", URIDecodeComponent, | 374 "decodeURIComponent", URIDecodeComponent, |
| 376 "encodeURI", URIEncode, | 375 "encodeURI", URIEncode, |
| 377 "encodeURIComponent", URIEncodeComponent | 376 "encodeURIComponent", URIEncodeComponent |
| 378 ]); | 377 ]); |
| 379 | 378 |
| 380 }) | 379 }) |
| OLD | NEW |