@@ -218,9 +218,10 @@ fn closeTarget(cmd: anytype) !void {
218218}
219219
220220fn getTargetInfo (cmd : anytype ) ! void {
221- const params = ( try cmd . params ( struct {
221+ const Params = struct {
222222 targetId : ? []const u8 = null ,
223- })) orelse return error .InvalidParams ;
223+ };
224+ const params : Params = (try cmd .params (Params )) orelse .{};
224225
225226 if (params .targetId ) | param_target_id | {
226227 const bc = cmd .browser_context orelse return error .BrowserContextNotLoaded ;
@@ -230,21 +231,25 @@ fn getTargetInfo(cmd: anytype) !void {
230231 }
231232
232233 return cmd .sendResult (.{
233- .targetId = target_id ,
234- .type = "page" ,
235- .title = "" ,
236- .url = "" ,
237- .attached = true ,
238- .canAccessOpener = false ,
234+ .targetInfo = .{
235+ .targetId = target_id ,
236+ .type = "page" ,
237+ .title = "" ,
238+ .url = "" ,
239+ .attached = true ,
240+ .canAccessOpener = false ,
241+ },
239242 }, .{ .include_session_id = false });
240243 }
241244
242245 return cmd .sendResult (.{
243- .type = "browser" ,
244- .title = "" ,
245- .url = "" ,
246- .attached = true ,
247- .canAccessOpener = false ,
246+ .targetInfo = .{
247+ .type = "browser" ,
248+ .title = "" ,
249+ .url = "" ,
250+ .attached = true ,
251+ .canAccessOpener = false ,
252+ },
248253 }, .{ .include_session_id = false });
249254}
250255
@@ -547,3 +552,54 @@ test "cdp.target: attachToTarget" {
547552 try ctx .expectSentEvent ("Target.attachedToTarget" , .{ .sessionId = session_id , .targetInfo = .{ .url = "chrome://newtab/" , .title = "about:blank" , .attached = true , .type = "page" , .canAccessOpener = false , .browserContextId = "BID-9" , .targetId = bc .target_id .? } }, .{});
548553 }
549554}
555+
556+ test "cdp.target: getTargetInfo" {
557+ var ctx = testing .context ();
558+ defer ctx .deinit ();
559+
560+ {
561+ try ctx .processMessage (.{ .id = 9 , .method = "Target.getTargetInfo" });
562+ try ctx .expectSentResult (.{
563+ .targetInfo = .{
564+ .type = "browser" ,
565+ .title = "" ,
566+ .url = "" ,
567+ .attached = true ,
568+ .canAccessOpener = false ,
569+ },
570+ }, .{ .id = 9 });
571+ }
572+
573+ {
574+ try testing .expectError (error .BrowserContextNotLoaded , ctx .processMessage (.{ .id = 10 , .method = "Target.getTargetInfo" , .params = .{ .targetId = "X" } }));
575+ try ctx .expectSentError (-31998 , "BrowserContextNotLoaded" , .{ .id = 10 });
576+ }
577+
578+ const bc = try ctx .loadBrowserContext (.{ .id = "BID-9" });
579+ {
580+ try testing .expectError (error .TargetNotLoaded , ctx .processMessage (.{ .id = 10 , .method = "Target.getTargetInfo" , .params = .{ .targetId = "TID-8" } }));
581+ try ctx .expectSentError (-31998 , "TargetNotLoaded" , .{ .id = 10 });
582+ }
583+
584+ // pretend we createdTarget first
585+ _ = try bc .session .createPage ();
586+ bc .target_id = "TID-A" ;
587+ {
588+ try testing .expectError (error .UnknownTargetId , ctx .processMessage (.{ .id = 10 , .method = "Target.getTargetInfo" , .params = .{ .targetId = "TID-8" } }));
589+ try ctx .expectSentError (-31998 , "UnknownTargetId" , .{ .id = 10 });
590+ }
591+
592+ {
593+ try ctx .processMessage (.{ .id = 11 , .method = "Target.getTargetInfo" , .params = .{ .targetId = "TID-A" } });
594+ try ctx .expectSentResult (.{
595+ .targetInfo = .{
596+ .targetId = "TID-A" ,
597+ .type = "page" ,
598+ .title = "" ,
599+ .url = "" ,
600+ .attached = true ,
601+ .canAccessOpener = false ,
602+ },
603+ }, .{ .id = 11 });
604+ }
605+ }
0 commit comments