收口移动壳导入文件名归一

新增共享 HostBridge 导入文件名清洗函数

移动文件导入改用导入专用文件名归一边界

补充契约测试、移动配置门禁和协议文档
This commit is contained in:
2026-06-20 03:04:21 +08:00
parent eb869fb844
commit e2fc7d78f3
6 changed files with 46 additions and 19 deletions
@@ -46,6 +46,7 @@ import {
normalizeHostBridgeHapticsImpactStyle,
normalizeHostBridgeImportAudioResult,
normalizeHostBridgeImportDocumentResult,
normalizeHostBridgeImportFileName,
normalizeHostBridgeImportImageResult,
normalizeHostBridgeImportTextResult,
normalizeHostBridgeLifecycleState,
@@ -423,17 +424,20 @@ describe('HostBridge shared contract helpers', () => {
});
test('归一化宿主文件导入结果', () => {
expect(normalizeHostBridgeImportFileName(' ../剧情:草稿?.md ')).toBe(
'剧情-草稿-.md',
);
expect(
normalizeHostBridgeImportTextResult({
action: 'selected',
fileName: ' 剧情.md ',
fileName: ' ../剧情:草稿?.md ',
content: '暖灯猫街',
mimeType: 'text/markdown',
bytes: 12,
}),
).toEqual({
action: 'selected',
fileName: '剧情.md',
fileName: '剧情-草稿-.md',
content: '暖灯猫街',
mimeType: 'text/markdown',
bytes: 12,
+2 -11
View File
@@ -721,17 +721,8 @@ function normalizeHostBridgeImportedBytes(rawBytes: unknown, maxBytes: number) {
return rawBytes;
}
function normalizeHostBridgeImportFileName(rawFileName: unknown) {
if (typeof rawFileName !== 'string') {
return null;
}
const fileName = rawFileName.trim();
if (!fileName || hasHostBridgeControlCharacter(fileName)) {
return null;
}
return fileName;
export function normalizeHostBridgeImportFileName(rawFileName: unknown) {
return normalizeHostBridgeExportFileName(rawFileName);
}
export function normalizeHostBridgeImportTextResult(