diff options
author | bors-servo <release+servo@mozilla.com> | 2014-06-02 11:37:29 -0400 |
---|---|---|
committer | bors-servo <release+servo@mozilla.com> | 2014-06-02 11:37:29 -0400 |
commit | 05a57848ad91dffcac011224656cd345af1dccd6 (patch) | |
tree | 926ee7aa05598326234e63c57aa4af95c02fb623 /src | |
parent | 8c73f252cab7ec5506d7d0cb22ea52f3ed2b613c (diff) | |
parent | bd3d7087fdb28cb434221449a0cc127400546462 (diff) | |
download | servo-05a57848ad91dffcac011224656cd345af1dccd6.tar.gz servo-05a57848ad91dffcac011224656cd345af1dccd6.zip |
auto merge of #2527 : Manishearth/servo/xhr-wpt-ready-state, r=Ms2ger
For the wpt test [open-open-send.htm](https://github.com/w3c/web-platform-tests/blob/master/XMLHttpRequest/open-open-send.htm)
Blocks #2525
Diffstat (limited to 'src')
-rw-r--r-- | src/components/script/dom/xmlhttprequest.rs | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/components/script/dom/xmlhttprequest.rs b/src/components/script/dom/xmlhttprequest.rs index a0986d14f70..02ae75e87dc 100644 --- a/src/components/script/dom/xmlhttprequest.rs +++ b/src/components/script/dom/xmlhttprequest.rs @@ -285,7 +285,9 @@ impl<'a> XMLHttpRequestMethods<'a> for JSRef<'a, XMLHttpRequest> { // XXXManishearth Set response to a NetworkError // Step 13 - self.change_ready_state(Opened); + if self.ready_state != Opened { + self.change_ready_state(Opened); + } //XXXManishearth fire a progressevent Ok(()) }, @@ -562,6 +564,7 @@ impl<'a> PrivateXMLHttpRequestHelpers for JSRef<'a, XMLHttpRequest> { } fn change_ready_state(&mut self, rs: XMLHttpRequestState) { + assert!(self.ready_state != rs) self.ready_state = rs; let win = &*self.global.root(); let mut event = @@ -583,7 +586,9 @@ impl<'a> PrivateXMLHttpRequestHelpers for JSRef<'a, XMLHttpRequest> { Some(ref h) => *self.response_headers = h.clone(), None => {} }; - self.change_ready_state(HeadersReceived); + if self.ready_state == Opened { + self.change_ready_state(HeadersReceived); + } }, LoadingMsg(partial_response) => { self.response = partial_response; @@ -593,12 +598,14 @@ impl<'a> PrivateXMLHttpRequestHelpers for JSRef<'a, XMLHttpRequest> { } }, DoneMsg => { - let len = self.response.len() as u64; - self.dispatch_response_progress_event("progress".to_owned()); - self.dispatch_response_progress_event("load".to_owned()); - self.dispatch_response_progress_event("loadend".to_owned()); - self.send_flag = false; - self.change_ready_state(XHRDone); + if self.ready_state == Loading { + let len = self.response.len() as u64; + self.dispatch_response_progress_event("progress".to_owned()); + self.dispatch_response_progress_event("load".to_owned()); + self.dispatch_response_progress_event("loadend".to_owned()); + self.send_flag = false; + self.change_ready_state(XHRDone); + } }, ErroredMsg => { self.send_flag = false; |