function encode(charset, unicode) { // Returns a value already encoded, since we can't do it synchronously. return results[charset][unicode]; } function testsDone() { var form = document.getElementById('form'); var subframe = document.getElementById('subframe'); form.parentNode.removeChild(form); subframe.parentNode.removeChild(subframe); description("This tests encoding characters in various character sets."); for (i = 0; i < charsets.length; ++i) { shouldBe("encode('" + charsets[i] + "', '" + unicodes[i] + "')", "'" + expectedResults[i] + "'"); } isSuccessfullyParsed(); if (window.layoutTestController) layoutTestController.notifyDone(); } function processResult(result) { var charsetResults = results[charsets[i]]; if (!charsetResults) { charsetResults = new Object; results[charsets[i]] = charsetResults; } charsetResults[unicodes[i]] = result; } function subframeLoaded() { var URL = "" + document.getElementById('subframe').contentWindow.location; processResult(URL.substr(URL.indexOf('=') + 1)); ++i; runTest(); } function runTest() { if (i >= charsets.length) { testsDone(); return; } var form = document.getElementById('form'); var text = document.getElementById('text'); var subframe = document.getElementById('subframe'); form.acceptCharset = charsets[i]; form.action = "resources/dummy.html"; subframe.onload = subframeLoaded; text.value = String.fromCharCode(unicodes[i].replace('U+', '0x')); form.submit(); } function testEncode(charsetName, unicode, characterSequence) { charsets.push(charsetName); unicodes.push(unicode); expectedResults.push(characterSequence); }