From 03849a58791789ba15d7a7ac48ce0591ff6c598d Mon Sep 17 00:00:00 2001 From: kdletters Date: Sat, 20 Jun 2026 22:25:16 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=A1=8C=E9=9D=A2=E6=B7=B1?= =?UTF-8?q?=E9=93=BE=E7=AA=97=E5=8F=A3=E7=BC=BA=E5=A4=B1=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 桌面深链在主窗口缺失时记录 deep_link.window 失败事件 补充桌面深链窗口缺失日志单测 扩展桌面壳配置门禁防止静默吞掉深链事件 --- apps/desktop-shell/scripts/check-config.mjs | 6 ++++++ apps/desktop-shell/src-tauri/src/shell/deep_link.rs | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/apps/desktop-shell/scripts/check-config.mjs b/apps/desktop-shell/scripts/check-config.mjs index b1368e294..320ec604f 100644 --- a/apps/desktop-shell/scripts/check-config.mjs +++ b/apps/desktop-shell/scripts/check-config.mjs @@ -2461,6 +2461,9 @@ const requiredRustHostSnippets = [ 'open_desktop_deep_link_url(window: &WebviewWindow, url: &Url) -> tauri::Result<()>', 'log_desktop_deep_link_current_result', 'desktop host event failed for deep_link.current', + 'log_desktop_deep_link_window_missing', + 'desktop host event failed for deep_link.window', + 'main window unavailable during', 'window.navigate(target_url)?', 'show_main_window(window.app_handle())', 'log_desktop_host_event_result("app_menu.show", show_main_window(app))', @@ -3286,6 +3289,9 @@ for (const snippet of [ 'log_desktop_deep_link_current_result(app.deep_link().get_current())', 'desktop host event failed for deep_link.current', 'desktop_deep_link_current_result_reports_success_empty_and_failure', + 'log_desktop_deep_link_window_missing("open")', + 'log_desktop_deep_link_window_missing("current")', + 'desktop_deep_link_window_missing_reports_failure', ]) { if (!desktopShellDeepLinkSource.includes(snippet)) { throw new Error(`desktop shell deep-link registration logging missing ${snippet}`); diff --git a/apps/desktop-shell/src-tauri/src/shell/deep_link.rs b/apps/desktop-shell/src-tauri/src/shell/deep_link.rs index 8aedc811d..628cadad9 100644 --- a/apps/desktop-shell/src-tauri/src/shell/deep_link.rs +++ b/apps/desktop-shell/src-tauri/src/shell/deep_link.rs @@ -100,10 +100,16 @@ fn log_desktop_deep_link_current_result( } } +fn log_desktop_deep_link_window_missing(stage: &str) -> bool { + eprintln!("desktop host event failed for deep_link.window: main window unavailable during {stage}"); + false +} + pub(crate) fn register_desktop_deep_link_events(app: &tauri::App) -> tauri::Result<()> { let app_handle = app.handle().clone(); app.deep_link().on_open_url(move |event| { let Some(window) = app_handle.get_webview_window("main") else { + log_desktop_deep_link_window_missing("open"); return; }; @@ -113,6 +119,7 @@ pub(crate) fn register_desktop_deep_link_events(app: &tauri::App) -> tauri::Resu }); let Some(window) = app.get_webview_window("main") else { + log_desktop_deep_link_window_missing("current"); return Ok(()); }; if let Some(urls) = log_desktop_deep_link_current_result(app.deep_link().get_current()) { @@ -286,4 +293,10 @@ mod tests { None ); } + + #[test] + fn desktop_deep_link_window_missing_reports_failure() { + assert!(!log_desktop_deep_link_window_missing("open")); + assert!(!log_desktop_deep_link_window_missing("current")); + } }