97fb15ac49
* Enable WebFrame method forwarding in sandboxed renderers Fixes #9073 * Non-change to kick CI
38 lines
1.5 KiB
JavaScript
38 lines
1.5 KiB
JavaScript
const electron = require('electron')
|
|
|
|
module.exports = () => {
|
|
// Call webFrame method
|
|
electron.ipcRenderer.on('ELECTRON_INTERNAL_RENDERER_WEB_FRAME_METHOD', (event, method, args) => {
|
|
electron.webFrame[method](...args)
|
|
})
|
|
|
|
electron.ipcRenderer.on('ELECTRON_INTERNAL_RENDERER_SYNC_WEB_FRAME_METHOD', (event, requestId, method, args) => {
|
|
const result = electron.webFrame[method](...args)
|
|
event.sender.send(`ELECTRON_INTERNAL_BROWSER_SYNC_WEB_FRAME_RESPONSE_${requestId}`, result)
|
|
})
|
|
|
|
electron.ipcRenderer.on('ELECTRON_INTERNAL_RENDERER_ASYNC_WEB_FRAME_METHOD', (event, requestId, method, args) => {
|
|
const responseCallback = function (result) {
|
|
Promise.resolve(result)
|
|
.then((resolvedResult) => {
|
|
event.sender.send(`ELECTRON_INTERNAL_BROWSER_ASYNC_WEB_FRAME_RESPONSE_${requestId}`, null, resolvedResult)
|
|
})
|
|
.catch((resolvedError) => {
|
|
if (resolvedError instanceof Error) {
|
|
// Errors get lost, because: JSON.stringify(new Error('Message')) === {}
|
|
// Take the serializable properties and construct a generic object
|
|
resolvedError = {
|
|
message: resolvedError.message,
|
|
stack: resolvedError.stack,
|
|
name: resolvedError.name,
|
|
__ELECTRON_SERIALIZED_ERROR__: true
|
|
}
|
|
}
|
|
|
|
event.sender.send(`ELECTRON_INTERNAL_BROWSER_ASYNC_WEB_FRAME_RESPONSE_${requestId}`, resolvedError)
|
|
})
|
|
}
|
|
args.push(responseCallback)
|
|
electron.webFrame[method](...args)
|
|
})
|
|
}
|