mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-03-31 09:29:42 +00:00
Compare commits
1 Commits
xhr_expand
...
remove_dea
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a4a024ce9c |
@@ -104,18 +104,6 @@ pub fn Builder(comptime T: type) type {
|
||||
};
|
||||
}
|
||||
|
||||
fn releaseRef(comptime T: type, ptr_id: usize, session: *Session) void {
|
||||
if (@hasDecl(T, "releaseRef")) {
|
||||
T.releaseRef(@ptrFromInt(ptr_id), session);
|
||||
return;
|
||||
}
|
||||
if (@hasField(T, "_proto")) {
|
||||
releaseRef(Struct(std.meta.fieldInfo(T, ._proto).type), ptr_id, session);
|
||||
return;
|
||||
}
|
||||
@compileError(@typeName(T) ++ " marked with finalizer without an acquireRef in its prototype chain");
|
||||
}
|
||||
|
||||
pub const Constructor = struct {
|
||||
func: *const fn (?*const v8.FunctionCallbackInfo) callconv(.c) void,
|
||||
|
||||
|
||||
@@ -44,7 +44,6 @@ _page: *Page,
|
||||
_proto: *XMLHttpRequestEventTarget,
|
||||
_arena: Allocator,
|
||||
_transfer: ?*HttpClient.Transfer = null,
|
||||
_has_ref: bool = false,
|
||||
|
||||
_url: [:0]const u8 = "",
|
||||
_method: net_http.Method = .GET,
|
||||
@@ -137,14 +136,6 @@ pub fn deinit(self: *XMLHttpRequest, session: *Session) void {
|
||||
session.releaseArena(self._arena);
|
||||
}
|
||||
|
||||
fn releaseSelfRef(self: *XMLHttpRequest) void {
|
||||
if (self._has_ref == false) {
|
||||
return;
|
||||
}
|
||||
self.releaseRef(self._page._session);
|
||||
self._has_ref = false;
|
||||
}
|
||||
|
||||
pub fn releaseRef(self: *XMLHttpRequest, session: *Session) void {
|
||||
self._rc.release(self, session);
|
||||
}
|
||||
@@ -261,8 +252,6 @@ pub fn send(self: *XMLHttpRequest, body_: ?[]const u8) !void {
|
||||
.error_callback = httpErrorCallback,
|
||||
.shutdown_callback = httpShutdownCallback,
|
||||
});
|
||||
self.acquireRef();
|
||||
self._has_ref = true;
|
||||
}
|
||||
|
||||
fn handleBlobUrl(self: *XMLHttpRequest, page: *Page) !void {
|
||||
@@ -404,6 +393,7 @@ fn httpStartCallback(transfer: *HttpClient.Transfer) !void {
|
||||
log.debug(.http, "request start", .{ .method = self._method, .url = self._url, .source = "xhr" });
|
||||
}
|
||||
self._transfer = transfer;
|
||||
self.acquireRef();
|
||||
}
|
||||
|
||||
fn httpHeaderCallback(transfer: *HttpClient.Transfer, header: net_http.Header) !void {
|
||||
@@ -511,8 +501,8 @@ fn httpErrorCallback(ctx: *anyopaque, err: anyerror) void {
|
||||
self.handleError(err);
|
||||
if (self._transfer != null) {
|
||||
self._transfer = null;
|
||||
self.releaseRef(self._page._session);
|
||||
}
|
||||
self.releaseSelfRef();
|
||||
}
|
||||
|
||||
fn httpShutdownCallback(ctx: *anyopaque) void {
|
||||
@@ -525,8 +515,8 @@ pub fn abort(self: *XMLHttpRequest) void {
|
||||
if (self._transfer) |transfer| {
|
||||
self._transfer = null;
|
||||
transfer.abort(error.Abort);
|
||||
self.releaseRef(self._page._session);
|
||||
}
|
||||
self.releaseSelfRef();
|
||||
}
|
||||
|
||||
fn handleError(self: *XMLHttpRequest, err: anyerror) void {
|
||||
|
||||
@@ -237,10 +237,6 @@ pub fn RC(comptime T: type) type {
|
||||
session.releaseArena(kv.value.arena);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn format(self: @This(), writer: *std.Io.Writer) !void {
|
||||
return writer.print("{d}", .{self._refs});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user