aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Shaughnessy <pshaughn@comcast.net>2020-01-25 17:47:47 -0500
committerPatrick Shaughnessy <pshaughn@comcast.net>2020-01-25 19:12:19 -0500
commit52d8336d7fc3d3451a9049da09c4c58a7a13a441 (patch)
treefe0f921e654ca5215d27d7c81c63df4145b8257b
parent937efba0cd6662b4e0060e7056c52dac2896535c (diff)
downloadservo-52d8336d7fc3d3451a9049da09c4c58a7a13a441.tar.gz
servo-52d8336d7fc3d3451a9049da09c4c58a7a13a441.zip
do less on abort if not done
-rw-r--r--components/script/dom/xmlhttprequest.rs23
-rw-r--r--tests/wpt/metadata/xhr/abort-during-open.any.js.ini9
-rw-r--r--tests/wpt/metadata/xhr/abort-event-abort.any.js.ini9
-rw-r--r--tests/wpt/metadata/xhr/send-data-unexpected-tostring.htm.ini3
4 files changed, 15 insertions, 29 deletions
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 1e8176cb781..08b37c946c5 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -758,7 +758,12 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
}
}
// Step 3
- self.ready_state.set(XMLHttpRequestState::Unsent);
+ if self.ready_state.get() == XMLHttpRequestState::Done {
+ self.change_ready_state(XMLHttpRequestState::Unsent);
+ self.response_status.set(Err(()));
+ self.response.borrow_mut().clear();
+ self.response_headers.borrow_mut().clear();
+ }
}
// https://xhr.spec.whatwg.org/#the-responseurl-attribute
@@ -961,13 +966,15 @@ impl XMLHttpRequest {
fn change_ready_state(&self, rs: XMLHttpRequestState) {
assert_ne!(self.ready_state.get(), rs);
self.ready_state.set(rs);
- let event = Event::new(
- &self.global(),
- atom!("readystatechange"),
- EventBubbles::DoesNotBubble,
- EventCancelable::Cancelable,
- );
- event.fire(self.upcast());
+ if rs != XMLHttpRequestState::Unsent {
+ let event = Event::new(
+ &self.global(),
+ atom!("readystatechange"),
+ EventBubbles::DoesNotBubble,
+ EventCancelable::Cancelable,
+ );
+ event.fire(self.upcast());
+ }
}
fn process_headers_available(
diff --git a/tests/wpt/metadata/xhr/abort-during-open.any.js.ini b/tests/wpt/metadata/xhr/abort-during-open.any.js.ini
deleted file mode 100644
index db9cfa6ab19..00000000000
--- a/tests/wpt/metadata/xhr/abort-during-open.any.js.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[abort-during-open.any.worker.html]
- [XMLHttpRequest: abort() during OPEN]
- expected: FAIL
-
-
-[abort-during-open.any.html]
- [XMLHttpRequest: abort() during OPEN]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/xhr/abort-event-abort.any.js.ini b/tests/wpt/metadata/xhr/abort-event-abort.any.js.ini
deleted file mode 100644
index 2c9fd921d01..00000000000
--- a/tests/wpt/metadata/xhr/abort-event-abort.any.js.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[abort-event-abort.any.html]
- [XMLHttpRequest: The abort() method: do not fire abort event in OPENED state when send() flag is unset.]
- expected: FAIL
-
-
-[abort-event-abort.any.worker.html]
- [XMLHttpRequest: The abort() method: do not fire abort event in OPENED state when send() flag is unset.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/xhr/send-data-unexpected-tostring.htm.ini b/tests/wpt/metadata/xhr/send-data-unexpected-tostring.htm.ini
index 8fa623e7c06..464ac7716b5 100644
--- a/tests/wpt/metadata/xhr/send-data-unexpected-tostring.htm.ini
+++ b/tests/wpt/metadata/xhr/send-data-unexpected-tostring.htm.ini
@@ -1,8 +1,5 @@
[send-data-unexpected-tostring.htm]
type: testharness
- [abort() called from data stringification]
- expected: FAIL
-
[open() called from data stringification]
expected: FAIL