aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2020-01-27 11:49:02 -0500
committerGitHub <noreply@github.com>2020-01-27 11:49:02 -0500
commitd0f64d9d56979f66a0de2f239c3fc691b45535d6 (patch)
tree6caf017d5c9fe5b9fb5dcdff42f1d7fc4f22defd
parentda31405785be7af8f652205fe03cdc431280834f (diff)
parent52d8336d7fc3d3451a9049da09c4c58a7a13a441 (diff)
downloadservo-d0f64d9d56979f66a0de2f239c3fc691b45535d6.tar.gz
servo-d0f64d9d56979f66a0de2f239c3fc691b45535d6.zip
Auto merge of #25610 - pshaughn:abortfix, r=Manishearth
do less on abort if not done Abort() was resetting state when it didn't need to, and possibly also not resetting as much of it as it needed to. I'm not sure if this is a completely correct fix but it passes some WPT tests. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #24931 <!-- Either: --> - [X] There are tests for these change <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
-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