<!DOCTYPE html>
<html>
<head>
    <link rel="help" href="https://xhr.spec.whatwg.org/#the-abort()-method" data-tested-assertations="following-sibling::ol/li[4]/ol/li[5]" />
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <title>XMLHttpRequest: The abort() method: do not fire abort event in OPENED state when send() flag is unset. send() throws after abort().</title>
</head>

<body>
    <div id="log"></div>

    <script type="text/javascript">
        var test = async_test()

        test.step(function()
        {
            var xhr = new XMLHttpRequest()

            xhr.onreadystatechange = function()
            {
                test.step(function()
                {
                    if (xhr.readyState == 1)
                    {
                        xhr.abort();
                    }
                });
            };

            xhr.onabort = function(e)
            {
                test.step(function()
                {
                    assert_unreached('when abort() is called, state is OPENED with the send() flag being unset, must not fire abort event per spec')
                });
            };

            xhr.open("GET", "./resources/content.py", true); // This should cause a readystatechange event that calls abort()
            assert_throws("InvalidStateError", function(){ xhr.send() })
            test.done()
        });
    </script>
</body>
</html>
