From 625b4619d61619b4d327dd58be3a2cf9b348ffa3 Mon Sep 17 00:00:00 2001 From: Jeremy Rose Date: Wed, 26 Oct 2022 13:57:39 -0700 Subject: [PATCH] fix: resolve loadURL properly for in-page navigations (#36129) --- lib/browser/api/web-contents.ts | 2 ++ spec/api-web-contents-spec.ts | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/lib/browser/api/web-contents.ts b/lib/browser/api/web-contents.ts index 33d515849b1d..7ca4b09e8b68 100644 --- a/lib/browser/api/web-contents.ts +++ b/lib/browser/api/web-contents.ts @@ -450,12 +450,14 @@ WebContents.prototype.loadURL = function (url, options) { const removeListeners = () => { this.removeListener('did-finish-load', finishListener); this.removeListener('did-fail-load', failListener); + this.removeListener('did-navigate-in-page', finishListener); this.removeListener('did-start-navigation', navigationListener); this.removeListener('did-stop-loading', stopLoadingListener); this.removeListener('destroyed', stopLoadingListener); }; this.on('did-finish-load', finishListener); this.on('did-fail-load', failListener); + this.on('did-navigate-in-page', finishListener); this.on('did-start-navigation', navigationListener); this.on('did-stop-loading', stopLoadingListener); this.on('destroyed', stopLoadingListener); diff --git a/spec/api-web-contents-spec.ts b/spec/api-web-contents-spec.ts index 1cc8f3790f71..b8d43ae93542 100644 --- a/spec/api-web-contents-spec.ts +++ b/spec/api-web-contents-spec.ts @@ -362,6 +362,12 @@ describe('webContents module', () => { await expect(w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html'))).to.eventually.be.fulfilled(); }); + it('resolves when navigating within the page', async () => { + await w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html')); + await new Promise(resolve => setTimeout(resolve)); + await expect(w.loadURL(w.getURL() + '#foo')).to.eventually.be.fulfilled(); + }); + it('rejects when failing to load a file URL', async () => { await expect(w.loadURL('file:non-existent')).to.eventually.be.rejected() .and.have.property('code', 'ERR_FILE_NOT_FOUND');