<!doctype html>
<html>
  <head>
    <title>XMLHttpRequest: open() after abort()</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <link rel="help" href="https://xhr.spec.whatwg.org/#the-open()-method" data-tested-assertations="following::ol/li[15] following::ol/li[15]/ol/li[1] following::ol/li[15]/ol/li[2]" />
  </head>
  <body>
    <div id="log"></div>
    <script>
      var test = async_test()
      test.step(function() {
        var client = new XMLHttpRequest(),
            result = [],
            expected = [1,  4, 1] // open() -> 1,
                                    // abort() -> 4, open() -> 1
        client.onreadystatechange = function() {
          test.step(function() {
            result.push(client.readyState)
          })
        }
        client.open("GET", "resources/well-formed.xml")
        assert_equals(client.readyState, 1)
        client.send(null)
        client.abort()
        assert_equals(client.readyState, 0)
        client.open("GET", "resources/well-formed.xml")
        assert_equals(client.readyState, 1)
        assert_array_equals(result, expected)
      })
      test.done()
    </script>
  </body>
</html>
