From f04030904e5a9cdf4d2e382c78ca4cf05b7a8fe2 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Fri, 2 May 2025 15:55:49 +0200 Subject: [PATCH] cdp: fix tests for setchildnodes --- src/cdp/domains/dom.zig | 23 +++++++++++++++-------- src/cdp/testing.zig | 1 + 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/cdp/domains/dom.zig b/src/cdp/domains/dom.zig index 91b4a0d5..b2735383 100644 --- a/src/cdp/domains/dom.zig +++ b/src/cdp/domains/dom.zig @@ -94,6 +94,7 @@ fn performSearch(cmd: anytype) !void { fn dispatchSetChildNodes(cmd: anytype, nodes: []*parser.Node) !void { const arena = cmd.arena; const bc = cmd.browser_context orelse return error.BrowserContextNotLoaded; + const session_id = bc.session_id orelse return error.SessionIdNotLoaded; var parents: std.ArrayListUnmanaged(*parser.Node) = .{}; for (nodes) |_n| { @@ -125,35 +126,41 @@ fn dispatchSetChildNodes(cmd: anytype, nodes: []*parser.Node) !void { continue; } + // Register the node. + const node = try bc.node_registry.register(n); // If the node has no parent, it's the root node. // We don't dispatch event for it because we assume the root node is // dispatched via the DOM.getDocument command. - const p = try parser.nodeParentNode(n) orelse break; - // Register the node. - const node = try bc.node_registry.register(n); + const p = try parser.nodeParentNode(n) orelse continue; + // Retrieve the parent from the registry. - const parent_node = bc.node_registry.lookup_by_node.get(p) orelse unreachable; + const parent_node = try bc.node_registry.register(p); try cmd.sendEvent("DOM.setChildNodes", .{ .parentId = parent_node.id, .nodes = .{bc.nodeWriter(node, .{})}, }, .{ - .session_id = bc.session_id.?, + .session_id = session_id, }); } // now dispatch the event for the node list. for (nodes) |n| { - const node = bc.node_registry.lookup_by_node.get(n) orelse unreachable; + // Register the node. + const node = try bc.node_registry.register(n); + // If the node has no parent, it's the root node. + // We don't dispatch event for it because we assume the root node is + // dispatched via the DOM.getDocument command. const p = try parser.nodeParentNode(n) orelse continue; + // Retrieve the parent from the registry. - const parent_node = bc.node_registry.lookup_by_node.get(p) orelse unreachable; + const parent_node = try bc.node_registry.register(p); try cmd.sendEvent("DOM.setChildNodes", .{ .parentId = parent_node.id, .nodes = .{bc.nodeWriter(node, .{})}, }, .{ - .session_id = bc.session_id.?, + .session_id = session_id, }); } } diff --git a/src/cdp/testing.zig b/src/cdp/testing.zig index 045fa7ee..fc19d3af 100644 --- a/src/cdp/testing.zig +++ b/src/cdp/testing.zig @@ -120,6 +120,7 @@ const TestContext = struct { } if (opts.html) |html| { + if (bc.session_id == null) bc.session_id = "SID-X"; parser.deinit(); try parser.init(); const page = try bc.session.createPage();