- From: berniegp <notifications@github.com>
- Date: Tue, 18 Oct 2016 10:36:52 -0700
- To: whatwg/xhr <xhr@noreply.github.com>
- Message-ID: <whatwg/xhr/issues/88/254582071@github.com>
@annevk: you are right. I updated my previous comment with more code. The test [open-during-abort](https://github.com/w3c/web-platform-tests/blob/master/XMLHttpRequest/open-during-abort.htm) *does* set the state to UNSENT in the end. It does not show up in the test however because no `readystatechange` event is fired when setting the state to `UNSENT` in `abort()`. This can be proved by adding a line at the end: test(function() { var client = new XMLHttpRequest(), abort_flag = false, result = [], expected = [1, 4, 1] // open() => 1, abort() => 4, open() => 1 client.onreadystatechange = this.step_func(function() { result.push(client.readyState) if (abort_flag) { abort_flag = false client.open("GET", "...") } }) client.open("GET", "resources/well-formed.xml") client.send(null) abort_flag = true client.abort() assert_array_equals(result, expected) // succeeds in Firefox (as per spec), but fails in Chrome (readyState == UNSENT) assert_equals(client.readyState, 1) }) Maybe calling `open()` during `abort()` should not be supported, but if it is, the current behavior of Chrome leaves the request in a broken state. The user called `open()` but a subsequent call to `setRequestHeader()` would fail because the state is `UNSENT`. At the very least, the final `readyState` should be asserted in the test. As for the other part of this issue, the sequence 1. `xhr.open()` 2. `xhr.abort()` will set the state to `UNSENT` (not respecting the spec) as the test [abort-during-open](https://github.com/w3c/web-platform-tests/blob/master/XMLHttpRequest/abort-during-open.js) dictates and as the code shows. -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/whatwg/xhr/issues/88#issuecomment-254582071
Received on Tuesday, 18 October 2016 17:38:04 UTC