From dc3d2e97906e3d0b6df0b9917c4ca4fbaa7e8bf1 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Wed, 11 Mar 2026 08:21:35 +0800 Subject: [PATCH] Remove root context check from Env This was only added [very briefly] when Env managed Origins, which it no longer does. --- src/browser/Page.zig | 5 ++--- src/browser/Session.zig | 2 +- src/browser/js/Env.zig | 10 +--------- src/cdp/cdp.zig | 2 +- 4 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/browser/Page.zig b/src/browser/Page.zig index 10fc49a3..811e7e5c 100644 --- a/src/browser/Page.zig +++ b/src/browser/Page.zig @@ -332,12 +332,11 @@ pub fn deinit(self: *Page, abort_http: bool) void { session.releaseArena(qn.arena); } - const is_root = self.parent == null; - session.browser.env.destroyContext(self.js, is_root); + session.browser.env.destroyContext(self.js); self._script_manager.shutdown = true; - if (is_root) { + if (self.parent == null) { session.browser.http_client.abort(); } else if (abort_http) { // a small optimization, it's faster to abort _everything_ on the root diff --git a/src/browser/Session.zig b/src/browser/Session.zig index 9cce0ccf..529f0847 100644 --- a/src/browser/Session.zig +++ b/src/browser/Session.zig @@ -276,7 +276,7 @@ pub fn replacePage(self: *Session) !*Page { var current = self.page.?; const frame_id = current._frame_id; - current.deinit(false); + current.deinit(true); self.resetPageResources(); self.browser.env.memoryPressureNotification(.moderate); diff --git a/src/browser/js/Env.zig b/src/browser/js/Env.zig index 5bc2fded..e8488541 100644 --- a/src/browser/js/Env.zig +++ b/src/browser/js/Env.zig @@ -342,7 +342,7 @@ pub fn createContext(self: *Env, page: *Page) !*Context { return context; } -pub fn destroyContext(self: *Env, context: *Context, is_root: bool) void { +pub fn destroyContext(self: *Env, context: *Context) void { for (self.contexts[0..self.context_count], 0..) |ctx, i| { if (ctx == context) { // Swap with last element and decrement count @@ -365,14 +365,6 @@ pub fn destroyContext(self: *Env, context: *Context, is_root: bool) void { } context.deinit(); - - if (is_root) { - // When the root is destroyed, all of our contexts should be gone. - // Origin cleanup happens in Session.resetPageResources. - if (comptime IS_DEBUG) { - std.debug.assert(self.context_count == 0); - } - } } pub fn runMicrotasks(self: *Env) void { diff --git a/src/cdp/cdp.zig b/src/cdp/cdp.zig index 40057b8b..78e5ab50 100644 --- a/src/cdp/cdp.zig +++ b/src/cdp/cdp.zig @@ -759,7 +759,7 @@ const IsolatedWorld = struct { pub fn removeContext(self: *IsolatedWorld) !void { const ctx = self.context orelse return error.NoIsolatedContextToRemove; - self.browser.env.destroyContext(ctx, false); + self.browser.env.destroyContext(ctx); self.context = null; }