@@ -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
@@ -148,6 +150,37 @@ fn resolveNode(cmd: anytype) !void {
148150 } }, .{});
149151}
150152
153+ fn describeNode (cmd : anytype ) ! void {
154+ const params = (try cmd .params (struct {
155+ nodeId : ? Node.Id = null ,
156+ backendNodeId : ? Node.Id = null ,
157+ objectId : ? []const u8 = null ,
158+ depth : ? u32 = null ,
159+ pierce : ? bool = null ,
160+ })) orelse return error .InvalidParams ;
161+ if (params .backendNodeId != null or params .depth != null or params .pierce != null ) {
162+ return error .NotYetImplementedParams ;
163+ }
164+
165+ const bc = cmd .browser_context orelse return error .BrowserContextNotLoaded ;
166+
167+ if (params .nodeId != null ) {
168+ const node = bc .node_registry .lookup_by_id .get (params .nodeId .? ) orelse return error .NodeNotFound ;
169+ return cmd .sendResult (.{ .root = bc .nodeWriter (node , .{}) }, .{});
170+ } else if (params .objectId != null ) {
171+ const jsValue = try bc .session .inspector .getValueByObjectId (cmd .arena , params .objectId .? );
172+ const entry = jsValue .externalEntry ().? ;
173+ const sub_type = entry .sub_type .? ;
174+
175+ if (! std .mem .eql (u8 , sub_type [0.. std .mem .len (sub_type )], "node" )) {
176+ return error .ObjectIdIsNotANode ;
177+ }
178+ const node = try bc .node_registry .register (@ptrCast (entry .ptr ));
179+ return cmd .sendResult (.{ .root = bc .nodeWriter (node , .{}) }, .{});
180+ }
181+ return error .MissingParams ;
182+ }
183+
151184const testing = @import ("../testing.zig" );
152185
153186test "cdp.dom: getSearchResults unknown search id" {
0 commit comments