<!DOCTYPE html>
<html>
  <head>
    <title>XMLHttpRequest: setRequestHeader() - Content-Type header</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <link rel="help" href="https://xhr.spec.whatwg.org/#the-setrequestheader()-method">
  </head>
  <body>
    <div id="log"></div>
    <script>
      function request(inputGenerator, headersToSend, expectedType, title) {
        test(function() {
          const toSend = inputGenerator(),
                client = new XMLHttpRequest()
          client.open("POST", "resources/inspect-headers.py?filter_name=Content-Type", false)
          for(header in headersToSend) {
            if (headersToSend.hasOwnProperty(header)) {
              client.setRequestHeader(header, headersToSend[header]);
            }
          }
          client.send(toSend)

          const actual = client.responseText
          if (expectedType === undefined || expectedType === null) {
            assert_equals(actual, "");
          } else if (expectedType instanceof RegExp) {
            assert_regexp_match(actual, expectedType);
          } else {
            assert_equals(actual, "Content-Type: " + expectedType + "\n");
          }
        }, title)
      }
      request(
        function _String() { return ""; },
        {"Content-Type": ""},
        "",
        'setRequestHeader("") sends a blank string'
      )
      request(
        function _String() { return ""; },
        {"Content-Type": " "},
        "",
        'setRequestHeader(" ") sends the string " "'
      )
      request(
        function _String() { return ""; },
        {"Content-Type": null},
        "null",
        'setRequestHeader(null) sends the string "null"'
      )
      request(
        function _String() { return ""; },
        {"Content-Type": undefined},
        "undefined",
        'setRequestHeader(undefined) sends the string "undefined"'
      )
      request(
        function _String() { return "test"; },
        {},
        "text/plain;charset=UTF-8",
        'String request has correct default Content-Type of "text/plain;charset=UTF-8"'
      )
      request(
        function _String() { return "test()"; },
        {"Content-Type": "text/javascript;charset=ASCII"},
        "text/javascript;charset=UTF-8",
        "String request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8"
      )
      request(
        function _XMLDocument() { return new DOMParser().parseFromString("<xml/>", "application/xml"); },
        {"Content-Type": ""},
        "",
        'XML Document request respects setRequestHeader("")'
      )
      request(
        function _XMLDocument() { return new DOMParser().parseFromString("<xml/>", "application/xml"); },
        {},
        "application/xml;charset=UTF-8",
        'XML Document request has correct default Content-Type of "application/xml;charset=UTF-8"'
      )
      request(
        function _XMLDocument() { return new DOMParser().parseFromString("<xml/>", "application/xml"); },
        {"Content-Type": "application/xhtml+xml;charset=ASCII"},
        "application/xhtml+xml;charset=UTF-8",
        "XML Document request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8"
      )
      request(
        function _HTMLDocument() { return new DOMParser().parseFromString("<html></html>", "text/html"); },
        {"Content-Type": ""},
        "",
        'HTML Document request respects setRequestHeader("")'
      )
      request(
        function _HTMLDocument() { return new DOMParser().parseFromString("<html></html>", "text/html"); },
        {},
        "text/html;charset=UTF-8",
        'HTML Document request has correct default Content-Type of "text/html;charset=UTF-8"'
      )
      request(
        function _HTMLDocument() { return new DOMParser().parseFromString("<html></html>", "text/html"); },
        {"Content-Type": "text/html+junk;charset=ASCII"},
        "text/html+junk;charset=UTF-8",
        "HTML Document request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8"
      )
      request(
        function _Blob() { return new Blob(["test"]); },
        {"Content-Type": ""},
        "",
        'Blob request respects setRequestHeader("") to be specified'
      )
      request(
        function _Blob() { return new Blob(["test"]); },
        {},
        undefined,
        "Blob request with unset type sends no Content-Type without setRequestHeader() call"
      )
      request(
        function _Blob() { return new Blob(["test"]); },
        {"Content-Type": "application/xml;charset=ASCII"},
        "application/xml;charset=ASCII",
        "Blob request with unset type keeps setRequestHeader() Content-Type and charset"
      )
      request(
        function _Blob() { return new Blob(["<xml/>"], {type : "application/xml;charset=ASCII"}); },
        {"Content-Type": ""},
        "",
        'Blob request with set type respects setRequestHeader("") to be specified'
      )
      request(
        function _Blob() { return new Blob(["<xml/>"], {type : "application/xml;charset=ASCII"}); },
        {},
        "application/xml;charset=ascii", // new Blob lowercases the type argument
        "Blob request with set type uses that it for Content-Type unless setRequestHeader()"
      )
      request(
        function _Blob() { return new Blob(["<xml/>"], {type : "application/xml;charset=UTF8"}); },
        {"Content-Type": "application/xml+junk;charset=ASCII"},
        "application/xml+junk;charset=ASCII",
        "Blob request with set type keeps setRequestHeader() Content-Type and charset"
      )
      request(
        function _ArrayBuffer() { return new ArrayBuffer(10); },
        {"Content-Type": ""},
        "",
        'ArrayBuffer request respects setRequestHeader("")'
      )
      request(
        function _ArrayBuffer() { return new ArrayBuffer(10); },
        {},
        undefined,
        "ArrayBuffer request sends no Content-Type without setRequestHeader() call"
      )
      request(
        function _ArrayBuffer() { return new ArrayBuffer(10); },
        {"Content-Type": "application/xml;charset=ASCII"},
        "application/xml;charset=ASCII",
        "ArrayBuffer request keeps setRequestHeader() Content-Type and charset"
      )
      request(
        function _Uint8Array() { return new Uint8Array(new ArrayBuffer(10)); },
        {"Content-Type": ""},
        "",
        'ArrayBufferView request respects setRequestHeader("")'
      )
      request(
        function _Uint8Array() { return new Uint8Array(new ArrayBuffer(10)); },
        {},
        undefined,
        "ArrayBufferView request sends no Content-Type without setRequestHeader() call"
      )
      request(
        function _Uint8Array() { return new Uint8Array(new ArrayBuffer(10)); },
        {"Content-Type": "application/xml;charset=ASCII"},
        "application/xml;charset=ASCII",
        "ArrayBufferView request keeps setRequestHeader() Content-Type and charset"
      )
      request(
        function _FormData() { return new FormData(); },
        {"Content-Type": ""},
        "",
        'FormData request respects setRequestHeader("")'
      )
      request(
        function _FormData() { return new FormData(); },
        {},
        /multipart\/form-data; boundary=(.*)/,
        'FormData request has correct default Content-Type of "multipart\/form-data; boundary=_"'
      )
      request(
        function _FormData() { return new FormData(); },
        {"Content-Type": "application/xml;charset=ASCII"},
        "application/xml;charset=ASCII",
        "FormData request keeps setRequestHeader() Content-Type and charset"
      )
      request(
        function _URLSearchParams() { return new URLSearchParams("q=testQ&topic=testTopic") },
        {"Content-Type": ""},
        "",
        'URLSearchParams respects setRequestHeader("")'
      )
      request(
        function _URLSearchParams() { return new URLSearchParams("q=testQ&topic=testTopic") },
        {},
        "application/x-www-form-urlencoded;charset=UTF-8",
        'URLSearchParams request has correct default Content-Type of "application/x-www-form-urlencoded;charset=UTF-8"'
      )
      request(
        function _URLSearchParams() { return new URLSearchParams("q=testQ&topic=testTopic") },
        {"Content-Type": "application/xml;charset=ASCII"},
        "application/xml;charset=UTF-8",
        "URLSearchParams request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8"
        // the default Content-Type for URLSearchParams has a charset specified (utf-8) in
        // https://fetch.spec.whatwg.org/#bodyinit, so the user's must be changed to match it
        // as per https://xhr.spec.whatwg.org/#the-send%28%29-method step 4.
      )
      request(
        function _ReadableStream() { return new ReadableStream() },
        {"Content-Type": ""},
        "",
        'ReadableStream request respects setRequestHeader("")'
      )
      request(
        function _ReadableStream() { return new ReadableStream() },
        {},
        undefined,
        "ReadableStream request with under type sends no Content-Type without setRequestHeader() call"
      )
      request(
        function _ReadableStream() { return new ReadableStream() },
        {"Content-Type": "application/xml;charset=ASCII"},
        "application/xml;charset=ASCII",
        "ReadableStream request keeps setRequestHeader() Content-Type and charset"
      )
    </script>
  </body>
</html>
