From 508741c3677dcc7344040cb8c7e2f524a24803e4 Mon Sep 17 00:00:00 2001 From: Francis Bouvier Date: Thu, 18 Apr 2024 20:53:18 +0200 Subject: [PATCH] Add Browser.getWindowForTarget Signed-off-by: Francis Bouvier --- src/cdp/browser.zig | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/src/cdp/browser.zig b/src/cdp/browser.zig index 12f6e4d0..3e49547b 100644 --- a/src/cdp/browser.zig +++ b/src/cdp/browser.zig @@ -2,12 +2,14 @@ const std = @import("std"); const server = @import("../server.zig"); const Ctx = server.Cmd; -const result = @import("cdp.zig").result; -const getParams = @import("cdp.zig").getParams; +const cdp = @import("cdp.zig"); +const result = cdp.result; +const getParams = cdp.getParams; const BrowserMethods = enum { getVersion, setDownloadBehavior, + getWindowForTarget, }; pub fn browser( @@ -22,6 +24,7 @@ pub fn browser( return switch (method) { .getVersion => browserGetVersion(alloc, id, scanner, ctx), .setDownloadBehavior => browserSetDownloadBehavior(alloc, id, scanner, ctx), + .getWindowForTarget => getWindowForTarget(alloc, id, scanner, ctx), }; } @@ -70,3 +73,33 @@ fn browserSetDownloadBehavior( _ = try getParams(alloc, Params, scanner); return result(alloc, id, null, null, null); } + +const DevToolsWindowID = 1923710101; + +fn getWindowForTarget( + alloc: std.mem.Allocator, + id: u64, + scanner: *std.json.Scanner, + _: *Ctx, +) ![]const u8 { + + // input + const Params = struct { + targetId: ?[]const u8 = null, + }; + const content = try cdp.getContent(alloc, ?Params, scanner); + std.debug.assert(content.sessionID != null); + + // output + const Resp = struct { + windowId: u64 = DevToolsWindowID, + bounds: struct { + left: ?u64 = null, + top: ?u64 = null, + width: ?u64 = null, + height: ?u64 = null, + windowState: []const u8 = "normal", + } = .{}, + }; + return result(alloc, id, Resp, Resp{}, content.sessionID.?); +}