收口移动文件导出响应边界

将 Expo 文本、图片和音频导出成功响应包装收口到 files 模块

让移动 dispatch 只委托文件导出请求

同步移动壳配置门禁和共享记忆
This commit is contained in:
2026-06-20 02:23:45 +08:00
parent ef198f6d4f
commit 40603e0163
4 changed files with 40 additions and 14 deletions
+13 -4
View File
@@ -1676,32 +1676,41 @@ assertMobileDocumentPickerBoundary(
'MOBILE_AUDIO_DOCUMENT_PICKER_TYPES',
);
for (const [wrapperName, importCall] of [
for (const [wrapperName, fileCall] of [
['exportMobileHostBridgeTextFile', 'ok(request, await exportTextFile(request.payload))'],
['importMobileHostBridgeTextFile', 'ok(request, await importTextFile())'],
['importMobileHostBridgeDocumentFile', 'ok(request, await importDocumentFile())'],
['exportMobileHostBridgeImageFile', 'ok(request, await exportImageFile(request.payload))'],
['importMobileHostBridgeImageFile', 'ok(request, await importImageFile())'],
['captureMobileHostBridgeImageFile', 'ok(request, await captureImageFile())'],
['exportMobileHostBridgeAudioFile', 'ok(request, await exportAudioFile(request.payload))'],
['importMobileHostBridgeAudioFile', 'ok(request, await importAudioFile())'],
]) {
const wrapperBody = extractFunctionBody(filesSource, wrapperName);
if (!wrapperBody.includes(importCall)) {
throw new Error(`mobile shell file import HostBridge wrapper missing ${importCall}`);
if (!wrapperBody.includes(fileCall)) {
throw new Error(`mobile shell file HostBridge wrapper missing ${fileCall}`);
}
}
if (
!dispatchSource.includes('exportMobileHostBridgeTextFile(request)') ||
!dispatchSource.includes('importMobileHostBridgeTextFile(request)') ||
!dispatchSource.includes('importMobileHostBridgeDocumentFile(request)') ||
!dispatchSource.includes('exportMobileHostBridgeImageFile(request)') ||
!dispatchSource.includes('importMobileHostBridgeImageFile(request)') ||
!dispatchSource.includes('captureMobileHostBridgeImageFile(request)') ||
!dispatchSource.includes('exportMobileHostBridgeAudioFile(request)') ||
!dispatchSource.includes('importMobileHostBridgeAudioFile(request)') ||
dispatchSource.includes('ok(request, await exportTextFile(request.payload))') ||
dispatchSource.includes('ok(request, await importTextFile())') ||
dispatchSource.includes('ok(request, await importDocumentFile())') ||
dispatchSource.includes('ok(request, await exportImageFile(request.payload))') ||
dispatchSource.includes('ok(request, await importImageFile())') ||
dispatchSource.includes('ok(request, await captureImageFile())') ||
dispatchSource.includes('ok(request, await exportAudioFile(request.payload))') ||
dispatchSource.includes('ok(request, await importAudioFile())')
) {
throw new Error('mobile shell dispatch must delegate file imports to files.ts');
throw new Error('mobile shell dispatch must delegate file requests to files.ts');
}
if (