xhr: implement prototype chain correctly

This commit is contained in:
Pierre Tachoire
2024-01-31 11:28:52 +01:00
parent af20584ff2
commit 8b6d7d0db0

View File

@@ -32,6 +32,10 @@ pub const XMLHttpRequestEventTarget = struct {
ontimeout_cbk: ?Callback = null,
onloadend_cbk: ?Callback = null,
pub fn constructor() !XMLHttpRequestEventTarget {
return .{};
}
pub fn set_onloadstart(self: *XMLHttpRequestEventTarget, handler: Callback) void {
self.onloadstart_cbk = handler;
}
@@ -55,6 +59,8 @@ pub const XMLHttpRequestEventTarget = struct {
pub const XMLHttpRequestUpload = struct {
pub const prototype = *XMLHttpRequestEventTarget;
pub const mem_guarantied = true;
proto: XMLHttpRequestEventTarget,
};
pub const XMLHttpRequest = struct {
@@ -67,6 +73,7 @@ pub const XMLHttpRequest = struct {
pub const LOADING: u16 = 3;
pub const DONE: u16 = 4;
proto: XMLHttpRequestEventTarget,
cli: Client,
impl: YieldImpl,
@@ -79,6 +86,7 @@ pub const XMLHttpRequest = struct {
pub fn constructor(alloc: std.mem.Allocator, loop: *Loop) !*XMLHttpRequest {
var req = try alloc.create(XMLHttpRequest);
req.* = XMLHttpRequest{
.proto = try XMLHttpRequestEventTarget.constructor(),
.headers = .{ .allocator = alloc, .owned = false },
.impl = undefined,
.uri = undefined,