<!doctype html>
<html>
  <head>
    <title>XMLHttpRequest: responseText decoding</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <link rel="help" href="https://xhr.spec.whatwg.org/#the-responsetext-attribute" data-tested-assertations="following::ol[1]/li[4]" />
    <link rel="help" href="https://xhr.spec.whatwg.org/#text-response-entity-body" data-tested-assertations="following::ol[1]/li[2] following::ol[1]/li[3] following::ol[1]/li[4] following::ol[1]/li[5]" />
  </head>
  <body>
    <div id="log"></div>
    <script>
      function request(type, input, output, responseType) {
        var test = async_test(document.title + " (" + type + " " + input + ")");
        test.step(function() {
          var client = new XMLHttpRequest()
          if (responseType !== undefined) {
            client.responseType = responseType
          }
          client.open("GET", "resources/status.py?content=" + input + "&type=" + encodeURIComponent(type), true)
          client.onload = test.step_func_done(() => {
            assert_equals(client.responseText, output)
          })
          client.send(null)
        })
      }
      request("application/xml", encodeURIComponent("<?xml version='1.0' encoding='windows-1252'?><x>")+'%FF'+encodeURIComponent("<\/x>"), "<?xml version='1.0' encoding='windows-1252'?><x>\u00FF<\/x>")
      request("text/html", encodeURIComponent("<!doctype html><meta charset=windows-1252>")+"%FF", "<!doctype html><meta charset=windows-1252>\uFFFD")
      request("text/plain;charset=windows-1252", "%FF", "\u00FF")
      request("text/plain", "%FF", "\uFFFD")
      request("text/plain", "%FE%FF", "")
      request("text/plain", "%FE%FF%FE%FF", "\uFEFF")
      request("text/plain", "%EF%BB%BF", "")
      request("text/plain", "%EF%BB%BF%EF%BB%BF", "\uFEFF")
      request("text/plain", "%C2", "\uFFFD")
      request("text/xml", "%FE%FF", "")
      request("text/xml", "%FE%FF%FE%FF", "\uFEFF")
      request("text/xml", "%EF%BB%BF", "")
      request("text/xml", "%EF%BB%BF%EF%BB%BF", "\uFEFF")
      request("text/plain", "%E3%81%B2", "\u3072", 'text')
      // the point of the following test: setting responseType=text should (per spec #text-response-entity-body point 3)
      // skip some of the charset detection even for XML resources. The test uses a wilfully mislabelled XMLish response
      // and the pass condition is that the responseType = text makes the decoder fall back to UTF-8
      request("text/xml", encodeURIComponent("<?xml version='1.0' encoding='windows-1252'?><x>")+"%E3%81%B2"+encodeURIComponent("<\/x>"), "<?xml version='1.0' encoding='windows-1252'?><x>\u3072<\/x>", 'text')
    </script>
  </body>
</html>
