From 0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 03:47:29 +0200 Subject: Adding upstream version 115.8.0esr. Signed-off-by: Daniel Baumann --- .../tests/xhr/abort-during-readystatechange.any.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 testing/web-platform/tests/xhr/abort-during-readystatechange.any.js (limited to 'testing/web-platform/tests/xhr/abort-during-readystatechange.any.js') diff --git a/testing/web-platform/tests/xhr/abort-during-readystatechange.any.js b/testing/web-platform/tests/xhr/abort-during-readystatechange.any.js new file mode 100644 index 0000000000..a036376c6c --- /dev/null +++ b/testing/web-platform/tests/xhr/abort-during-readystatechange.any.js @@ -0,0 +1,19 @@ +"use strict"; +setup({ single_test: true }); + +const xhr = new XMLHttpRequest(); + +// In jsdom's implementation, this would cause a crash, as after firing readystatechange for HEADERS_RECEIVED, it would +// try to manipulate internal state. But that internal state got cleared during abort(). So jsdom needed to be modified +// to check if that internal state had gone away as a result of firing readystatechange, and if so, bail out. + +xhr.addEventListener("readystatechange", () => { + if (xhr.readyState === xhr.HEADERS_RECEIVED) { + xhr.abort(); + } else if (xhr.readyState === xhr.DONE) { + done(); + } +}); + +xhr.open("GET", "/common/blank.html"); +xhr.send(); -- cgit v1.2.3