锁定桌面刷新不可用响应
桌面 WebView 刷新主窗口缺失转为稳定 host_error 桌面 WebView 刷新失败转为稳定不可用响应 桌面刷新单测覆盖不可用响应 code 和 message 桌面壳配置检查反查刷新不可用边界
This commit is contained in:
@@ -1897,7 +1897,10 @@ for (const snippet of [
|
||||
'"native page unavailable"',
|
||||
'native_page_unavailable_response_is_stable',
|
||||
'reload_desktop_host_bridge_webview',
|
||||
'webview_reload_unavailable_response',
|
||||
'window.reload()',
|
||||
'"webview reload unavailable"',
|
||||
'webview_reload_unavailable_response_is_stable',
|
||||
]) {
|
||||
if (!desktopHostBridgeNavigationSource.includes(snippet)) {
|
||||
throw new Error(`desktop shell navigation module is missing ${snippet}`);
|
||||
|
||||
@@ -187,8 +187,32 @@ pub(crate) fn reload_desktop_host_bridge_webview(
|
||||
match app.get_webview_window("main") {
|
||||
Some(window) => match window.reload() {
|
||||
Ok(()) => ok(request.id.clone(), json!(true)),
|
||||
Err(error) => failed(request.id.clone(), "host_error", error.to_string()),
|
||||
Err(_) => webview_reload_unavailable_response(request),
|
||||
},
|
||||
None => failed(request.id.clone(), "host_error", "main window not found"),
|
||||
None => webview_reload_unavailable_response(request),
|
||||
}
|
||||
}
|
||||
|
||||
fn webview_reload_unavailable_response(request: &HostBridgeRequest) -> HostBridgeResponse {
|
||||
failed(
|
||||
request.id.clone(),
|
||||
"host_error",
|
||||
"webview reload unavailable",
|
||||
)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod reload_tests {
|
||||
use super::*;
|
||||
use crate::host_bridge::protocol::request;
|
||||
|
||||
#[test]
|
||||
fn webview_reload_unavailable_response_is_stable() {
|
||||
let response = webview_reload_unavailable_response(&request("app.reloadWebView"));
|
||||
|
||||
assert!(!response.ok);
|
||||
let error = response.error.expect("webview reload error");
|
||||
assert_eq!(error.code, "host_error");
|
||||
assert_eq!(error.message, "webview reload unavailable");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user