From dc02352564618f2af412a6721d2de7906703bfc5 Mon Sep 17 00:00:00 2001 From: Mukilan Thiyagarajan Date: Thu, 6 Nov 2014 23:57:48 +0530 Subject: [PATCH 1/2] XHR - Trigger readystatechange when transitioning from HEADERS_RECEIVED to DONE Fixes #3877 --- components/script/dom/xmlhttprequest.rs | 35 +++++------ .../anonymous-mode-unsupported.htm.ini | 3 +- .../open-after-setrequestheader.htm.ini | 6 -- .../XMLHttpRequest/response-json.htm.ini | 7 ++- .../send-entity-body-get-head-async.htm.ini | 5 +- .../send-no-response-event-loadend.htm.ini | 6 -- .../send-no-response-event-order.htm.ini | 6 -- .../XMLHttpRequest/status-async.htm.ini | 7 ++- .../XMLHttpRequest/status-error.htm.ini | 60 ------------------- 9 files changed, 33 insertions(+), 102 deletions(-) delete mode 100644 tests/wpt/metadata/XMLHttpRequest/open-after-setrequestheader.htm.ini delete mode 100644 tests/wpt/metadata/XMLHttpRequest/send-no-response-event-loadend.htm.ini delete mode 100644 tests/wpt/metadata/XMLHttpRequest/send-no-response-event-order.htm.ini delete mode 100644 tests/wpt/metadata/XMLHttpRequest/status-error.htm.ini diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 869820e0ca6..da3c069c1f4 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -890,8 +890,8 @@ impl<'a> PrivateXMLHttpRequestHelpers for JSRef<'a, XMLHttpRequest> { }, LoadingMsg(_, partial_response) => { // For synchronous requests, this should not fire any events, and just store data - // Part of step 13, send() (processing response body) - // XXXManishearth handle errors, if any (substep 1) + // Part of step 11, send() (processing response body) + // XXXManishearth handle errors, if any (substep 2) *self.response.borrow_mut() = partial_response; if !self.sync.get() { @@ -903,22 +903,23 @@ impl<'a> PrivateXMLHttpRequestHelpers for JSRef<'a, XMLHttpRequest> { } }, DoneMsg(_) => { - // Part of step 13, send() (processing response end of file) - // XXXManishearth handle errors, if any (substep 1) + assert!(self.ready_state.get() == HeadersReceived || + self.ready_state.get() == Loading || + self.sync.get()); - // Substep 3 - if self.ready_state.get() == Loading || self.sync.get() { - // Subsubsteps 2-4 - self.send_flag.set(false); - self.change_ready_state(XHRDone); - return_if_fetch_was_terminated!(); - // Subsubsteps 5-7 - self.dispatch_response_progress_event("progress".to_string()); - return_if_fetch_was_terminated!(); - self.dispatch_response_progress_event("load".to_string()); - return_if_fetch_was_terminated!(); - self.dispatch_response_progress_event("loadend".to_string()); - } + // Part of step 11, send() (processing response end of file) + // XXXManishearth handle errors, if any (substep 2) + + // Subsubsteps 5-7 + self.send_flag.set(false); + self.change_ready_state(XHRDone); + return_if_fetch_was_terminated!(); + // Subsubsteps 10-12 + self.dispatch_response_progress_event("progress".to_string()); + return_if_fetch_was_terminated!(); + self.dispatch_response_progress_event("load".to_string()); + return_if_fetch_was_terminated!(); + self.dispatch_response_progress_event("loadend".to_string()); }, ErroredMsg(_, e) => { self.send_flag.set(false); diff --git a/tests/wpt/metadata/XMLHttpRequest/anonymous-mode-unsupported.htm.ini b/tests/wpt/metadata/XMLHttpRequest/anonymous-mode-unsupported.htm.ini index 68ac527cf9b..23151d36cc8 100644 --- a/tests/wpt/metadata/XMLHttpRequest/anonymous-mode-unsupported.htm.ini +++ b/tests/wpt/metadata/XMLHttpRequest/anonymous-mode-unsupported.htm.ini @@ -1,6 +1,5 @@ [anonymous-mode-unsupported.htm] type: testharness - expected: TIMEOUT [XMLHttpRequest: anonymous mode unsupported] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/XMLHttpRequest/open-after-setrequestheader.htm.ini b/tests/wpt/metadata/XMLHttpRequest/open-after-setrequestheader.htm.ini deleted file mode 100644 index fe5723848be..00000000000 --- a/tests/wpt/metadata/XMLHttpRequest/open-after-setrequestheader.htm.ini +++ /dev/null @@ -1,6 +0,0 @@ -[open-after-setrequestheader.htm] - type: testharness - expected: TIMEOUT - [XMLHttpRequest: open() after setRequestHeader()] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/XMLHttpRequest/response-json.htm.ini b/tests/wpt/metadata/XMLHttpRequest/response-json.htm.ini index 42aad34531e..9e2c61415ff 100644 --- a/tests/wpt/metadata/XMLHttpRequest/response-json.htm.ini +++ b/tests/wpt/metadata/XMLHttpRequest/response-json.htm.ini @@ -1,3 +1,8 @@ [response-json.htm] type: testharness - expected: TIMEOUT + [JSON object roundtrip] + expected: FAIL + + [JSON roundtrip with Japanese text] + expected: FAIL + diff --git a/tests/wpt/metadata/XMLHttpRequest/send-entity-body-get-head-async.htm.ini b/tests/wpt/metadata/XMLHttpRequest/send-entity-body-get-head-async.htm.ini index 06ade2dcc38..a33d84371f9 100644 --- a/tests/wpt/metadata/XMLHttpRequest/send-entity-body-get-head-async.htm.ini +++ b/tests/wpt/metadata/XMLHttpRequest/send-entity-body-get-head-async.htm.ini @@ -1,9 +1,8 @@ [send-entity-body-get-head-async.htm] type: testharness - expected: TIMEOUT [XMLHttpRequest: send() - non-empty data argument and GET/HEAD - async, no upload events should fire (GET)] - expected: NOTRUN + expected: FAIL [XMLHttpRequest: send() - non-empty data argument and GET/HEAD - async, no upload events should fire (HEAD)] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/XMLHttpRequest/send-no-response-event-loadend.htm.ini b/tests/wpt/metadata/XMLHttpRequest/send-no-response-event-loadend.htm.ini deleted file mode 100644 index 08affb449bf..00000000000 --- a/tests/wpt/metadata/XMLHttpRequest/send-no-response-event-loadend.htm.ini +++ /dev/null @@ -1,6 +0,0 @@ -[send-no-response-event-loadend.htm] - type: testharness - expected: TIMEOUT - [XMLHttpRequest: The send() method: Fire a progress event named loadend (no response entity body)] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/XMLHttpRequest/send-no-response-event-order.htm.ini b/tests/wpt/metadata/XMLHttpRequest/send-no-response-event-order.htm.ini deleted file mode 100644 index 4536937ac85..00000000000 --- a/tests/wpt/metadata/XMLHttpRequest/send-no-response-event-order.htm.ini +++ /dev/null @@ -1,6 +0,0 @@ -[send-no-response-event-order.htm] - type: testharness - expected: TIMEOUT - [XMLHttpRequest: The send() method: event order when there is no response entity body] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/XMLHttpRequest/status-async.htm.ini b/tests/wpt/metadata/XMLHttpRequest/status-async.htm.ini index 10840674376..46c45d1a172 100644 --- a/tests/wpt/metadata/XMLHttpRequest/status-async.htm.ini +++ b/tests/wpt/metadata/XMLHttpRequest/status-async.htm.ini @@ -1,3 +1,8 @@ [status-async.htm] type: testharness - expected: TIMEOUT + [XMLHttpRequest: status/statusText - various responses 7 (GET 402)] + expected: FAIL + + [XMLHttpRequest: status/statusText - various responses 9 (CHICKEN 402)] + expected: FAIL + diff --git a/tests/wpt/metadata/XMLHttpRequest/status-error.htm.ini b/tests/wpt/metadata/XMLHttpRequest/status-error.htm.ini deleted file mode 100644 index ea460a761aa..00000000000 --- a/tests/wpt/metadata/XMLHttpRequest/status-error.htm.ini +++ /dev/null @@ -1,60 +0,0 @@ -[status-error.htm] - type: testharness - expected: TIMEOUT - [XMLHttpRequest: status error handling GET 200] - expected: TIMEOUT - - [XMLHttpRequest: status error handling GET 400] - expected: TIMEOUT - - [XMLHttpRequest: status error handling GET 401] - expected: TIMEOUT - - [XMLHttpRequest: status error handling GET 404] - expected: TIMEOUT - - [XMLHttpRequest: status error handling GET 410] - expected: TIMEOUT - - [XMLHttpRequest: status error handling GET 500] - expected: TIMEOUT - - [XMLHttpRequest: status error handling GET 699] - expected: TIMEOUT - - [XMLHttpRequest: status error handling HEAD 200] - expected: TIMEOUT - - [XMLHttpRequest: status error handling HEAD 404] - expected: TIMEOUT - - [XMLHttpRequest: status error handling HEAD 500] - expected: TIMEOUT - - [XMLHttpRequest: status error handling HEAD 699] - expected: TIMEOUT - - [XMLHttpRequest: status error handling POST 200] - expected: TIMEOUT - - [XMLHttpRequest: status error handling POST 404] - expected: TIMEOUT - - [XMLHttpRequest: status error handling POST 500] - expected: TIMEOUT - - [XMLHttpRequest: status error handling POST 699] - expected: TIMEOUT - - [XMLHttpRequest: status error handling PUT 200] - expected: TIMEOUT - - [XMLHttpRequest: status error handling PUT 404] - expected: TIMEOUT - - [XMLHttpRequest: status error handling PUT 500] - expected: TIMEOUT - - [XMLHttpRequest: status error handling PUT 699] - expected: TIMEOUT - From 504fdbfac404b8eceb05f06dcb9243f362cc4ace Mon Sep 17 00:00:00 2001 From: Mukilan Thiyagarajan Date: Fri, 7 Nov 2014 06:26:26 +0530 Subject: [PATCH 2/2] Disable status-error.htm and status-async.htm due to #3596 --- tests/wpt/metadata/XMLHttpRequest/status-async.htm.ini | 6 +----- tests/wpt/metadata/XMLHttpRequest/status-error.htm.ini | 4 ++++ 2 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 tests/wpt/metadata/XMLHttpRequest/status-error.htm.ini diff --git a/tests/wpt/metadata/XMLHttpRequest/status-async.htm.ini b/tests/wpt/metadata/XMLHttpRequest/status-async.htm.ini index 46c45d1a172..9113fc4c36d 100644 --- a/tests/wpt/metadata/XMLHttpRequest/status-async.htm.ini +++ b/tests/wpt/metadata/XMLHttpRequest/status-async.htm.ini @@ -1,8 +1,4 @@ [status-async.htm] type: testharness - [XMLHttpRequest: status/statusText - various responses 7 (GET 402)] - expected: FAIL - - [XMLHttpRequest: status/statusText - various responses 9 (CHICKEN 402)] - expected: FAIL + disabled: issue 3596 diff --git a/tests/wpt/metadata/XMLHttpRequest/status-error.htm.ini b/tests/wpt/metadata/XMLHttpRequest/status-error.htm.ini new file mode 100644 index 00000000000..039a9e8c2df --- /dev/null +++ b/tests/wpt/metadata/XMLHttpRequest/status-error.htm.ini @@ -0,0 +1,4 @@ +[status-error.htm] + type: testharness + disabled: issue 3596 +