@@ -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,37 @@ 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+ } else if (params .objectId != null ) {
174+
175+ // Retrieve the object from which ever context it is in.
176+ const js_value = try bc .session .inspector .getValueByObjectId (cmd .arena , bc .session .executor , params .objectId .? );
177+ const entry = js_value .taggedAnyOpaque () orelse return error .ObjectIdIsNotANode ;
178+ const subtype = entry .subtype orelse return error .ObjectIdIsNotANode ;
179+ if (subtype != .node ) return error .ObjectIdIsNotANode ;
180+
181+ const node = try bc .node_registry .register (@ptrCast (entry .ptr ));
182+ return cmd .sendResult (.{ .node = bc .nodeWriter (node , .{}) }, .{});
183+ }
184+ return error .MissingParams ;
185+ }
186+
154187const testing = @import ("../testing.zig" );
155188
156189test "cdp.dom: getSearchResults unknown search id" {
0 commit comments