feat: support cross-origin iframe snapshots and interactions via Target.setAutoAttach (#949)
* feat: support cross-origin iframe snapshots and interactions via Target.setAutoAttach (#925) Enable Target.setAutoAttach with flatten: true on page sessions so Chrome auto-creates dedicated CDP sessions for cross-origin iframe targets. - Add DrainedEvents struct, iframe_sessions map, attach/detach event handling - Extract resolve_ax_session (shared) and resolve_frame_session helpers - resolve_element_object_id returns (object_id, effective_session) tuple - resolve_element_center returns (x, y, effective_session) tuple - Input dispatch (click/hover/tap) uses effective session for correct coordinates - Thread iframe_sessions through element.rs, interaction.rs, screenshot.rs - Clear iframe sessions on navigate, tab switch, tab new, tab close - Ignore Target.setAutoAttach failure for non-Chrome backends (Lightpanda) - Unit tests for session resolution logic * fix * fix * fix --------- Co-authored-by: hyunjinee <leehj0110@kakao.com>
This commit is contained in:
@@ -420,6 +420,21 @@ impl BrowserManager {
|
||||
self.client
|
||||
.send_command_no_params("Network.enable", Some(session_id))
|
||||
.await?;
|
||||
// Enable auto-attach for cross-origin iframe support.
|
||||
// flatten: true gives each iframe its own session_id.
|
||||
// Ignored on engines that don't support it (e.g. Lightpanda).
|
||||
let _ = self
|
||||
.client
|
||||
.send_command(
|
||||
"Target.setAutoAttach",
|
||||
Some(json!({
|
||||
"autoAttach": true,
|
||||
"waitForDebuggerOnStart": false,
|
||||
"flatten": true
|
||||
})),
|
||||
Some(session_id),
|
||||
)
|
||||
.await;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user