set correct state on xhr.abort and send correct events

This commit is contained in:
Karl Seguin
2025-07-04 19:12:26 +08:00
parent dfe90243d6
commit c331713401

View File

@@ -589,11 +589,27 @@ pub const XMLHttpRequest = struct {
} }
fn onErr(self: *XMLHttpRequest, err: anyerror) void { fn onErr(self: *XMLHttpRequest, err: anyerror) void {
self.state = .done;
self.send_flag = false; self.send_flag = false;
self.dispatchEvt("readystatechange");
self.dispatchProgressEvent("error", .{}); // capture the state before we change it
self.dispatchProgressEvent("loadend", .{}); const s = self.state;
const is_abort = err == DOMError.Abort;
if (is_abort) {
self.state = .unsent;
} else {
self.state = .done;
self.dispatchEvt("error");
}
if (s != .done or s != .unsent) {
self.dispatchEvt("readystatechange");
if (is_abort) {
self.dispatchProgressEvent("abort", .{});
}
self.dispatchProgressEvent("loadend", .{});
}
const level: log.Level = if (err == DOMError.Abort) .debug else .err; const level: log.Level = if (err == DOMError.Abort) .debug else .err;
log.log(.http, level, "error", .{ log.log(.http, level, "error", .{