[Bug 27033] XHR request termination doesn't terminate queued tasks

https://www.w3.org/Bugs/Public/show_bug.cgi?id=27033

--- Comment #18 from Hallvord R. M. Steen <hsteen@mozilla.com> ---
(In reply to Mukilan Thiyagarajan from comment #11)
> > It may be noteworthy that implementations consistently let open() prevent
> > the abort processing's onloadend event from firing. AFAIK the spec is out of
> > tune with implementations here.
> 
> I'm seeing the opposite behaviour on both Firefox (32.0) and Chrome
> (38.0.2125.104). Here is a test page that demonstrates the issue:
> 
> http://mukilan.github.io/servo_xhr_abort_and_open.html

Interesting - here you call abort() at a much later stage, with readyState
being 3 already and the content basically delivered.

BTW - your test with a suitable pass condition would be a welcome addition to
https://github.com/w3c/web-platform-tests/tree/master/XMLHttpRequest !

(In reply to Anne from comment #13)

> Are you saying that they do not eventually change it to UNSENT in case of
> abort() (when open() is not called)? Because I believe that part of the
> specification is actually tested.

Indeed it is - for example here:
http://w3c-test.org/XMLHttpRequest/abort-after-receive.htm

> > * Webkit (as seen in Opera and Chrome, Safari not tested) doesn't fire any
> > onabort events at all if you call abort() in the OPENED state.
> This is OPENED with the send() flag set, correct?

Correct, I presume - in for example the open-during-abort-processing test,
abort() is called from an onloadstart event handler, should happen right after
the send() flag is set.

> > It may be noteworthy that implementations consistently let open() prevent
> > the abort processing's onloadend event from firing. AFAIK the spec is out of
> > tune with implementations here.
> 
> So if that's the case we'd need to add a new flag "open()/abort() flag" or
> some such, that is checked before an event is fired.

An "actually reset" flag?
What if open() simply un-sets the send() flag, and those events are only fired
if the send() flag is set? 

(BTW - is it a spec bug that the open() method steps do not say "unset the
send() flag"? Seems like it should, i.e. 

xhr.send()
xhr.open()
xhr.setRequestHeader('foo', 'bar')

should presumably not throw.)

-- 
You are receiving this mail because:
You are the QA Contact for the bug.

Received on Monday, 20 October 2014 21:53:17 UTC