收口桌面壳拖拽图片诊断日志
桌面壳拖拽图片 payload 失败只记录固定事件标签 扩展桌面壳配置门禁禁止输出 payload 错误详情 补充宿主壳方案和共享决策中的拖拽图片诊断边界
This commit is contained in:
@@ -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
Reference in New Issue
Block a user