fix(cdp): add noop Emulation.setUserAgentOverride to prevent Playwright crash

Playwright calls Emulation.setUserAgentOverride when creating a
browser context with a custom user agent. Without this handler,
Lightpanda returns UnknownMethod which crashes the Playwright
driver.

Add a noop handler matching the existing pattern for other
Emulation methods (setDeviceMetricsOverride, setEmulatedMedia, etc.)
so the CDP handshake can proceed.

Fixes #1436

Signed-off-by: JiangNan <1394485448@qq.com>
This commit is contained in:
jnMetaCode
2026-03-16 17:07:56 +08:00
parent ddd34dc57b
commit 80c309aa69

View File

@@ -24,6 +24,7 @@ pub fn processMessage(cmd: anytype) !void {
setFocusEmulationEnabled, setFocusEmulationEnabled,
setDeviceMetricsOverride, setDeviceMetricsOverride,
setTouchEmulationEnabled, setTouchEmulationEnabled,
setUserAgentOverride,
}, cmd.input.action) orelse return error.UnknownMethod; }, cmd.input.action) orelse return error.UnknownMethod;
switch (action) { switch (action) {
@@ -31,6 +32,7 @@ pub fn processMessage(cmd: anytype) !void {
.setFocusEmulationEnabled => return setFocusEmulationEnabled(cmd), .setFocusEmulationEnabled => return setFocusEmulationEnabled(cmd),
.setDeviceMetricsOverride => return setDeviceMetricsOverride(cmd), .setDeviceMetricsOverride => return setDeviceMetricsOverride(cmd),
.setTouchEmulationEnabled => return setTouchEmulationEnabled(cmd), .setTouchEmulationEnabled => return setTouchEmulationEnabled(cmd),
.setUserAgentOverride => return setUserAgentOverride(cmd),
} }
} }
@@ -64,3 +66,8 @@ fn setDeviceMetricsOverride(cmd: anytype) !void {
fn setTouchEmulationEnabled(cmd: anytype) !void { fn setTouchEmulationEnabled(cmd: anytype) !void {
return cmd.sendResult(null, .{}); return cmd.sendResult(null, .{});
} }
// TODO: noop method
fn setUserAgentOverride(cmd: anytype) !void {
return cmd.sendResult(null, .{});
}