收口桌面壳文件诊断日志

桌面壳文件导入导出失败只记录固定阶段标签

扩展桌面壳配置门禁禁止文件日志输出路径和读写错误细节

补充宿主壳方案和共享决策中的文件诊断边界
This commit is contained in:
2026-06-21 14:47:31 +08:00
parent b81d7d415a
commit 8d5ecf305c
4 changed files with 82 additions and 74 deletions
+32 -13
View File
@@ -1199,8 +1199,8 @@ function assertDesktopDialogBoundary(method, functionName, filterLabel, expected
}
const failureLogger =
action === 'save'
? 'log_desktop_file_export_failure("path.convert", &error.to_string())'
: 'log_desktop_file_import_failure("path.convert", &error.to_string())';
? 'log_desktop_file_export_failure("path.convert")'
: 'log_desktop_file_import_failure("path.convert")';
if (!fileFunctionBody.includes(failureLogger)) {
throw new Error(`desktop shell ${method} must log native path conversion errors`);
}
@@ -2587,20 +2587,21 @@ const requiredRustHostSnippets = [
'file_import_unavailable_response',
'log_desktop_file_export_failure',
'log_desktop_file_import_failure',
'desktop file export failed for {label}: {error}',
'desktop file import failed for {label}: {error}',
'log_desktop_file_export_failure("path.convert", &error.to_string())',
'log_desktop_file_import_failure("path.convert", &error.to_string())',
'log_desktop_file_export_failure("write.text", &error.to_string())',
'log_desktop_file_export_failure("write.image", &error.to_string())',
'log_desktop_file_export_failure("write.audio", &error.to_string())',
'log_desktop_file_import_failure("read.text.join", &error.to_string())',
'log_desktop_file_import_failure("read.document.join", &error.to_string())',
'log_desktop_file_import_failure("read.image.join", &error.to_string())',
'log_desktop_file_import_failure("read.audio.join", &error.to_string())',
'desktop file export failed for {label}',
'desktop file import failed for {label}',
'log_desktop_file_export_failure("path.convert")',
'log_desktop_file_import_failure("path.convert")',
'log_desktop_file_export_failure("write.text")',
'log_desktop_file_export_failure("write.image")',
'log_desktop_file_export_failure("write.audio")',
'log_desktop_file_import_failure("read.text.join")',
'log_desktop_file_import_failure("read.document.join")',
'log_desktop_file_import_failure("read.image.join")',
'log_desktop_file_import_failure("read.audio.join")',
'desktop_file_cancelled_responses_are_stable',
'desktop_file_unavailable_responses_are_stable',
'desktop_file_failures_are_logged_without_exposing_native_detail',
'desktop_file_failures_log_stable_label_only',
'"file export cancelled"',
'"file import cancelled"',
'"file export unavailable"',
@@ -2744,6 +2745,24 @@ const requiredRustHostSnippets = [
'replay_state.complete(slot, response)',
];
for (const blockedDesktopFileLogSnippet of [
'desktop file export failed for {label}: {error}',
'desktop file import failed for {label}: {error}',
'log_desktop_file_export_failure("path.convert", &error.to_string())',
'log_desktop_file_import_failure("path.convert", &error.to_string())',
'log_desktop_file_export_failure("write.text", &error.to_string())',
'log_desktop_file_export_failure("write.image", &error.to_string())',
'log_desktop_file_export_failure("write.audio", &error.to_string())',
'log_desktop_file_import_failure("read.text.join", &error.to_string())',
'log_desktop_file_import_failure("read.document.join", &error.to_string())',
'log_desktop_file_import_failure("read.image.join", &error.to_string())',
'log_desktop_file_import_failure("read.audio.join", &error.to_string())',
]) {
if (desktopHostBridgeFilesSource.includes(blockedDesktopFileLogSnippet)) {
throw new Error('desktop shell file module must hide native file errors');
}
}
const desktopNavigationStateScriptBody = extractFunctionBody(
desktopShellNavigationSource,
'desktop_navigation_state_script',