From d65706a3b225ccb88d719478c19a379aef1b6047 Mon Sep 17 00:00:00 2001 From: JiaLiPassion Date: Mon, 14 Feb 2022 20:49:49 +0900 Subject: [PATCH] feat(zone.js): update electron patch to support electron/remote 14 (#45073) Close #43346 From electron 14, the `CallbacksRegistry` is moved to `@electron/remote` package, so all `remote` call between `main` process and `renderer` process is not being patched since the new version of electron released. Also `CallbacksRegistry` is not exported outside, so this commit make a `hack` patch to load `CallbacksRegistry` from `@electron/remote/dist/src/renderer/callbacks-registry` for patching. PR Close #45073 --- packages/zone.js/lib/extra/electron.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/zone.js/lib/extra/electron.ts b/packages/zone.js/lib/extra/electron.ts index f7155f61d41b8..71615ce0eb2bd 100644 --- a/packages/zone.js/lib/extra/electron.ts +++ b/packages/zone.js/lib/extra/electron.ts @@ -11,7 +11,17 @@ Zone.__load_patch('electron', (global: any, Zone: ZoneType, api: _ZonePrivate) = return delegate && delegate.apply(self, api.bindArguments(args, source)); }); } - const {desktopCapturer, shell, CallbacksRegistry, ipcRenderer} = require('electron'); + let {desktopCapturer, shell, CallbacksRegistry, ipcRenderer} = require('electron'); + if (!CallbacksRegistry) { + try { + // Try to load CallbacksRegistry class from @electron/remote src + // since from electron 14+, the CallbacksRegistry is moved to @electron/remote + // pacakge and not exported to outside, so this is a hack to patch CallbacksRegistry. + CallbacksRegistry = + require('@electron/remote/dist/src/renderer/callbacks-registry').CallbacksRegistry; + } catch (err) { + } + } // patch api in renderer process directly // desktopCapturer if (desktopCapturer) {