收紧桌面壳事件注册失败处理
桌面壳新窗口策略增加可测试决策函数 桌面壳 WebView 事件注册失败改为启动阻断或日志记录 桌面壳配置门禁禁止事件注册静默吞错 宿主壳协议和共享决策记录补充事件注册失败规则
This commit is contained in:
@@ -97,10 +97,32 @@ pub(crate) fn should_replay_desktop_webview_state_on_page_load(event: PageLoadEv
|
||||
event == PageLoadEvent::Finished
|
||||
}
|
||||
|
||||
pub(crate) fn log_desktop_webview_state_replay_result(
|
||||
label: &'static str,
|
||||
result: tauri::Result<()>,
|
||||
) -> bool {
|
||||
match result {
|
||||
Ok(()) => true,
|
||||
Err(error) => {
|
||||
eprintln!("desktop webview state replay failed for {label}: {error}");
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn replay_desktop_webview_state(window: &WebviewWindow) {
|
||||
let _ = emit_current_desktop_lifecycle_event(window);
|
||||
let _ = register_desktop_network_events(window);
|
||||
let _ = register_desktop_navigation_events(window);
|
||||
log_desktop_webview_state_replay_result(
|
||||
"app.lifecycle",
|
||||
emit_current_desktop_lifecycle_event(window),
|
||||
);
|
||||
log_desktop_webview_state_replay_result(
|
||||
"network.statusChanged",
|
||||
register_desktop_network_events(window),
|
||||
);
|
||||
log_desktop_webview_state_replay_result(
|
||||
"navigation.canGoBack",
|
||||
register_desktop_navigation_events(window),
|
||||
);
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
@@ -117,6 +139,15 @@ mod tests {
|
||||
));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn desktop_state_replay_result_reports_success_and_failure() {
|
||||
assert!(log_desktop_webview_state_replay_result("network", Ok(())));
|
||||
assert!(!log_desktop_webview_state_replay_result(
|
||||
"navigation",
|
||||
Err(tauri::Error::AssetNotFound("navigation".to_string()))
|
||||
));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn desktop_lifecycle_payload_maps_hidden_and_minimized_to_background() {
|
||||
assert_eq!(
|
||||
|
||||
Reference in New Issue
Block a user