From fac46d9d0bf1855b84c9dc11d60107d63ac42798 Mon Sep 17 00:00:00 2001 From: sjorsdonkers <72333389+sjorsdonkers@users.noreply.github.com> Date: Tue, 29 Apr 2025 16:56:50 +0200 Subject: [PATCH] Redo resolveNode --- src/cdp/domains/dom.zig | 65 ++++++++++------------------------------- 1 file changed, 16 insertions(+), 49 deletions(-) diff --git a/src/cdp/domains/dom.zig b/src/cdp/domains/dom.zig index bab645b2..ceb9bc93 100644 --- a/src/cdp/domains/dom.zig +++ b/src/cdp/domains/dom.zig @@ -166,61 +166,28 @@ fn resolveNode(cmd: anytype) !void { fn describeNode(cmd: anytype) !void { const params = (try cmd.params(struct { nodeId: ?Node.Id = null, - backendNodeId: ?u32 = null, - objectGroup: ?[]const u8 = null, - executionContextId: ?u32 = null, + backendNodeId: ?Node.Id = null, + objectId: ?[]const u8 = null, + depth: u32 = 1, + pierce: bool = false, })) orelse return error.InvalidParams; - - if (params.nodeId == null or params.backendNodeId != null or params.executionContextId != null) { + if (params.backendNodeId != null or params.depth != 1 or params.pierce) { return error.NotYetImplementedParams; } const bc = cmd.browser_context orelse return error.BrowserContextNotLoaded; - const page = bc.session.currentPage() orelse return error.PageNotLoaded; - const node = bc.node_registry.lookup_by_id.get(params.nodeId.?) orelse return error.UnknownNode; - // node._node is a *parser.Node we need this to be able to find its most derived type e.g. Node -> Element -> HTMLElement - // So we use the Node.Union when retrieve the value from the environment - const remote_object = try bc.inspector.getRemoteObject( - page.scope, - params.objectGroup orelse "", - try dom_node.Node.toInterface(node._node), - ); - defer remote_object.deinit(); - - const arena = cmd.arena; - return cmd.sendResult(.{ .object = .{ - .type = try remote_object.getType(arena), - .subtype = try remote_object.getSubtype(arena), - .className = try remote_object.getClassName(arena), - .description = try remote_object.getDescription(arena), - .objectId = try remote_object.getObjectId(arena), - } }, .{}); - - // const params = (try cmd.params(struct { - // nodeId: ?Node.Id = null, - // backendNodeId: ?Node.Id = null, - // objectId: ?[]const u8 = null, - // depth: u32 = 1, - // pierce: bool = false, - // })) orelse return error.InvalidParams; - // if (params.backendNodeId != null or params.depth != 1 or params.pierce) { - // return error.NotYetImplementedParams; - // } - - // const bc = cmd.browser_context orelse return error.BrowserContextNotLoaded; - - // if (params.nodeId != null) { - // const node = bc.node_registry.lookup_by_id.get(params.nodeId.?) orelse return error.NodeNotFound; - // return cmd.sendResult(.{ .node = bc.nodeWriter(node, .{}) }, .{}); - // } - // if (params.objectId != null) { - // // Retrieve the object from which ever context it is in. - // const parser_node = try bc.session.inspector.getNodePtr(cmd.arena, params.objectId.?); - // const node = try bc.node_registry.register(@ptrCast(parser_node)); - // return cmd.sendResult(.{ .node = bc.nodeWriter(node, .{}) }, .{}); - // } - // return error.MissingParams; + if (params.nodeId != null) { + const node = bc.node_registry.lookup_by_id.get(params.nodeId.?) orelse return error.NodeNotFound; + return cmd.sendResult(.{ .node = bc.nodeWriter(node, .{}) }, .{}); + } + if (params.objectId != null) { + // Retrieve the object from which ever context it is in. + const parser_node = try bc.inspector.getNodePtr(cmd.arena, params.objectId.?); + const node = try bc.node_registry.register(@ptrCast(parser_node)); + return cmd.sendResult(.{ .node = bc.nodeWriter(node, .{}) }, .{}); + } + return error.MissingParams; } const testing = @import("../testing.zig");