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}")))?;
|
.map_err(|err| PipeError::Protocol(format!("browser websocket register failed: {err}")))?;
|
||||||
let _ = recv_bootstrap_prelude(&mut websocket);
|
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 {
|
} 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!([
|
let payload = json!([
|
||||||
request_url,
|
request_url,
|
||||||
open_action,
|
open_action,
|
||||||
|
|||||||
@@ -287,7 +287,7 @@ pub(crate) fn serve_client(
|
|||||||
&bootstrap_url,
|
&bootstrap_url,
|
||||||
Duration::from_secs(15),
|
Duration::from_secs(15),
|
||||||
BROWSER_RESPONSE_TIMEOUT,
|
BROWSER_RESPONSE_TIMEOUT,
|
||||||
false, // use_hidden_domain: visible tab for now
|
true, // use_hidden_domain: hidden domain for invisible helper
|
||||||
) {
|
) {
|
||||||
Ok(host) => {
|
Ok(host) => {
|
||||||
*cached_host = Some(Arc::new(host));
|
*cached_host = Some(Arc::new(host));
|
||||||
|
|||||||
Reference in New Issue
Block a user