From fff13e39dc93b30fb2827087585a53058b394203 Mon Sep 17 00:00:00 2001 From: deepak1556 Date: Wed, 13 Apr 2022 18:06:49 +0900 Subject: [PATCH] fix: apply senderFrame details to ipcMain port event --- lib/browser/api/web-contents.ts | 1 + spec-main/api-ipc-spec.ts | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/lib/browser/api/web-contents.ts b/lib/browser/api/web-contents.ts index 84d8aed7af0af..b663f65961e95 100644 --- a/lib/browser/api/web-contents.ts +++ b/lib/browser/api/web-contents.ts @@ -602,6 +602,7 @@ WebContents.prototype._init = function () { }); this.on('-ipc-ports' as any, function (event: Electron.IpcMainEvent, internal: boolean, channel: string, message: any, ports: any[]) { + addSenderFrameToEvent(event); event.ports = ports.map(p => new MessagePortMain(p)); ipcMain.emit(channel, event, message); }); diff --git a/spec-main/api-ipc-spec.ts b/spec-main/api-ipc-spec.ts index c25a01d320dc4..c43eecf0effd1 100644 --- a/spec-main/api-ipc-spec.ts +++ b/spec-main/api-ipc-spec.ts @@ -212,6 +212,8 @@ describe('ipc module', () => { const [ev, msg] = await p; expect(msg).to.equal('hi'); expect(ev.ports).to.have.length(1); + expect(ev.senderFrame.parent).to.be.null(); + expect(ev.senderFrame.routingId).to.equal(w.webContents.mainFrame.routingId); const [port] = ev.ports; expect(port).to.be.an.instanceOf(EventEmitter); }); @@ -226,6 +228,7 @@ describe('ipc module', () => { const [ev, msg] = await p; expect(msg).to.equal('hi'); expect(ev.ports).to.deep.equal([]); + expect(ev.senderFrame.routingId).to.equal(w.webContents.mainFrame.routingId); }); it('can communicate between main and renderer', async () => { @@ -241,6 +244,7 @@ describe('ipc module', () => { }})()`); const [ev] = await p; expect(ev.ports).to.have.length(1); + expect(ev.senderFrame.routingId).to.equal(w.webContents.mainFrame.routingId); const [port] = ev.ports; port.start(); port.postMessage(42);