4 Commits

Author SHA1 Message Date
Muki Kiboigo
28ec8d4b94 use page arena in get_sameDocument 2025-10-22 08:42:53 -07:00
Muki Kiboigo
6e42df2e71 set oncurrententrychange callback to null 2025-10-22 08:42:26 -07:00
Muki Kiboigo
6b924e8a4c use toEventTarget in NavigationEventTarget 2025-10-22 07:54:17 -07:00
Muki Kiboigo
80ae3c9fc6 not implemented on Navigation traverseTo 2025-10-22 07:54:10 -07:00
3 changed files with 9 additions and 5 deletions

View File

@@ -267,8 +267,10 @@ pub const TraverseToOptions = struct {
info: ?js.Object = null, info: ?js.Object = null,
}; };
pub fn _traverseTo(self: *Navigation, key: []const u8, _: ?TraverseToOptions, page: *Page) !NavigationReturn { pub fn _traverseTo(self: *Navigation, key: []const u8, _opts: ?TraverseToOptions, page: *Page) !NavigationReturn {
// const opts = _opts orelse TraverseToOptions{}; if (_opts != null) {
log.debug(.browser, "not implemented", .{ .options = _opts });
}
for (self.entries.items, 0..) |entry, i| { for (self.entries.items, 0..) |entry, i| {
if (std.mem.eql(u8, key, entry.key)) { if (std.mem.eql(u8, key, entry.key)) {

View File

@@ -22,7 +22,7 @@ fn register(
typ: []const u8, typ: []const u8,
listener: EventHandler.Listener, listener: EventHandler.Listener,
) !?js.Function { ) !?js.Function {
const target = @as(*parser.EventTarget, @ptrCast(self)); const target = parser.toEventTarget(NavigationEventTarget, self);
// The only time this can return null if the listener is already // The only time this can return null if the listener is already
// registered. But before calling `register`, all of our functions // registered. But before calling `register`, all of our functions
@@ -33,7 +33,7 @@ fn register(
} }
fn unregister(self: *NavigationEventTarget, typ: []const u8, cbk_id: usize) !void { fn unregister(self: *NavigationEventTarget, typ: []const u8, cbk_id: usize) !void {
const et = @as(*parser.EventTarget, @ptrCast(self)); const et = parser.toEventTarget(NavigationEventTarget, self);
// check if event target has already this listener // check if event target has already this listener
const lst = try parser.eventTargetHasListener(et, typ, false, cbk_id); const lst = try parser.eventTargetHasListener(et, typ, false, cbk_id);
if (lst == null) { if (lst == null) {
@@ -52,5 +52,7 @@ pub fn set_oncurrententrychange(self: *NavigationEventTarget, listener: ?EventHa
if (self.oncurrententrychange_cbk) |cbk| try self.unregister("currententrychange", cbk.id); if (self.oncurrententrychange_cbk) |cbk| try self.unregister("currententrychange", cbk.id);
if (listener) |listen| { if (listener) |listen| {
self.oncurrententrychange_cbk = try self.register(page.arena, "currententrychange", listen); self.oncurrententrychange_cbk = try self.register(page.arena, "currententrychange", listen);
} else {
self.oncurrententrychange_cbk = null;
} }
} }

View File

@@ -88,7 +88,7 @@ pub const NavigationHistoryEntry = struct {
pub fn get_sameDocument(self: *const NavigationHistoryEntry, page: *Page) !bool { pub fn get_sameDocument(self: *const NavigationHistoryEntry, page: *Page) !bool {
const _url = self.url orelse return false; const _url = self.url orelse return false;
const url = try URL.parse(_url, null); const url = try URL.parse(_url, null);
return page.url.eqlDocument(&url, page.arena); return page.url.eqlDocument(&url, page.call_arena);
} }
pub fn get_url(self: *const NavigationHistoryEntry) ?[]const u8 { pub fn get_url(self: *const NavigationHistoryEntry) ?[]const u8 {