From 92ddb5640dbff999526410c3268b0b1cc49cab10 Mon Sep 17 00:00:00 2001 From: Muki Kiboigo Date: Wed, 5 Nov 2025 08:35:28 -0800 Subject: [PATCH] new NavigationEventTarget on new page --- src/browser/navigation/Navigation.zig | 6 ++++++ src/browser/session.zig | 3 +++ 2 files changed, 9 insertions(+) diff --git a/src/browser/navigation/Navigation.zig b/src/browser/navigation/Navigation.zig index 8f700ecf..ceba17e6 100644 --- a/src/browser/navigation/Navigation.zig +++ b/src/browser/navigation/Navigation.zig @@ -47,6 +47,12 @@ index: usize = 0, entries: std.ArrayListUnmanaged(*NavigationHistoryEntry) = .empty, next_entry_id: usize = 0, +pub fn resetForNewPage(self: *Navigation) void { + // libdom will automatically clean this up when a new page is made. + // We must create a new target whenever we create a new page. + self.proto = NavigationEventTarget{}; +} + pub fn get_canGoBack(self: *const Navigation) bool { return self.index > 0; } diff --git a/src/browser/session.zig b/src/browser/session.zig index 394e508b..0bb941ab 100644 --- a/src/browser/session.zig +++ b/src/browser/session.zig @@ -104,6 +104,9 @@ pub const Session = struct { // We need to init this early as JS event handlers may be registered through Runtime.evaluate before the first html doc is loaded parser.init(); + // creates a new event target for Navigation + self.navigation.resetForNewPage(); + const page_arena = &self.browser.page_arena; _ = page_arena.reset(.{ .retain_with_limit = 1 * 1024 * 1024 }); _ = self.browser.state_pool.reset(.{ .retain_with_limit = 4 * 1024 });