锁定移动壳注入消息来源字段

补充移动壳 HostBridge 注入 source 与 origin 断言

更新移动壳配置门禁反查注入来源测试
This commit is contained in:
2026-06-20 22:10:19 +08:00
parent a3751f18af
commit 927c4d5f4e
2 changed files with 10 additions and 0 deletions
@@ -2612,6 +2612,9 @@ for (const snippet of [
'mobile HostBridge message injection failed',
"test('drops delayed HostBridge responses after shell unmount'",
"id: 'network-request-1'",
'expectInjectedHostBridgeMessageSource',
"expect(script).toContain('origin: window.location.origin')",
"expect(script).toContain('source: window')",
"type: 'genarrative.mobile.historyState'",
'mobile host event failed for network.statusChanged',
'external WebView navigation native failures stay outside the WebView',
@@ -245,6 +245,11 @@ function extractInjectedHostBridgeMessage(script: string) {
return JSON.parse(JSON.parse(encodedMessage)) as unknown;
}
function expectInjectedHostBridgeMessageSource(script: string) {
expect(script).toContain('origin: window.location.origin');
expect(script).toContain('source: window');
}
function hostBridgeMessages() {
return shellHarness.injectedScripts.map(extractInjectedHostBridgeMessage);
}
@@ -322,6 +327,7 @@ describe('ShellApp QR scanner HostBridge flow', () => {
const responseScript = shellHarness.injectedScripts.find((script) =>
script.includes('scan-request-1'),
);
expectInjectedHostBridgeMessageSource(responseScript ?? '');
const response = extractInjectedHostBridgeMessage(responseScript ?? '');
expect(response).toMatchObject({
@@ -446,6 +452,7 @@ describe('ShellApp HostBridge event injection', () => {
shellHarness.appStateListeners[0]?.('background');
const event = hostBridgeEvent('app.lifecycle');
expectInjectedHostBridgeMessageSource(shellHarness.injectedScripts[0] ?? '');
expect(event).toMatchObject({
event: 'app.lifecycle',
payload: {