<!doctype html>
<html>
  <head>
    <title>XMLHttpRequest: status error handling</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-onerror" data-tested-assertations="../.." />
    <link rel="help" href="https://xhr.spec.whatwg.org/#the-status-attribute" data-tested-assertations="/following::ol/li[3]" />
  </head>
  <body>
    <p>This shouldn't be tested inside a tunnel.</p>
    <div id="log"></div>
    <script>
      function noError(method, code) {
        var test = async_test(document.title + " " + method + " " + code)

        test.step(function() {
          var client = new XMLHttpRequest()
          client.open(method, "resources/status.py?code=" + code, true)

          client.onreadystatechange = test.step_func(function() {
            assert_equals(client.response, "", "response data")
            assert_equals(client.status, code, "response status")

            if (client.readyState == client.DONE)
              /* Give extra time for a bogus error event to pop up */
              test.step_timeout(() => { test.done() }, 100)
          })
          client.onerror = test.step_func(function() {
            assert_unreached("HTTP error should not throw error event")
          })
          client.send()
        })
      }

      noError('GET', 200)
      noError('GET', 400)
      noError('GET', 401)
      noError('GET', 404)
      noError('GET', 410)
      noError('GET', 500)
      noError('GET', 699)

      noError('HEAD', 200)
      noError('HEAD', 404)
      noError('HEAD', 500)
      noError('HEAD', 699)

      noError('POST', 200)
      noError('POST', 404)
      noError('POST', 500)
      noError('POST', 699)

      noError('PUT', 200)
      noError('PUT', 404)
      noError('PUT', 500)
      noError('PUT', 699)
    </script>
  </body>
</html>
