锁定桌面外链打开不可用响应
桌面外链打开失败转为稳定 host_error 桌面外链打开单测覆盖不可用响应 code 和 message 桌面壳配置检查反查外链不可用边界
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user