fix: resolve loadURL properly for in-page navigations (#36129)
This commit is contained in:
parent
a75e8e051e
commit
625b4619d6
2 changed files with 8 additions and 0 deletions
|
@ -450,12 +450,14 @@ WebContents.prototype.loadURL = function (url, options) {
|
||||||
const removeListeners = () => {
|
const removeListeners = () => {
|
||||||
this.removeListener('did-finish-load', finishListener);
|
this.removeListener('did-finish-load', finishListener);
|
||||||
this.removeListener('did-fail-load', failListener);
|
this.removeListener('did-fail-load', failListener);
|
||||||
|
this.removeListener('did-navigate-in-page', finishListener);
|
||||||
this.removeListener('did-start-navigation', navigationListener);
|
this.removeListener('did-start-navigation', navigationListener);
|
||||||
this.removeListener('did-stop-loading', stopLoadingListener);
|
this.removeListener('did-stop-loading', stopLoadingListener);
|
||||||
this.removeListener('destroyed', stopLoadingListener);
|
this.removeListener('destroyed', stopLoadingListener);
|
||||||
};
|
};
|
||||||
this.on('did-finish-load', finishListener);
|
this.on('did-finish-load', finishListener);
|
||||||
this.on('did-fail-load', failListener);
|
this.on('did-fail-load', failListener);
|
||||||
|
this.on('did-navigate-in-page', finishListener);
|
||||||
this.on('did-start-navigation', navigationListener);
|
this.on('did-start-navigation', navigationListener);
|
||||||
this.on('did-stop-loading', stopLoadingListener);
|
this.on('did-stop-loading', stopLoadingListener);
|
||||||
this.on('destroyed', stopLoadingListener);
|
this.on('destroyed', stopLoadingListener);
|
||||||
|
|
|
@ -362,6 +362,12 @@ describe('webContents module', () => {
|
||||||
await expect(w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html'))).to.eventually.be.fulfilled();
|
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 () => {
|
it('rejects when failing to load a file URL', async () => {
|
||||||
await expect(w.loadURL('file:non-existent')).to.eventually.be.rejected()
|
await expect(w.loadURL('file:non-existent')).to.eventually.be.rejected()
|
||||||
.and.have.property('code', 'ERR_FILE_NOT_FOUND');
|
.and.have.property('code', 'ERR_FILE_NOT_FOUND');
|
||||||
|
|
Loading…
Reference in a new issue