收口桌面壳拖拽图片诊断日志

桌面壳拖拽图片 payload 失败只记录固定事件标签

扩展桌面壳配置门禁禁止输出 payload 错误详情

补充宿主壳方案和共享决策中的拖拽图片诊断边界
This commit is contained in:
2026-06-21 03:01:56 +08:00
parent 6066a7be4f
commit dbfe743046
4 changed files with 23 additions and 9 deletions
+11 -1
View File
@@ -2612,11 +2612,12 @@ const requiredRustHostSnippets = [
'if !path.is_file() || import_image_mime_type(path).is_none()',
'match import_image_file_payload(path.clone(), "dropped", Some(position))',
'import_image_file_payload(path.clone(), "dropped", Some(position))',
'log_desktop_image_drop_payload_failure(&error)',
'log_desktop_image_drop_payload_failure()',
'file.imageDropped.payload',
'fn image_drop_without_valid_image_does_not_emit_payload()',
'fn image_drop_logs_invalid_candidate_then_uses_next_valid_image()',
'fn image_drop_payload_failure_reports_failure()',
'fn image_drop_payload_failure_logs_stable_label_only()',
'fs::create_dir_all(&directory_path)',
'assert_eq!(payload, None);',
'PageLoadEvent',
@@ -3368,3 +3369,12 @@ if (
) {
throw new Error('desktop lifecycle diagnostics must not log Tauri error details');
}
if (
rustHostSource.includes(
'desktop host event failed for file.imageDropped.payload: {error}',
) ||
rustHostSource.includes('log_desktop_image_drop_payload_failure(&error)')
) {
throw new Error('desktop image drop diagnostics must not log payload error details');
}
@@ -16,16 +16,16 @@ fn first_valid_desktop_image_drop_payload(
match import_image_file_payload(path.clone(), "dropped", Some(position)) {
Ok(payload) => Some(payload),
Err(error) => {
log_desktop_image_drop_payload_failure(&error);
Err(_error) => {
log_desktop_image_drop_payload_failure();
None
}
}
})
}
fn log_desktop_image_drop_payload_failure(error: &str) -> bool {
eprintln!("desktop host event failed for file.imageDropped.payload: {error}");
fn log_desktop_image_drop_payload_failure() -> bool {
eprintln!("desktop host event failed for file.imageDropped.payload");
false
}
@@ -129,9 +129,12 @@ mod tests {
#[test]
fn image_drop_payload_failure_reports_failure() {
assert!(!log_desktop_image_drop_payload_failure(
"image bytes do not match MIME",
));
assert!(!log_desktop_image_drop_payload_failure());
}
#[test]
fn image_drop_payload_failure_logs_stable_label_only() {
assert!(!log_desktop_image_drop_payload_failure());
}
#[test]
@@ -36,6 +36,7 @@
- 背景:桌面壳拖入图片时会按路径列表寻找第一个真实可导入图片;扩展名合法但内容损坏、超限或读取失败的文件如果被静默跳过,用户只会看到拖拽无反应,开发侧也缺少排障线索。
- 决策:`first_valid_desktop_image_drop_payload(...)` 对扩展名符合图片候选但 payload 组装失败的路径必须记录 `desktop host event failed for file.imageDropped.payload`,然后继续尝试后续候选;目录、非图片扩展名或没有任何有效图片仍保持不派发 `file.imageDropped` payload。
- 2026-06-21 调整:拖拽图片 payload 组装失败日志只记录固定 `file.imageDropped.payload` 标签,不把本机读取错误、文件内容校验错误或其它 payload 细节写入可分发桌面壳 stderr;配置检查拒绝重新输出 `: {error}`
- 影响范围:`apps/desktop-shell/src-tauri/src/shell/file_drop.rs``apps/desktop-shell/scripts/check-config.mjs`、宿主壳方案文档。
- 验证方式:`cargo test --manifest-path apps/desktop-shell/src-tauri/Cargo.toml shell::file_drop``npm run desktop-shell:typecheck``npm run check:native-shells``npm run check:encoding``git diff --check`
- 关联文档:`docs/【前端架构】ExpoReactNative与Tauri宿主壳方案-2026-06-17.md``docs/【前端架构】宿主壳能力统一协议-2026-06-17.md`
File diff suppressed because one or more lines are too long