锁定桌面外链打开不可用响应

桌面外链打开失败转为稳定 host_error

桌面外链打开单测覆盖不可用响应 code 和 message

桌面壳配置检查反查外链不可用边界
This commit is contained in:
2026-06-20 12:49:40 +08:00
parent c55beb62d9
commit 9b73edfbf9
2 changed files with 18 additions and 1 deletions
@@ -1881,10 +1881,13 @@ if (
}
for (const snippet of [
'open_desktop_host_bridge_external_url',
'external_url_unavailable_response',
'desktop_external_url_from_request',
'normalize_external_url',
'open_normalized_desktop_external_url(app, url)',
'desktop_external_url_request_accepts_only_safe_system_protocols',
'"external url unavailable"',
'external_url_unavailable_response_is_stable',
'open_desktop_host_bridge_native_page',
'desktop_native_page_url_from_request',
'normalize_native_page_url',
@@ -48,10 +48,14 @@ pub(crate) fn open_desktop_host_bridge_external_url(
match open_normalized_desktop_external_url(app, url) {
Ok(()) => ok(request.id.clone(), json!(true)),
Err(error) => failed(request.id.clone(), "host_error", error.to_string()),
Err(_) => external_url_unavailable_response(request),
}
}
fn external_url_unavailable_response(request: &HostBridgeRequest) -> HostBridgeResponse {
failed(request.id.clone(), "host_error", "external url unavailable")
}
pub(crate) fn open_desktop_host_bridge_native_page(
app: &tauri::AppHandle,
request: &HostBridgeRequest,
@@ -113,6 +117,16 @@ mod tests {
}
}
#[test]
fn external_url_unavailable_response_is_stable() {
let response = external_url_unavailable_response(&request("app.openExternalUrl"));
assert!(!response.ok);
let error = response.error.expect("external url error");
assert_eq!(error.code, "host_error");
assert_eq!(error.message, "external url unavailable");
}
#[test]
fn desktop_native_page_request_accepts_only_same_origin_h5_routes() {
let route = desktop_native_page_url_from_request(&request_with_url(