锁定桌面同源导航不可用响应
桌面同源页面导航主窗口缺失转为稳定 host_error 桌面同源页面导航失败转为稳定不可用响应 桌面同源导航单测覆盖不可用响应 code 和 message 桌面壳配置检查反查同源导航不可用边界
This commit is contained in:
@@ -1889,10 +1889,13 @@ for (const snippet of [
|
||||
'"external url unavailable"',
|
||||
'external_url_unavailable_response_is_stable',
|
||||
'open_desktop_host_bridge_native_page',
|
||||
'native_page_unavailable_response',
|
||||
'desktop_native_page_url_from_request',
|
||||
'normalize_native_page_url',
|
||||
'window.navigate(url)',
|
||||
'desktop_native_page_request_accepts_only_same_origin_h5_routes',
|
||||
'"native page unavailable"',
|
||||
'native_page_unavailable_response_is_stable',
|
||||
'reload_desktop_host_bridge_webview',
|
||||
'window.reload()',
|
||||
]) {
|
||||
|
||||
@@ -68,12 +68,16 @@ pub(crate) fn open_desktop_host_bridge_native_page(
|
||||
match app.get_webview_window("main") {
|
||||
Some(window) => match window.navigate(url) {
|
||||
Ok(()) => ok(request.id.clone(), json!(true)),
|
||||
Err(error) => failed(request.id.clone(), "host_error", error.to_string()),
|
||||
Err(_) => native_page_unavailable_response(request),
|
||||
},
|
||||
None => failed(request.id.clone(), "host_error", "main window not found"),
|
||||
None => native_page_unavailable_response(request),
|
||||
}
|
||||
}
|
||||
|
||||
fn native_page_unavailable_response(request: &HostBridgeRequest) -> HostBridgeResponse {
|
||||
failed(request.id.clone(), "host_error", "native page unavailable")
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -164,6 +168,16 @@ mod tests {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn native_page_unavailable_response_is_stable() {
|
||||
let response = native_page_unavailable_response(&request("navigation.openNativePage"));
|
||||
|
||||
assert!(!response.ok);
|
||||
let error = response.error.expect("native page error");
|
||||
assert_eq!(error.code, "host_error");
|
||||
assert_eq!(error.message, "native page unavailable");
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn reload_desktop_host_bridge_webview(
|
||||
|
||||
Reference in New Issue
Block a user