diff options
Diffstat (limited to 'dom/base/test/test_bug431701.html')
-rw-r--r-- | dom/base/test/test_bug431701.html | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/dom/base/test/test_bug431701.html b/dom/base/test/test_bug431701.html new file mode 100644 index 000000000..19947c147 --- /dev/null +++ b/dom/base/test/test_bug431701.html @@ -0,0 +1,120 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=431701 +--> +<head> + <meta charset="windows-1252"> + <title>Test for Bug 431701</title> + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=431701">Mozilla Bug 431701</a> +<p id="display"></p> +<div id="content" style="display: none"> + <iframe id="one"></iframe> + <iframe id="two"></iframe> + <iframe id="three"></iframe> + <iframe id="four"></iframe> + <iframe id="five"></iframe> + <iframe id="six"></iframe> + <iframe id="seven"></iframe> +</div> +<pre id="test"> +<script class="testbody" type="text/javascript"> + +/** Test for Bug 431701 **/ +SimpleTest.waitForExplicitFinish(); + +var docSources = [ + "data:text/html,<html></html>", + "data:text/html;charset=UTF-8,<html></html>", + "data:text/html;charset=ISO-8859-1,<html></html>", + "data:text/xml,<html></html>", + "data:text/xml,<?xml version='1.0'?><html></html>", + "data:text/xml,<?xml version='1.0' encoding='UTF-8'?><html></html>", + "data:text/xml,<?xml version='1.0' encoding='ISO-8859-1'?><html></html>", +]; + +for (var i = 0; i < docSources.length; ++i) { + document.getElementsByTagName("iframe")[i].src = docSources[i]; +} + +function frameDoc(id) { + return function() { return $(id).contentDocument; }; +} + +function createDoc() { + return document.implementation.createDocument('', 'html', null); +} + +function xhrDoc(idx) { + return function() { + // Defy same-origin restrictions! + var xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true}); + xhr.open("GET", docSources[idx], false); + xhr.send(); + return xhr.responseXML; + }; +} + +// Each row has the document getter function, then the characterSet, +// inputEncoding expected for that document. + +var tests = [ + [ frameDoc("one"), "windows-1252" ], + [ frameDoc("two"), "UTF-8" ], + [ frameDoc("three"), "windows-1252" ], + [ frameDoc("four"), "UTF-8" ], + [ frameDoc("five"), "UTF-8" ], + [ frameDoc("six"), "UTF-8" ], + [ frameDoc("seven"), "windows-1252" ], + [ createDoc, "UTF-8" ], + [ xhrDoc(4), "UTF-8" ], + [ xhrDoc(5), "UTF-8" ], + [ xhrDoc(6), "windows-1252" ], +]; + +function doTest(idx) { + var [docGetter, expectedCharacterSet] = tests[idx]; + var doc = docGetter(); + + // Have to be careful here to catch null vs "" + is(doc.characterSet, expectedCharacterSet, "Test " + idx + " characterSet"); + is(doc.inputEncoding, expectedCharacterSet, + "Test " + idx + " inputEncoding"); +} + +addLoadEvent(function() { + SpecialPowers.pushPermissions([{'type': 'systemXHR', 'allow': true, 'context': document}], startTest); +}); + +function startTest() { + // sanity check + isnot("", null, "Shouldn't be equal!"); + + for (var i = 0; i < tests.length; ++i) { + doTest(i); + } + + // Now check what xhr does + var xhr = new XMLHttpRequest(); + xhr.open("POST", document.location.href); + xhr.send(createDoc()); + is(SpecialPowers.wrap(xhr).channel.QueryInterface(SpecialPowers.Ci.nsIHttpChannel) + .getRequestHeader("Content-Type"), + "application/xml;charset=UTF-8", "Testing correct type on the wire"); + xhr.abort(); + + SimpleTest.finish(); +}; + + + + +</script> +</pre> +</body> +</html> + |