fix(callback_host): close orphaned helper page before opening on same WS connection
Sends sgHideBrowerserClosePage (best-effort) before sgHideBrowerserOpenPage on the same bootstrap WebSocket connection. This prevents duplicate helper pages across process restarts. Also enables hidden domain mode so the helper page is not visible to users. 🤖 Generated with [Qoder][https://qoder.com]
This commit is contained in:
@@ -357,11 +357,17 @@ fn bootstrap_helper_page(
|
||||
))
|
||||
.map_err(|err| PipeError::Protocol(format!("browser websocket register failed: {err}")))?;
|
||||
let _ = recv_bootstrap_prelude(&mut websocket);
|
||||
let open_action = if use_hidden_domain {
|
||||
"sgHideBrowerserOpenPage"
|
||||
|
||||
// Close any orphaned helper page from a previous process run.
|
||||
// Best-effort: if no page exists, the browser silently ignores this.
|
||||
let (open_action, close_action) = if use_hidden_domain {
|
||||
("sgHideBrowerserOpenPage", "sgHideBrowerserClosePage")
|
||||
} else {
|
||||
"sgBrowerserOpenPage"
|
||||
("sgBrowerserOpenPage", "sgBrowserClosePage")
|
||||
};
|
||||
let close_payload = json!([request_url, close_action, helper_url]).to_string();
|
||||
let _ = websocket.send(Message::Text(close_payload.into()));
|
||||
|
||||
let payload = json!([
|
||||
request_url,
|
||||
open_action,
|
||||
|
||||
@@ -287,7 +287,7 @@ pub(crate) fn serve_client(
|
||||
&bootstrap_url,
|
||||
Duration::from_secs(15),
|
||||
BROWSER_RESPONSE_TIMEOUT,
|
||||
false, // use_hidden_domain: visible tab for now
|
||||
true, // use_hidden_domain: hidden domain for invisible helper
|
||||
) {
|
||||
Ok(host) => {
|
||||
*cached_host = Some(Arc::new(host));
|
||||
|
||||
Reference in New Issue
Block a user