cdp: ctx state has init and deinit now

This commit is contained in:
Pierre Tachoire
2025-02-06 17:17:44 +01:00
parent 8b22313ca1
commit 39b3786776
3 changed files with 37 additions and 1 deletions

View File

@@ -34,6 +34,7 @@ const IncomingMessage = @import("msg.zig").IncomingMessage;
const Input = @import("msg.zig").Input; const Input = @import("msg.zig").Input;
const inspector = @import("inspector.zig").inspector; const inspector = @import("inspector.zig").inspector;
const dom = @import("dom.zig").dom; const dom = @import("dom.zig").dom;
const cdpdom = @import("dom.zig");
const css = @import("css.zig").css; const css = @import("css.zig").css;
const security = @import("security.zig").security; const security = @import("security.zig").security;
@@ -129,6 +130,33 @@ pub const State = struct {
loaderID: []const u8 = LoaderID, loaderID: []const u8 = LoaderID,
page_life_cycle_events: bool = false, // TODO; Target based value page_life_cycle_events: bool = false, // TODO; Target based value
// DOM
nodelist: cdpdom.NodeList,
nodesearchlist: cdpdom.NodeSearchList,
pub fn init(alloc: std.mem.Allocator) State {
return .{
.nodelist = cdpdom.NodeList.init(alloc),
.nodesearchlist = cdpdom.NodeSearchList.init(alloc),
};
}
pub fn deinit(self: *State) void {
self.nodelist.deinit();
// deinit all node searches.
for (self.nodesearchlist.items) |*s| s.deinit();
self.nodesearchlist.deinit();
}
pub fn reset(self: *State) void {
self.nodelist.reset();
// deinit all node searches.
for (self.nodesearchlist.items) |*s| s.deinit();
self.nodesearchlist.clearAndFree();
}
}; };
// Utils // Utils

View File

@@ -259,6 +259,7 @@ fn navigate(
log.debug("Req > id {d}, method {s}", .{ input.id, "page.navigate" }); log.debug("Req > id {d}, method {s}", .{ input.id, "page.navigate" });
// change state // change state
ctx.state.reset();
ctx.state.url = input.params.url; ctx.state.url = input.params.url;
// TODO: hard coded ID // TODO: hard coded ID
ctx.state.loaderID = "AF8667A203C5392DBE9AC290044AA4C2"; ctx.state.loaderID = "AF8667A203C5392DBE9AC290044AA4C2";

View File

@@ -69,13 +69,17 @@ pub const Ctx = struct {
last_active: ?std.time.Instant = null, last_active: ?std.time.Instant = null,
// CDP // CDP
state: cdp.State = .{}, state: cdp.State = undefined,
// JS fields // JS fields
browser: *Browser, // TODO: is pointer mandatory here? browser: *Browser, // TODO: is pointer mandatory here?
sessionNew: bool, sessionNew: bool,
// try_catch: jsruntime.TryCatch, // TODO // try_catch: jsruntime.TryCatch, // TODO
pub fn deinit(self: *Ctx) void {
self.state.deinit();
}
// callbacks // callbacks
// --------- // ---------
@@ -458,7 +462,10 @@ pub fn handle(
.accept_completion = &accept_completion, .accept_completion = &accept_completion,
.conn_completion = &conn_completion, .conn_completion = &conn_completion,
.timeout_completion = &timeout_completion, .timeout_completion = &timeout_completion,
.state = cdp.State.init(browser.session.alloc),
}; };
defer ctx.deinit();
try browser.session.initInspector( try browser.session.initInspector(
&ctx, &ctx,
Ctx.onInspectorResp, Ctx.onInspectorResp,