@@ -30,6 +30,7 @@ pub fn processMessage(cmd: anytype) !void {
3030 getSearchResults ,
3131 discardSearchResults ,
3232 resolveNode ,
33+ describeNode ,
3334 }, cmd .input .action ) orelse return error .UnknownMethod ;
3435
3536 switch (action ) {
@@ -39,6 +40,7 @@ pub fn processMessage(cmd: anytype) !void {
3940 .getSearchResults = > return getSearchResults (cmd ),
4041 .discardSearchResults = > return discardSearchResults (cmd ),
4142 .resolveNode = > return resolveNode (cmd ),
43+ .describeNode = > return describeNode (cmd ),
4244 }
4345}
4446
@@ -151,6 +153,33 @@ fn resolveNode(cmd: anytype) !void {
151153 } }, .{});
152154}
153155
156+ fn describeNode (cmd : anytype ) ! void {
157+ const params = (try cmd .params (struct {
158+ nodeId : ? Node.Id = null ,
159+ backendNodeId : ? Node.Id = null ,
160+ objectId : ? []const u8 = null ,
161+ depth : u32 = 1 ,
162+ pierce : bool = false ,
163+ })) orelse return error .InvalidParams ;
164+ if (params .backendNodeId != null or params .depth != 1 or params .pierce ) {
165+ return error .NotYetImplementedParams ;
166+ }
167+
168+ const bc = cmd .browser_context orelse return error .BrowserContextNotLoaded ;
169+
170+ if (params .nodeId != null ) {
171+ const node = bc .node_registry .lookup_by_id .get (params .nodeId .? ) orelse return error .NodeNotFound ;
172+ return cmd .sendResult (.{ .node = bc .nodeWriter (node , .{}) }, .{});
173+ }
174+ if (params .objectId != null ) {
175+ // Retrieve the object from which ever context it is in.
176+ const parser_node = try bc .session .inspector .getNodePtr (cmd .arena , params .objectId .? );
177+ const node = try bc .node_registry .register (@ptrCast (parser_node ));
178+ return cmd .sendResult (.{ .node = bc .nodeWriter (node , .{}) }, .{});
179+ }
180+ return error .MissingParams ;
181+ }
182+
154183const testing = @import ("../testing.zig" );
155184
156185test "cdp.dom: getSearchResults unknown search id" {
0 commit comments