Skip to content

Commit bf428d8

Browse files
committed
cdp: add getTargets
1 parent c4bf37f commit bf428d8

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

src/cdp/domains/target.zig

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ const LOADER_ID = "LOADERID42AA389647D702B4D805F49A";
2424

2525
pub 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+
5582
fn getBrowserContexts(cmd: anytype) !void {
5683
var browser_context_ids: []const []const u8 = undefined;
5784
if (cmd.browser_context) |bc| {

0 commit comments

Comments
 (0)