<!DOCTYPE html>
<html>
  <head>
    <title>XMLHttpRequest: getAllResponseHeaders() excludes status</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <link rel="help" href="https://xhr.spec.whatwg.org/#dom-xmlhttprequest-getallresponseheaders" data-tested-assertations="/following::OL[1]/LI[1] /following::OL[1]/LI[3]" />
  </head>
  <body>
    <div id="log"></div>
    <script>
      var test = async_test()
      test.step(function() {
        var client = new XMLHttpRequest()
        var headersUnsent = client.getAllResponseHeaders();
         test.step(function() {
           assert_equals(headersUnsent, "")
         });
        client.onreadystatechange = function() {
          test.step(function() {
            var headers = client.getAllResponseHeaders().toLowerCase()
            if(client.readyState == 1) {
              assert_equals(headers, "")
            }
            if(client.readyState > 1) {
              assert_false(headers.indexOf("200 ok") != -1)
              assert_false(headers.indexOf("http/1.") != -1)
            }
            if(client.readyState == 4)
              test.done()
          })
        }
        client.open("GET", "resources/headers.py")
        client.send(null)
      })
  </script>
 </body>
</html>
