diff --git a/src/cdp/cdp.zig b/src/cdp/cdp.zig index 05e374a1..9ce311a4 100644 --- a/src/cdp/cdp.zig +++ b/src/cdp/cdp.zig @@ -34,6 +34,7 @@ const IncomingMessage = @import("msg.zig").IncomingMessage; const Input = @import("msg.zig").Input; const inspector = @import("inspector.zig").inspector; const dom = @import("dom.zig").dom; +const css = @import("css.zig").css; const log_cdp = std.log.scoped(.cdp); @@ -63,6 +64,7 @@ const Domains = enum { Runtime, Network, DOM, + CSS, Inspector, Emulation, Fetch, @@ -105,6 +107,7 @@ pub fn dispatch( .Runtime => runtime(alloc, msg, action, ctx), .Network => network(alloc, msg, action, ctx), .DOM => dom(alloc, msg, action, ctx), + .CSS => css(alloc, msg, action, ctx), .Inspector => inspector(alloc, msg, action, ctx), .Emulation => emulation(alloc, msg, action, ctx), .Fetch => fetch(alloc, msg, action, ctx), diff --git a/src/cdp/css.zig b/src/cdp/css.zig new file mode 100644 index 00000000..542a2400 --- /dev/null +++ b/src/cdp/css.zig @@ -0,0 +1,59 @@ +// Copyright (C) 2023-2024 Lightpanda (Selecy SAS) +// +// Francis Bouvier +// Pierre Tachoire +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +const std = @import("std"); + +const server = @import("../server.zig"); +const Ctx = server.Ctx; +const cdp = @import("cdp.zig"); +const result = cdp.result; +const IncomingMessage = @import("msg.zig").IncomingMessage; +const Input = @import("msg.zig").Input; + +const log = std.log.scoped(.cdp); + +const Methods = enum { + enable, +}; + +pub fn css( + alloc: std.mem.Allocator, + msg: *IncomingMessage, + action: []const u8, + ctx: *Ctx, +) ![]const u8 { + const method = std.meta.stringToEnum(Methods, action) orelse + return error.UnknownMethod; + + return switch (method) { + .enable => enable(alloc, msg, ctx), + }; +} + +fn enable( + alloc: std.mem.Allocator, + msg: *IncomingMessage, + _: *Ctx, +) ![]const u8 { + // input + const input = try Input(void).get(alloc, msg); + defer input.deinit(); + log.debug("Req > id {d}, method {s}", .{ input.id, "inspector.enable" }); + + return result(alloc, input.id, null, null, input.sessionId); +}