add target.attachToBrowserTarget

This commit is contained in:
Pierre Tachoire
2026-03-03 12:54:30 +01:00
parent eee232c12c
commit 14b58e8062

View File

@@ -31,6 +31,7 @@ pub fn processMessage(cmd: anytype) !void {
const action = std.meta.stringToEnum(enum { const action = std.meta.stringToEnum(enum {
getTargets, getTargets,
attachToTarget, attachToTarget,
attachToBrowserTarget,
closeTarget, closeTarget,
createBrowserContext, createBrowserContext,
createTarget, createTarget,
@@ -47,6 +48,7 @@ pub fn processMessage(cmd: anytype) !void {
switch (action) { switch (action) {
.getTargets => return getTargets(cmd), .getTargets => return getTargets(cmd),
.attachToTarget => return attachToTarget(cmd), .attachToTarget => return attachToTarget(cmd),
.attachToBrowserTarget => return attachToBrowserTarget(cmd),
.closeTarget => return closeTarget(cmd), .closeTarget => return closeTarget(cmd),
.createBrowserContext => return createBrowserContext(cmd), .createBrowserContext => return createBrowserContext(cmd),
.createTarget => return createTarget(cmd), .createTarget => return createTarget(cmd),
@@ -251,6 +253,28 @@ fn attachToTarget(cmd: anytype) !void {
); );
} }
fn attachToBrowserTarget(cmd: anytype) !void {
const bc = cmd.browser_context orelse return error.BrowserContextNotLoaded;
const session_id = bc.session_id orelse cmd.cdp.session_id_gen.next();
try cmd.sendEvent("Target.attachedToTarget", AttachToTarget{
.sessionId = session_id,
.targetInfo = TargetInfo{
.targetId = bc.id, // We use the browser context is as browser's target id.
.title = "",
.url = "",
.type = "browser",
// Chrome doesn't send a browserContextId in this case.
.browserContextId = null,
},
}, .{});
bc.session_id = session_id;
return cmd.sendResult(null, .{});
}
fn closeTarget(cmd: anytype) !void { fn closeTarget(cmd: anytype) !void {
const params = (try cmd.params(struct { const params = (try cmd.params(struct {
targetId: []const u8, targetId: []const u8,