@@ -24,6 +24,7 @@ const LOADER_ID = "LOADERID42AA389647D702B4D805F49A";
2424
2525pub fn processMessage (cmd : anytype ) ! void {
2626 const action = std .meta .stringToEnum (enum {
27+ getTargets ,
2728 attachToTarget ,
2829 closeTarget ,
2930 createBrowserContext ,
@@ -38,6 +39,7 @@ pub fn processMessage(cmd: anytype) !void {
3839 }, cmd .input .action ) orelse return error .UnknownMethod ;
3940
4041 switch (action ) {
42+ .getTargets = > return getTargets (cmd ),
4143 .attachToTarget = > return attachToTarget (cmd ),
4244 .closeTarget = > return closeTarget (cmd ),
4345 .createBrowserContext = > return createBrowserContext (cmd ),
@@ -52,6 +54,31 @@ pub fn processMessage(cmd: anytype) !void {
5254 }
5355}
5456
57+ fn getTargets (cmd : anytype ) ! void {
58+ // Some clients like Stagehand expects to have an existing context.
59+ const bc = cmd .browser_context orelse cmd .createBrowserContext () catch | err | switch (err ) {
60+ error .AlreadyExists = > unreachable ,
61+ else = > return err ,
62+ };
63+
64+ const target_id = bc .target_id orelse {
65+ return cmd .sendResult (.{
66+ .targetInfos = [_ ]TargetInfo {},
67+ }, .{ .include_session_id = false });
68+ };
69+
70+ return cmd .sendResult (.{
71+ .targetInfos = [_ ]TargetInfo {.{
72+ .targetId = target_id ,
73+ .type = "page" ,
74+ .title = "" ,
75+ .url = "" ,
76+ .attached = true ,
77+ .canAccessOpener = false ,
78+ }},
79+ }, .{ .include_session_id = false });
80+ }
81+
5582fn getBrowserContexts (cmd : anytype ) ! void {
5683 var browser_context_ids : []const []const u8 = undefined ;
5784 if (cmd .browser_context ) | bc | {
0 commit comments