mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-12-14 23:38:57 +00:00
cdp: add getTargets
This commit is contained in:
@@ -24,6 +24,7 @@ const LOADER_ID = "LOADERID42AA389647D702B4D805F49A";
|
|||||||
|
|
||||||
pub fn processMessage(cmd: anytype) !void {
|
pub fn processMessage(cmd: anytype) !void {
|
||||||
const action = std.meta.stringToEnum(enum {
|
const action = std.meta.stringToEnum(enum {
|
||||||
|
getTargets,
|
||||||
attachToTarget,
|
attachToTarget,
|
||||||
closeTarget,
|
closeTarget,
|
||||||
createBrowserContext,
|
createBrowserContext,
|
||||||
@@ -38,6 +39,7 @@ pub fn processMessage(cmd: anytype) !void {
|
|||||||
}, cmd.input.action) orelse return error.UnknownMethod;
|
}, cmd.input.action) orelse return error.UnknownMethod;
|
||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
|
.getTargets => return getTargets(cmd),
|
||||||
.attachToTarget => return attachToTarget(cmd),
|
.attachToTarget => return attachToTarget(cmd),
|
||||||
.closeTarget => return closeTarget(cmd),
|
.closeTarget => return closeTarget(cmd),
|
||||||
.createBrowserContext => return createBrowserContext(cmd),
|
.createBrowserContext => return createBrowserContext(cmd),
|
||||||
@@ -52,6 +54,31 @@ pub fn processMessage(cmd: anytype) !void {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn getTargets(cmd: anytype) !void {
|
||||||
|
// Some clients like Stagehand expects to have an existing context.
|
||||||
|
const bc = cmd.browser_context orelse cmd.createBrowserContext() catch |err| switch (err) {
|
||||||
|
error.AlreadyExists => unreachable,
|
||||||
|
else => return err,
|
||||||
|
};
|
||||||
|
|
||||||
|
const target_id = bc.target_id orelse {
|
||||||
|
return cmd.sendResult(.{
|
||||||
|
.targetInfos = [_]TargetInfo{},
|
||||||
|
}, .{ .include_session_id = false });
|
||||||
|
};
|
||||||
|
|
||||||
|
return cmd.sendResult(.{
|
||||||
|
.targetInfos = [_]TargetInfo{.{
|
||||||
|
.targetId = target_id,
|
||||||
|
.type = "page",
|
||||||
|
.title = "",
|
||||||
|
.url = "",
|
||||||
|
.attached = true,
|
||||||
|
.canAccessOpener = false,
|
||||||
|
}},
|
||||||
|
}, .{ .include_session_id = false });
|
||||||
|
}
|
||||||
|
|
||||||
fn getBrowserContexts(cmd: anytype) !void {
|
fn getBrowserContexts(cmd: anytype) !void {
|
||||||
var browser_context_ids: []const []const u8 = undefined;
|
var browser_context_ids: []const []const u8 = undefined;
|
||||||
if (cmd.browser_context) |bc| {
|
if (cmd.browser_context) |bc| {
|
||||||
|
|||||||
Reference in New Issue
Block a user