(function () { const { setImmediate } = require('timers') const { ipcRenderer } = require('electron') window.ipcRenderer = ipcRenderer window.setImmediate = setImmediate window.require = require function invoke (code) { try { return code() } catch { return null } } process.once('loaded', () => { ipcRenderer.send('process-loaded') }) if (location.protocol === 'file:') { window.test = 'preload' window.process = process if (process.env.sandboxmain) { window.test = { osSandbox: !process.argv.includes('--no-sandbox'), hasCrash: typeof process.crash === 'function', hasHang: typeof process.hang === 'function', creationTime: invoke(() => process.getCreationTime()), heapStatistics: invoke(() => process.getHeapStatistics()), blinkMemoryInfo: invoke(() => process.getBlinkMemoryInfo()), processMemoryInfo: invoke(() => process.getProcessMemoryInfo() ? {} : null), systemMemoryInfo: invoke(() => process.getSystemMemoryInfo()), systemVersion: invoke(() => process.getSystemVersion()), cpuUsage: invoke(() => process.getCPUUsage()), ioCounters: invoke(() => process.getIOCounters()), env: process.env, execPath: process.execPath, pid: process.pid, arch: process.arch, platform: process.platform, sandboxed: process.sandboxed, type: process.type, version: process.version, versions: process.versions } } } else if (location.href !== 'about:blank') { addEventListener('DOMContentLoaded', () => { ipcRenderer.on('touch-the-opener', () => { let errorMessage = null try { const openerDoc = opener.document // eslint-disable-line no-unused-vars } catch (error) { errorMessage = error.message } ipcRenderer.send('answer', errorMessage) }) ipcRenderer.send('child-loaded', window.opener == null, document.body.innerHTML, location.href) }) } })()