记录桌面壳生命周期状态读取失败
桌面生命周期窗口状态读取失败时记录具体字段并使用保守默认值 桌面壳配置检查拒绝窗口状态读取静默兜底 共享决策日志补充生命周期读取失败边界
This commit is contained in:
@@ -74,10 +74,30 @@ pub(crate) fn emit_desktop_lifecycle_payload(
|
||||
emit_desktop_lifecycle_event(window, payload.state, payload.focused, payload.native_state)
|
||||
}
|
||||
|
||||
fn resolve_desktop_lifecycle_window_flag(
|
||||
label: &'static str,
|
||||
result: tauri::Result<bool>,
|
||||
default_value: bool,
|
||||
) -> bool {
|
||||
match result {
|
||||
Ok(value) => value,
|
||||
Err(error) => {
|
||||
eprintln!("desktop host event failed for app.lifecycle.{label}: {error}");
|
||||
default_value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn emit_current_desktop_lifecycle_event(window: &WebviewWindow) -> tauri::Result<()> {
|
||||
let visible = window.is_visible().unwrap_or(true);
|
||||
let minimized = window.is_minimized().unwrap_or(false);
|
||||
let focused = window.is_focused().unwrap_or(visible && !minimized);
|
||||
let visible =
|
||||
resolve_desktop_lifecycle_window_flag("visible", window.is_visible(), true);
|
||||
let minimized =
|
||||
resolve_desktop_lifecycle_window_flag("minimized", window.is_minimized(), false);
|
||||
let focused = resolve_desktop_lifecycle_window_flag(
|
||||
"focused",
|
||||
window.is_focused(),
|
||||
visible && !minimized,
|
||||
);
|
||||
emit_desktop_lifecycle_payload(
|
||||
window,
|
||||
resolve_desktop_lifecycle_payload(focused, visible, minimized),
|
||||
@@ -151,6 +171,20 @@ mod tests {
|
||||
));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn desktop_lifecycle_window_flag_logs_failure_and_uses_default() {
|
||||
assert!(resolve_desktop_lifecycle_window_flag(
|
||||
"visible",
|
||||
Ok(true),
|
||||
false
|
||||
));
|
||||
assert!(!resolve_desktop_lifecycle_window_flag(
|
||||
"focused",
|
||||
Err(tauri::Error::WindowNotFound),
|
||||
false
|
||||
));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn desktop_lifecycle_payload_maps_hidden_and_minimized_to_background() {
|
||||
assert_eq!(
|
||||
|
||||
Reference in New Issue
Block a user