From f8f08814a26e63b6089d482a2071ccd167005e41 Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Thu, 14 Apr 2022 19:17:30 +0900 Subject: [PATCH] fix: apply senderFrame details to ipcMain port event (#33782) Co-authored-by: deepak1556 --- 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 ecf0bab08e94c..99bcd4c1cb7c4 100644 --- a/lib/browser/api/web-contents.ts +++ b/lib/browser/api/web-contents.ts @@ -617,6 +617,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 44ee2cfe498e8..0595531be86ff 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);