diff --git a/srcpkgs/electron13/files/patches/electron-0001-Revert-fix-WebFrameMain-mojo-pipe-not-reset-30630.patch b/srcpkgs/electron13/files/patches/electron-0001-Revert-fix-WebFrameMain-mojo-pipe-not-reset-30630.patch new file mode 100644 index 00000000000..4d206160480 --- /dev/null +++ b/srcpkgs/electron13/files/patches/electron-0001-Revert-fix-WebFrameMain-mojo-pipe-not-reset-30630.patch @@ -0,0 +1,25 @@ +From 2eed61fc21cb71082afd894c3bcd482b9ed78c0f Mon Sep 17 00:00:00 2001 +From: John Zimmermann +Date: Mon, 30 Aug 2021 23:02:20 +0200 +Subject: [PATCH 1/2] Revert "fix: WebFrameMain mojo pipe not reset (#30630)" + +This reverts commit 7fb719f261e14a857ea4dbc6cfa8ab697670427d. +--- + shell/browser/api/electron_api_web_frame_main.cc | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/shell/browser/api/electron_api_web_frame_main.cc b/shell/browser/api/electron_api_web_frame_main.cc +index 780a976..185cdc4 100644 +--- a/shell/browser/api/electron_api_web_frame_main.cc ++++ b/shell/browser/api/electron_api_web_frame_main.cc +@@ -80,7 +80,6 @@ void WebFrameMain::UpdateRenderFrameHost(content::RenderFrameHost* rfh) { + // Should only be called when swapping frames. + DCHECK(render_frame_); + render_frame_ = rfh; +- renderer_api_.reset(); + } + + bool WebFrameMain::CheckRenderFrame() const { +-- +2.33.0 + diff --git a/srcpkgs/electron13/files/patches/electron-0002-Revert-fix-cross-origin-navigation-disposing-WebFram.patch b/srcpkgs/electron13/files/patches/electron-0002-Revert-fix-cross-origin-navigation-disposing-WebFram.patch new file mode 100644 index 00000000000..c8c2ddbdf3a --- /dev/null +++ b/srcpkgs/electron13/files/patches/electron-0002-Revert-fix-cross-origin-navigation-disposing-WebFram.patch @@ -0,0 +1,442 @@ +From d4f351228c8215eea316e74fca0a2d02cd7c19dc Mon Sep 17 00:00:00 2001 +From: John Zimmermann +Date: Mon, 30 Aug 2021 23:02:49 +0200 +Subject: [PATCH 2/2] Revert "fix: cross-origin navigation disposing + WebFrameMain instances (#30598)" + +This reverts commit 18de6be607dce5126f18216eb972061be86e3db0. +--- + .../browser/api/electron_api_web_contents.cc | 51 ++-------- + shell/browser/api/electron_api_web_contents.h | 5 +- + .../api/electron_api_web_frame_main.cc | 93 ++++++++++--------- + .../browser/api/electron_api_web_frame_main.h | 38 +++----- + spec-main/api-web-frame-main-spec.ts | 63 ++++++------- + 5 files changed, 98 insertions(+), 152 deletions(-) + +diff --git a/shell/browser/api/electron_api_web_contents.cc b/shell/browser/api/electron_api_web_contents.cc +index e2fc303..6211b08 100644 +--- a/shell/browser/api/electron_api_web_contents.cc ++++ b/shell/browser/api/electron_api_web_contents.cc +@@ -1386,9 +1386,7 @@ void WebContents::HandleNewRenderFrame( + if (rwh_impl) + rwh_impl->disable_hidden_ = !background_throttling_; + +- auto* web_frame = WebFrameMain::FromRenderFrameHost(render_frame_host); +- if (web_frame) +- web_frame->Connect(); ++ WebFrameMain::RenderFrameCreated(render_frame_host); + } + + void WebContents::RenderFrameCreated( +@@ -1396,46 +1394,6 @@ void WebContents::RenderFrameCreated( + HandleNewRenderFrame(render_frame_host); + } + +-void WebContents::RenderFrameDeleted( +- content::RenderFrameHost* render_frame_host) { +- // A RenderFrameHost can be deleted when: +- // - A WebContents is removed and its containing frames are disposed. +- // - An `); +- } else { +- res.end(''); +- } +- }); +- server.listen(0, '127.0.0.1', () => { +- const url = `http://127.0.0.1:${(server.address() as AddressInfo).port}/`; +- resolve({ server, url }); +- }); +- }); +- + afterEach(closeAllWindows); + + describe('WebFrame traversal APIs', () => { +@@ -87,6 +69,24 @@ describe('webFrameMain module', () => { + }); + + describe('cross-origin', () => { ++ type Server = { server: http.Server, url: string } ++ ++ /** Creates an HTTP server whose handler embeds the given iframe src. */ ++ const createServer = () => new Promise(resolve => { ++ const server = http.createServer((req, res) => { ++ const params = new URLSearchParams(url.parse(req.url || '').search || ''); ++ if (params.has('frameSrc')) { ++ res.end(``); ++ } else { ++ res.end(''); ++ } ++ }); ++ server.listen(0, '127.0.0.1', () => { ++ const url = `http://127.0.0.1:${(server.address() as AddressInfo).port}/`; ++ resolve({ server, url }); ++ }); ++ }); ++ + let serverA = null as unknown as Server; + let serverB = null as unknown as Server; + +@@ -179,32 +179,21 @@ describe('webFrameMain module', () => { + }); + }); + +- describe('RenderFrame lifespan', () => { ++ describe('disposed WebFrames', () => { + let w: BrowserWindow; ++ let webFrame: WebFrameMain; + +- beforeEach(async () => { ++ before(async () => { + w = new BrowserWindow({ show: false, webPreferences: { contextIsolation: true } }); +- }); +- +- it('throws upon accessing properties when disposed', async () => { + await w.loadFile(path.join(subframesPath, 'frame-with-frame-container.html')); +- const { mainFrame } = w.webContents; ++ webFrame = w.webContents.mainFrame; + w.destroy(); + // Wait for WebContents, and thus RenderFrameHost, to be destroyed. + await new Promise(resolve => setTimeout(resolve, 0)); +- expect(() => mainFrame.url).to.throw(); +- }); +- +- it('persists through cross-origin navigation', async () => { +- const server = await createServer(); +- // 'localhost' is treated as a separate origin. +- const crossOriginUrl = server.url.replace('127.0.0.1', 'localhost'); +- await w.loadURL(server.url); +- const { mainFrame } = w.webContents; +- expect(mainFrame.url).to.equal(server.url); +- await w.loadURL(crossOriginUrl); +- expect(w.webContents.mainFrame).to.equal(mainFrame); +- expect(mainFrame.url).to.equal(crossOriginUrl); ++ }); ++ ++ it('throws upon accessing properties', () => { ++ expect(() => webFrame.url).to.throw(); + }); + }); + +-- +2.33.0 + diff --git a/srcpkgs/electron13/template b/srcpkgs/electron13/template index 7c4efbd6e72..d7fb0da9b2e 100644 --- a/srcpkgs/electron13/template +++ b/srcpkgs/electron13/template @@ -1,6 +1,6 @@ # Template file for 'electron13' pkgname=electron13 -version=13.2.2 +version=13.3.0 revision=1 _nodever=14.16.0 _chromiumver=91.0.4472.69 @@ -31,7 +31,7 @@ homepage="https://electronjs.org" distfiles="https://github.com/electron/electron/archive/v$version.tar.gz>electron-${version}.tar.gz https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$_chromiumver.tar.xz https://github.com/nodejs/node/archive/v$_nodever.tar.gz>node-$_nodever.tar.gz" -checksum="d5e35b412fc055e6fc5636717392193004b37fdd669302f528eee7232b34d9c5 +checksum="1707f46439407ed0500e44d61c5171ce00f225d1478349472a0e45920d6a75a1 1f6843c636f4adee6b06c301193810cce103ee3e4582d4cbc31c915efc3d0c7b bcdf869b0743405515ee897b1047b5e851a717e426b4974d26537c9b10dfd53a" @@ -83,11 +83,10 @@ _get_chromium_arch() { } post_extract() { - ln -s chromium-$_chromiumver src + mv chromium-${_chromiumver} src mkdir -p src/third_party/ - ln -s ../../node-$_nodever src/third_party/electron_node - ln -s ../electron-${version} src/electron - + mv node-$_nodever src/third_party/electron_node + mv electron-${version} src/electron } post_patch() { cd $wrksrc