From 7440b534f327a4e6dadd0a2e2d3f4c79b7fa9b8d Mon Sep 17 00:00:00 2001 From: SGavrl <277843151+SGavrl@users.noreply.github.com> Date: Wed, 1 Jul 2026 06:55:37 +0000 Subject: [PATCH] fix(cdp): stub setDownloadBehavior, detachFromTarget, activateTarget These Chrome CDP methods logged "Unknown method" warnings. obscura runs one page per session and does not download to disk, so there is nothing to do, but clients that call them should get a success ack instead of a warning. Added as no-op stubs. Refs #340. --- crates/obscura-cdp/src/dispatch.rs | 2 ++ crates/obscura-cdp/src/domains/target.rs | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/crates/obscura-cdp/src/dispatch.rs b/crates/obscura-cdp/src/dispatch.rs index 1fce87b..bb3b4a1 100644 --- a/crates/obscura-cdp/src/dispatch.rs +++ b/crates/obscura-cdp/src/dispatch.rs @@ -220,9 +220,11 @@ fn is_v8_free_method(method: &str) -> bool { | "Target.setAutoAttach" | "Target.getBrowserContexts" | "Target.createBrowserContext" | "Target.disposeBrowserContext" | "Target.getTargetInfo" + | "Target.detachFromTarget" | "Target.activateTarget" | "Browser.getVersion" | "Browser.close" | "Browser.getWindowForTarget" | "Browser.setDownloadBehavior" | "Browser.getWindowBounds" | "Browser.setWindowBounds" | "Page.enable" | "Page.disable" | "Page.getFrameTree" + | "Page.setDownloadBehavior" | "Page.setLifecycleEventsEnabled" | "Page.addScriptToEvaluateOnNewDocument" | "Page.removeScriptToEvaluateOnNewDocument" | "Page.setInterceptFileChooserDialog" | "Page.getNavigationHistory" diff --git a/crates/obscura-cdp/src/domains/target.rs b/crates/obscura-cdp/src/domains/target.rs index 748f1a6..ac3d37f 100644 --- a/crates/obscura-cdp/src/domains/target.rs +++ b/crates/obscura-cdp/src/domains/target.rs @@ -195,6 +195,10 @@ pub async fn handle(method: &str, params: &Value, ctx: &mut CdpContext) -> Resul Ok(json!({ "success": true })) } "setAutoAttach" => Ok(json!({})), + // No multi-target lifecycle to manage: obscura runs one page per session. + // Ack these so Chrome-shaped clients that call them do not warn (issue #340). + "detachFromTarget" => Ok(json!({})), + "activateTarget" => Ok(json!({})), "getBrowserContexts" => { Ok(json!({ "browserContextIds": [ctx.default_context.id] })) }