Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Side by Side Diff: src/js/uri.js

Issue 1936083002: Version 5.1.281.26 (cherry-pick) (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@5.1
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « include/v8-version.h ('k') | test/mjsunit/regress/regress-602970.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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 })
OLDNEW
« no previous file with comments | « include/v8-version.h ('k') | test/mjsunit/regress/regress-602970.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698