loop: reset the loop after page end

This commit is contained in:
Pierre Tachoire
2025-03-03 15:17:59 +01:00
parent 2a9bab3f13
commit bd7b84e136

View File

@@ -121,6 +121,7 @@ pub const Session = struct {
loader: Loader, loader: Loader,
env: Env, env: Env,
loop: *Loop,
inspector: jsruntime.Inspector, inspector: jsruntime.Inspector,
window: Window, window: Window,
@@ -143,6 +144,7 @@ pub const Session = struct {
.storageShed = storage.Shed.init(allocator), .storageShed = storage.Shed.init(allocator),
.arena = std.heap.ArenaAllocator.init(allocator), .arena = std.heap.ArenaAllocator.init(allocator),
.window = Window.create(null, .{ .agent = user_agent }), .window = Window.create(null, .{ .agent = user_agent }),
.loop = loop,
}; };
const arena = self.arena.allocator(); const arena = self.arena.allocator();
@@ -278,6 +280,9 @@ pub const Page = struct {
// reset js env and mem arena. // reset js env and mem arena.
pub fn end(self: *Page) void { pub fn end(self: *Page) void {
// Reset all existing callbacks.
self.session.loop.reset();
self.session.env.stop(); self.session.env.stop();
// TODO unload document: https://html.spec.whatwg.org/#unloading-documents // TODO unload document: https://html.spec.whatwg.org/#unloading-documents