收口宿主导航诊断日志
微信小程序导航失败日志改为固定标签 移动 WebView 进程失败日志不再输出 detail 对象 补充门禁和共享决策记录
This commit is contained in:
@@ -1526,7 +1526,7 @@ for (const snippet of [
|
||||
'MOBILE_WEBVIEW_PROCESS_FAILURE_WINDOW_MS',
|
||||
'MOBILE_WEBVIEW_PROCESS_FAILURE_RELOAD_LIMIT',
|
||||
'handleWebViewProcessFailure',
|
||||
"console.warn('mobile WebView process failed'",
|
||||
'mobile WebView process failed for',
|
||||
"handleWebViewProcessFailure('content_process_terminated')",
|
||||
"handleWebViewProcessFailure('render_process_gone')",
|
||||
'normalizeMobileShellLoadFailure',
|
||||
@@ -1608,13 +1608,8 @@ if (shellAppSource.includes('catch(() => undefined)')) {
|
||||
throw new Error('mobile shell ShellApp must not hide async navigation failures');
|
||||
}
|
||||
|
||||
if (
|
||||
shellAppSource.includes("console.warn('mobile WebView process failed', {") &&
|
||||
shellAppSource.includes(
|
||||
"console.warn('mobile WebView process failed', {\n count: nextFailureWindow.count,\n label,\n url: webUrl,",
|
||||
)
|
||||
) {
|
||||
throw new Error('mobile shell WebView process diagnostics must not log H5 URLs');
|
||||
if (shellAppSource.includes("console.warn('mobile WebView process failed', {")) {
|
||||
throw new Error('mobile shell WebView process diagnostics must not log detail objects');
|
||||
}
|
||||
|
||||
if (!shellAppTestSource.includes('blocked WebView file downloads are logged for host diagnostics')) {
|
||||
@@ -2750,10 +2745,10 @@ for (const snippet of [
|
||||
'runtime deep link rejections are logged and fall back to a safe WebView URL',
|
||||
"'mobile shell deep link failed for runtime_url.rejected'",
|
||||
'first WebView process failure reloads the current page once',
|
||||
'mobile WebView process failed',
|
||||
'mobile WebView process failed for content_process_terminated',
|
||||
'repeated WebView process failures show the load failure panel and retry clears the failure window',
|
||||
"expect(screen.getByText('页面已停止')).toBeTruthy()",
|
||||
"expect(warnSpy).toHaveBeenCalledWith('mobile WebView process failed', {",
|
||||
'mobile WebView process failed for render_process_gone',
|
||||
]) {
|
||||
if (!shellAppTestSource.includes(snippet)) {
|
||||
throw new Error(`mobile shell ShellApp HostBridge event test missing ${snippet}`);
|
||||
|
||||
@@ -733,10 +733,9 @@ describe('ShellApp HostBridge event injection', () => {
|
||||
});
|
||||
|
||||
expect(shellHarness.reloadWebView).toHaveBeenCalledTimes(1);
|
||||
expect(warnSpy).toHaveBeenCalledWith('mobile WebView process failed', {
|
||||
count: 1,
|
||||
label: 'content_process_terminated',
|
||||
});
|
||||
expect(warnSpy).toHaveBeenCalledWith(
|
||||
'mobile WebView process failed for content_process_terminated',
|
||||
);
|
||||
|
||||
warnSpy.mockRestore();
|
||||
nowSpy.mockRestore();
|
||||
@@ -765,10 +764,9 @@ describe('ShellApp HostBridge event injection', () => {
|
||||
expect(screen.getByText('页面已停止')).toBeTruthy();
|
||||
});
|
||||
expect(shellHarness.reloadWebView).toHaveBeenCalledTimes(1);
|
||||
expect(warnSpy).toHaveBeenLastCalledWith('mobile WebView process failed', {
|
||||
count: 2,
|
||||
label: 'render_process_gone',
|
||||
});
|
||||
expect(warnSpy).toHaveBeenLastCalledWith(
|
||||
'mobile WebView process failed for render_process_gone',
|
||||
);
|
||||
|
||||
act(() => {
|
||||
screen.getByText('重试').click();
|
||||
|
||||
@@ -425,10 +425,7 @@ export default function ShellApp() {
|
||||
firstFailureAt: now,
|
||||
};
|
||||
webViewProcessFailureRef.current = nextFailureWindow;
|
||||
console.warn('mobile WebView process failed', {
|
||||
count: nextFailureWindow.count,
|
||||
label,
|
||||
});
|
||||
console.warn(`mobile WebView process failed for ${label}`);
|
||||
|
||||
if (nextFailureWindow.count <= MOBILE_WEBVIEW_PROCESS_FAILURE_RELOAD_LIMIT) {
|
||||
reloadCurrentWebView();
|
||||
|
||||
Reference in New Issue
Block a user