记录桌面壳生命周期状态读取失败
桌面生命周期窗口状态读取失败时记录具体字段并使用保守默认值 桌面壳配置检查拒绝窗口状态读取静默兜底 共享决策日志补充生命周期读取失败边界
This commit is contained in:
@@ -2253,7 +2253,9 @@ const requiredRustHostSnippets = [
|
||||
'WindowEvent::Focused',
|
||||
'WindowEvent::Resized',
|
||||
'resolve_desktop_lifecycle_payload',
|
||||
'resolve_desktop_lifecycle_window_flag',
|
||||
'emit_current_desktop_lifecycle_event',
|
||||
'desktop_lifecycle_window_flag_logs_failure_and_uses_default',
|
||||
'"background"',
|
||||
'"hidden"',
|
||||
'"minimized"',
|
||||
@@ -2273,9 +2275,9 @@ const requiredRustHostSnippets = [
|
||||
'PageLoadEvent::Finished',
|
||||
'replay_desktop_webview_state',
|
||||
'log_desktop_host_event_result',
|
||||
'window.is_focused()',
|
||||
'window.is_visible()',
|
||||
'window.is_minimized()',
|
||||
'resolve_desktop_lifecycle_window_flag("visible",',
|
||||
'resolve_desktop_lifecycle_window_flag("minimized",',
|
||||
'resolve_desktop_lifecycle_window_flag(\n "focused",',
|
||||
'resolve_desktop_network_status',
|
||||
'network.statusChanged',
|
||||
'register_desktop_navigation_events',
|
||||
@@ -2786,6 +2788,9 @@ for (const blockedLifecycleSnippet of [
|
||||
'let _ = emit_current_desktop_lifecycle_event(window)',
|
||||
'let _ = emit_current_desktop_lifecycle_event(&lifecycle_window)',
|
||||
'let _ = emit_desktop_image_drop_event(&drop_window',
|
||||
'window.is_visible().unwrap_or(',
|
||||
'window.is_minimized().unwrap_or(',
|
||||
'window.is_focused().unwrap_or(',
|
||||
'let _ = app.deep_link().register_all()',
|
||||
'let _ = window.navigate(target_url)',
|
||||
'let _ = show_main_window(window.app_handle())',
|
||||
|
||||
@@ -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