记录桌面深链窗口缺失失败
桌面深链在主窗口缺失时记录 deep_link.window 失败事件 补充桌面深链窗口缺失日志单测 扩展桌面壳配置门禁防止静默吞掉深链事件
This commit is contained in:
@@ -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}`);
|
||||
|
||||
@@ -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"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user