(workerTaskManager: IWorkerTaskManager)
| 20 | } |
| 21 | |
| 22 | export function initApplicationBridge(workerTaskManager: IWorkerTaskManager): void { |
| 23 | // Platform-agnostic handlers: systemInfo, updateSystemInfo, getPath |
| 24 | initApplicationBridgeCore(); |
| 25 | |
| 26 | ipcBridge.application.restart.provider(() => { |
| 27 | // 清理所有工作进程 |
| 28 | workerTaskManager.clear(); |
| 29 | // 重启应用 - 使用标准的 Electron 重启方式 |
| 30 | app.relaunch(); |
| 31 | app.exit(0); |
| 32 | return Promise.resolve(); |
| 33 | }); |
| 34 | |
| 35 | ipcBridge.application.isDevToolsOpened.provider(() => { |
| 36 | if (mainWindowRef && !mainWindowRef.isDestroyed()) { |
| 37 | return Promise.resolve(mainWindowRef.webContents.isDevToolsOpened()); |
| 38 | } |
| 39 | return Promise.resolve(false); |
| 40 | }); |
| 41 | |
| 42 | ipcBridge.application.reportRendererError.provider(({ type, message, stack, href, timestamp }) => { |
| 43 | mainError('[RendererCrash]', `${type}: ${message}`, { |
| 44 | href, |
| 45 | timestamp, |
| 46 | stack, |
| 47 | }); |
| 48 | return Promise.resolve(); |
| 49 | }); |
| 50 | |
| 51 | ipcBridge.application.openDevTools.provider(() => { |
| 52 | if (mainWindowRef && !mainWindowRef.isDestroyed()) { |
| 53 | const win = mainWindowRef; |
| 54 | const wasOpen = win.webContents.isDevToolsOpened(); |
| 55 | |
| 56 | if (wasOpen) { |
| 57 | win.webContents.closeDevTools(); |
| 58 | return Promise.resolve(false); |
| 59 | } else { |
| 60 | return new Promise((resolve) => { |
| 61 | const onOpened = () => { |
| 62 | win.webContents.off('devtools-opened', onOpened); |
| 63 | resolve(true); |
| 64 | }; |
| 65 | |
| 66 | win.webContents.once('devtools-opened', onOpened); |
| 67 | win.webContents.openDevTools(); |
| 68 | |
| 69 | setTimeout(() => { |
| 70 | win.webContents.off('devtools-opened', onOpened); |
| 71 | if (win.isDestroyed()) { |
| 72 | resolve(false); |
| 73 | return; |
| 74 | } |
| 75 | resolve(win.webContents.isDevToolsOpened()); |
| 76 | }, 500); |
| 77 | }); |
| 78 | } |
| 79 | } |
no test coverage detected