<!doctype html>
<html>
  <head>
    <title>XMLHttpRequest: send(null) - no entity body</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <link rel="help" href="https://xhr.spec.whatwg.org/#the-send()-method" data-tested-assertations="following::ol[1]/li[4] following::ol[1]/li[7]" />
  </head>
  <body>
    <div id="log"></div>
    <script>
      function noContentTypeTest(method) {
        var client = new XMLHttpRequest()
        client.open(method, "resources/content.py", false)
        client.upload.onloadstart = function(){assert_unreached('this event should not fire for null')}
        client.send(null)
        var expectedLength = method == "HEAD" ? "NO" : "0";
        assert_equals(client.getResponseHeader("x-request-content-length"), expectedLength)
        assert_equals(client.getResponseHeader("x-request-content-type"), "NO")
      }
      test(function() { noContentTypeTest("POST"); }, "No content type (POST)");
      test(function() { noContentTypeTest("PUT"); }, "No content type (PUT)");
      test(function() { noContentTypeTest("HEAD"); }, "No content type (HEAD)");

      function explicitContentTypeTest(method) {
        var client = new XMLHttpRequest()
        client.open(method, "resources/content.py", false)
        var content_type = 'application/x-foo'
        client.setRequestHeader('Content-Type', content_type)
        client.send(null)
        var expectedLength = method == "HEAD" ? "NO" : "0";
        assert_equals(client.getResponseHeader("x-request-content-length"), expectedLength)
        assert_equals(client.getResponseHeader("x-request-content-type"), content_type)
      }
      test(function() { explicitContentTypeTest("POST"); }, "Explicit content type (POST)");
      test(function() { explicitContentTypeTest("PUT"); }, "Explicit content type (PUT)");
      test(function() { explicitContentTypeTest("HEAD"); }, "Explicit content type (HEAD)");
    </script>
  </body>
</html>
