收紧导入结果消费边界
将文本、文档、图片和音频导入结果归一化提升到共享 HostBridge 契约 让 H5 facade 消费宿主导入结果前复核文件名、MIME、字节数和 base64 载荷 移除 H5 facade 本地导入 MIME Set 并用总门禁反查共享 normalizer 增加导入结果边界测试和超限结果回退覆盖 同步宿主壳协议文档和共享决策记录
This commit is contained in:
@@ -972,10 +972,6 @@ function assertH5HostBridgePayloadBoundaries() {
|
||||
);
|
||||
|
||||
for (const sharedBoundary of [
|
||||
'HOST_BRIDGE_TEXT_MIME_TYPES',
|
||||
'HOST_BRIDGE_DOCUMENT_MIME_TYPES',
|
||||
'HOST_BRIDGE_IMAGE_MIME_TYPES',
|
||||
'HOST_BRIDGE_AUDIO_MIME_TYPES',
|
||||
'HOST_BRIDGE_RUNTIME_REFRESH_TIMEOUT_MS',
|
||||
'HOST_BRIDGE_USER_INTERACTION_TIMEOUT_MS',
|
||||
'HOST_BRIDGE_SCANNER_TIMEOUT_MS',
|
||||
@@ -1132,6 +1128,54 @@ function assertH5HostBridgePayloadBoundaries() {
|
||||
'H5 HostBridge facade must normalize app.setTitle payloads with the shared title boundary',
|
||||
);
|
||||
}
|
||||
for (const importBoundary of [
|
||||
{
|
||||
functionName: 'importHostTextFile',
|
||||
normalizer: 'normalizeHostBridgeImportTextResult',
|
||||
},
|
||||
{
|
||||
functionName: 'importHostDocumentFile',
|
||||
normalizer: 'normalizeHostBridgeImportDocumentResult',
|
||||
},
|
||||
{
|
||||
functionName: 'importHostImageFile',
|
||||
normalizer: 'normalizeHostBridgeImportImageResult',
|
||||
},
|
||||
{
|
||||
functionName: 'captureHostImageFile',
|
||||
normalizer: 'normalizeHostBridgeImportImageResult',
|
||||
},
|
||||
{
|
||||
functionName: 'importHostAudioFile',
|
||||
normalizer: 'normalizeHostBridgeImportAudioResult',
|
||||
},
|
||||
{
|
||||
functionName: 'subscribeHostImageDrop',
|
||||
normalizer: 'normalizeHostBridgeImportImageResult',
|
||||
},
|
||||
]) {
|
||||
const functionSource = extractFunctionSource(
|
||||
h5HostBridgeSource,
|
||||
importBoundary.functionName,
|
||||
);
|
||||
if (!functionSource.includes(`${importBoundary.normalizer}(`)) {
|
||||
throw new Error(
|
||||
`${importBoundary.functionName} must normalize imported file results with shared ${importBoundary.normalizer}`,
|
||||
);
|
||||
}
|
||||
}
|
||||
for (const localMimeSet of [
|
||||
'HOST_BRIDGE_TEXT_MIME_TYPE_SET',
|
||||
'HOST_BRIDGE_DOCUMENT_MIME_TYPE_SET',
|
||||
'HOST_BRIDGE_IMAGE_MIME_TYPE_SET',
|
||||
'HOST_BRIDGE_AUDIO_MIME_TYPE_SET',
|
||||
]) {
|
||||
if (h5HostBridgeSource.includes(localMimeSet)) {
|
||||
throw new Error(
|
||||
`H5 HostBridge facade must use shared import normalizers instead of local ${localMimeSet}`,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function assertH5NativeAppTransportTimeoutBoundaries() {
|
||||
|
||||
Reference in New Issue
Block a user