b500294c1d
* feat: add worldSafe flag for executeJS results * chore: do not log warning for webContents.executeJS * Apply suggestions from code review Co-authored-by: Jeremy Rose <jeremya@chromium.org> * chore: apply PR feedback * chore: split logic a bit * chore: allow primitives through the world safe checl * chore: clean up per PR feedback * chore: flip boolean logic * chore: update per PR feedback * chore: fix typo * chore: fix spec Co-authored-by: Jeremy Rose <jeremya@chromium.org>
25 lines
952 B
TypeScript
25 lines
952 B
TypeScript
import { webFrame, WebFrame } from 'electron';
|
|
import * as ipcRendererUtils from '@electron/internal/renderer/ipc-renderer-internal-utils';
|
|
|
|
// All keys of WebFrame that extend Function
|
|
type WebFrameMethod = {
|
|
[K in keyof WebFrame]:
|
|
WebFrame[K] extends Function ? K : never
|
|
}
|
|
|
|
export const webFrameInit = () => {
|
|
// Call webFrame method
|
|
ipcRendererUtils.handle('ELECTRON_INTERNAL_RENDERER_WEB_FRAME_METHOD', (
|
|
event, method: keyof WebFrameMethod, ...args: any[]
|
|
) => {
|
|
// TODO(MarshallOfSound): Remove once the world-safe-execute-javascript deprecation warning is removed
|
|
if (method.startsWith('executeJavaScript')) {
|
|
return (webFrame as any)[`_${method}`](...args);
|
|
}
|
|
|
|
// The TypeScript compiler cannot handle the sheer number of
|
|
// call signatures here and simply gives up. Incorrect invocations
|
|
// will be caught by "keyof WebFrameMethod" though.
|
|
return (webFrame[method] as any)(...args);
|
|
});
|
|
};
|