<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=651072 --> <head> <title>Test for Bug 651072</title> <script type="text/javascript" src="/MochiKit/MochiKit.js"></script> <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> </head> <body onload=runTest();> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=651072">Mozilla Bug 651072</a> <p id="display"></p> <div id="content" style="display: none"> </div> <pre id="test"> <script class="testbody" type="text/javascript"> /** Test for Bug 651072 **/ SimpleTest.waitForExplicitFinish(); var xhr = new XMLHttpRequest(); function runTest() { xhr.onreadystatechange = function() { if (this.readyState == 4) { ok(this.responseXML, "Should have gotten responseXML"); is(this.responseXML.characterSet, "windows-1251", "Wrong character encoding"); is(this.responseXML.documentElement.firstChild.data, " \u042E ", "Decoded using the wrong encoding."); try { this.responseText; ok(false, "responseText access should have thrown."); } catch (e) { is(e.name, "InvalidStateError", "Should have thrown InvalidStateError."); is(e.code, 11, "Should have thrown INVALID_STATE_ERR."); } is(this.responseXML.getElementsByTagName("div").length, 1, "There should be one div."); ok(!this.responseXML.documentElement.hasAttribute("data-fail"), "Should not have a data-fail attribute."); var scripts = this.responseXML.getElementsByTagName("script"); is(scripts.length, 4, "Unexpected number of scripts."); while (scripts.length) { // These should not run when moved to another doc document.body.appendChild(scripts[0]); } var s = document.createElement("script"); s.src = "file_html_in_xhr.sjs?report=1"; document.body.appendChild(s); } } xhr.open("GET", "file_html_in_xhr.html", true); xhr.responseType = "document"; xhr.send(); } function continueAfterReport() { xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (this.readyState == 4) { is(this.responseText.indexOf("\u042E"), -1, "Honored meta in default mode."); is(this.responseText.indexOf("\uFFFD"), 29, "Honored meta in default mode 2."); is(this.responseXML, null, "responseXML should be null for HTML in the default mode"); testNonParsingText(); } } xhr.open("GET", "file_html_in_xhr2.html"); xhr.send(); } function testNonParsingText() { xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (this.readyState == 4) { is(this.responseText.indexOf("\u042E"), -1, "Honored meta in text mode."); is(this.responseText.indexOf("\uFFFD"), 29, "Honored meta in text mode 2."); testChunkedText(); } } xhr.open("GET", "file_html_in_xhr2.html"); xhr.responseType = "text"; xhr.send(); } function testChunkedText() { xhr = new XMLHttpRequest(); xhr.onprogress = function() { is(this.responseText.indexOf("\u042E"), -1, "Honored meta in chunked text mode."); } xhr.onreadystatechange = function() { if (this.readyState == 4) { testSyncXHR(); } } xhr.open("GET", "file_html_in_xhr2.html"); xhr.responseType = "moz-chunked-text"; xhr.send(); } function testSyncXHR() { xhr = new XMLHttpRequest(); xhr.open("GET", "file_html_in_xhr3.html", false); xhr.send(); is(xhr.responseText, "SUCCESS\n", "responseText should be ready by now"); is(xhr.responseXML, null, "responseXML should be null in the sync case"); SimpleTest.finish(); } </script> </pre> </body> </html>