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

Side by Side Diff: LayoutTests/fast/encoding/resources/char-decoding-utils.js

Issue 23532016: Handle odd data lengths in UTF-16 decoder (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Simplify Created 6 years, 9 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 | Annotate | Revision Log
OLDNEW
1 function hex(number)
2 {
3 var hexDigit = "0123456789ABCDEF";
4 var hex = hexDigit.substr(number & 0xf, 1);
5 while (number > 15) {
6 number >>= 4;
7 hex = hexDigit.substr(number & 15, 1) + hex;
8 }
9 return hex;
10 }
11
12 function decodeText(charsetName, characterSequence) 1 function decodeText(charsetName, characterSequence)
13 { 2 {
14 var req = new XMLHttpRequest; 3 var req = new XMLHttpRequest;
15 req.open('GET', 'data:text/plain,' + characterSequence, false); 4 req.open('GET', 'data:text/plain,' + characterSequence, false);
16 req.overrideMimeType('text/plain; charset="' + charsetName + '"'); 5 req.overrideMimeType('text/plain; charset="' + charsetName + '"');
17 req.send(''); 6 req.send('');
18 return req.responseText; 7 return req.responseText;
19 } 8 }
20 9
21 function decode(charsetName, characterSequence) 10 function decode(charsetName, characterSequence)
22 { 11 {
23 var decodedText = decodeText(charsetName, characterSequence); 12 var decodedText = decodeText(charsetName, characterSequence);
24 var result = ""; 13 var result = "";
25 for (var i = 0; i < decodedText.length; ++i) { 14 for (var i = 0; i < decodedText.length; ++i) {
26 var code = hex(decodedText.charCodeAt(i)); 15 var code = decodedText.charCodeAt(i).toString(16).toUpperCase();
27 if (i) 16 if (i)
28 result += "/"; 17 result += "/";
29 result += "U+" + ("0000" + code).substr(code.length, 4); 18 result += "U+" + ("0000" + code).slice(-4);
30 } 19 }
31 return result; 20 return result;
32 } 21 }
33 22
34 function testDecode(charsetName, characterSequence, unicode) 23 function testDecode(charsetName, characterSequence, unicode)
35 { 24 {
36 shouldBe("decode('" + charsetName + "', '" + characterSequence + "')", "'" + unicode + "'"); 25 shouldBe("decode('" + charsetName + "', '" + characterSequence + "')", "'" + unicode + "'");
37 } 26 }
38 27
39 function batchTestDecode(inputData) 28 function batchTestDecode(inputData)
40 { 29 {
41 for (var i in inputData.encodings) { 30 for (var i in inputData.encodings) {
42 for (var j in inputData.encoded) 31 for (var j in inputData.encoded)
43 testDecode(inputData.encodings[i], inputData.encoded[j], inputData.u nicode[j]); 32 testDecode(inputData.encodings[i], inputData.encoded[j], inputData.u nicode[j]);
44 } 33 }
45 } 34 }
46
OLDNEW
« no previous file with comments | « LayoutTests/fast/encoding/char-decoding-truncated-expected.txt ('k') | Source/core/dom/Document.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698