1fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrickfunction encode(charset, unicode) 2fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick{ 3fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick // Returns a value already encoded, since we can't do it synchronously. 4fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick return results[charset][unicode]; 5fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick} 6fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick 7fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrickfunction testsDone() 8fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick{ 9fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick var form = document.getElementById('form'); 10fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick var subframe = document.getElementById('subframe'); 11fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick 12fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick form.parentNode.removeChild(form); 13fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick subframe.parentNode.removeChild(subframe); 14fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick 15fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick description("This tests encoding characters in various character sets."); 16fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick 17fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick for (i = 0; i < charsets.length; ++i) { 18fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick shouldBe("encode('" + charsets[i] + "', '" + unicodes[i] + "')", "'" + expectedResults[i] + "'"); 19fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick } 20fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick 21fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick isSuccessfullyParsed(); 22fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick 23fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick if (window.layoutTestController) 24fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick layoutTestController.notifyDone(); 25fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick} 26fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick 27fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrickfunction processResult(result) 28fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick{ 29fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick var charsetResults = results[charsets[i]]; 30fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick if (!charsetResults) { 31fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick charsetResults = new Object; 32fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick results[charsets[i]] = charsetResults; 33fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick } 34fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick charsetResults[unicodes[i]] = result; 35fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick} 36fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick 37fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrickfunction subframeLoaded() 38fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick{ 39fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick var URL = "" + document.getElementById('subframe').contentWindow.location; 40fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick processResult(URL.substr(URL.indexOf('=') + 1)); 41fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick ++i; 42fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick runTest(); 43fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick} 44fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick 45fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrickfunction runTest() 46fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick{ 47fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick if (i >= charsets.length) { 48fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick testsDone(); 49fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick return; 50fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick } 51fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick 52fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick var form = document.getElementById('form'); 53fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick var text = document.getElementById('text'); 54fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick var subframe = document.getElementById('subframe'); 55fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick 56fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick form.acceptCharset = charsets[i]; 57fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick form.action = "resources/dummy.html"; 58fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick subframe.onload = subframeLoaded; 59fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick text.value = String.fromCharCode(unicodes[i].replace('U+', '0x')); 60fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick 61fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick form.submit(); 62fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick} 63fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick 64fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrickfunction testEncode(charsetName, unicode, characterSequence) 65fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick{ 66fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick charsets.push(charsetName); 67fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick unicodes.push(unicode); 68fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick expectedResults.push(characterSequence); 69fd5c6425ce58eb75211be7718d5dee960842a37eIain Merrick} 70