Skip to content

Commit 88655d8

Browse files
committed
handle null event listener
1 parent f7f3822 commit 88655d8

File tree

1 file changed

+31
-14
lines changed

1 file changed

+31
-14
lines changed

src/browser/xhr/event_target.zig

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -91,32 +91,49 @@ pub const XMLHttpRequestEventTarget = struct {
9191
return self.onreadystatechange_cbk;
9292
}
9393

94-
pub fn set_onloadstart(self: *XMLHttpRequestEventTarget, listener: EventHandler.Listener, page: *Page) !void {
94+
pub fn set_onloadstart(self: *XMLHttpRequestEventTarget, listener: ?EventHandler.Listener, page: *Page) !void {
9595
if (self.onloadstart_cbk) |cbk| try self.unregister("loadstart", cbk.id);
96-
self.onloadstart_cbk = try self.register(page.arena, "loadstart", listener);
96+
if (listener) |listen| {
97+
self.onloadstart_cbk = try self.register(page.arena, "loadstart", listen);
98+
}
9799
}
98-
pub fn set_onprogress(self: *XMLHttpRequestEventTarget, listener: EventHandler.Listener, page: *Page) !void {
100+
pub fn set_onprogress(self: *XMLHttpRequestEventTarget, listener: ?EventHandler.Listener, page: *Page) !void {
99101
if (self.onprogress_cbk) |cbk| try self.unregister("progress", cbk.id);
100-
self.onprogress_cbk = try self.register(page.arena, "progress", listener);
102+
if (listener) |listen| {
103+
self.onprogress_cbk = try self.register(page.arena, "progress", listen);
104+
}
101105
}
102-
pub fn set_onabort(self: *XMLHttpRequestEventTarget, listener: EventHandler.Listener, page: *Page) !void {
106+
pub fn set_onabort(self: *XMLHttpRequestEventTarget, listener: ?EventHandler.Listener, page: *Page) !void {
103107
if (self.onabort_cbk) |cbk| try self.unregister("abort", cbk.id);
104-
self.onabort_cbk = try self.register(page.arena, "abort", listener);
108+
if (listener) |listen| {
109+
self.onabort_cbk = try self.register(page.arena, "abort", listen);
110+
}
105111
}
106-
pub fn set_onload(self: *XMLHttpRequestEventTarget, listener: EventHandler.Listener, page: *Page) !void {
112+
pub fn set_onload(self: *XMLHttpRequestEventTarget, listener: ?EventHandler.Listener, page: *Page) !void {
107113
if (self.onload_cbk) |cbk| try self.unregister("load", cbk.id);
108-
self.onload_cbk = try self.register(page.arena, "load", listener);
114+
if (listener) |listen| {
115+
self.onload_cbk = try self.register(page.arena, "load", listen);
116+
}
109117
}
110-
pub fn set_ontimeout(self: *XMLHttpRequestEventTarget, listener: EventHandler.Listener, page: *Page) !void {
118+
pub fn set_ontimeout(self: *XMLHttpRequestEventTarget, listener: ?EventHandler.Listener, page: *Page) !void {
111119
if (self.ontimeout_cbk) |cbk| try self.unregister("timeout", cbk.id);
112-
self.ontimeout_cbk = try self.register(page.arena, "timeout", listener);
120+
121+
if (listener) |listen| {
122+
self.ontimeout_cbk = try self.register(page.arena, "timeout", listen);
123+
}
113124
}
114-
pub fn set_onloadend(self: *XMLHttpRequestEventTarget, listener: EventHandler.Listener, page: *Page) !void {
125+
pub fn set_onloadend(self: *XMLHttpRequestEventTarget, listener: ?EventHandler.Listener, page: *Page) !void {
115126
if (self.onloadend_cbk) |cbk| try self.unregister("loadend", cbk.id);
116-
self.onloadend_cbk = try self.register(page.arena, "loadend", listener);
127+
128+
if (listener) |listen| {
129+
self.onloadend_cbk = try self.register(page.arena, "loadend", listen);
130+
}
117131
}
118-
pub fn set_onreadystatechange(self: *XMLHttpRequestEventTarget, listener: EventHandler.Listener, page: *Page) !void {
132+
pub fn set_onreadystatechange(self: *XMLHttpRequestEventTarget, listener: ?EventHandler.Listener, page: *Page) !void {
119133
if (self.onreadystatechange_cbk) |cbk| try self.unregister("readystatechange", cbk.id);
120-
self.onreadystatechange_cbk = try self.register(page.arena, "readystatechange", listener);
134+
135+
if (listener) |listen| {
136+
self.onreadystatechange_cbk = try self.register(page.arena, "readystatechange", listen);
137+
}
121138
}
122139
};

0 commit comments

Comments
 (0)