fix: createWindow shouldn't load URL for webContents (#43878)

This commit is contained in:
Shelley Vohr 2024-09-23 21:55:17 +02:00 committed by GitHub
parent ec63fbf0b1
commit 2cc8a33f11
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 31 additions and 9 deletions

View file

@ -71,14 +71,6 @@ export function openGuestWindow ({ embedder, guest, referrer, disposition, postD
throw new Error('Invalid webContents. Created window should be connected to webContents passed with options object.');
}
webContents.loadURL(url, {
httpReferrer: referrer,
...(postData && {
postData,
extraHeaders: formatPostDataHeaders(postData as Electron.UploadRawData[])
})
});
handleWindowLifecycleEvents({ embedder, frameName, guest, outlivesOpener });
}

View file

@ -234,6 +234,10 @@ describe('webContents.setWindowOpenHandler', () => {
response.statusCode = 200;
response.end('<title>Child page</title>');
break;
case '/test':
response.statusCode = 200;
response.end('<title>Test page</title>');
break;
default:
throw new Error(`Unsupported endpoint: ${request.url}`);
}
@ -306,7 +310,33 @@ describe('webContents.setWindowOpenHandler', () => {
expect(childWindow.title).to.equal(browserWindowTitle);
});
it('spawns browser window with overriden options', async () => {
it('should be able to access the child window document when createWindow is provided', async () => {
browserWindow.webContents.setWindowOpenHandler(() => {
return {
action: 'allow',
createWindow: (options) => {
const child = new BrowserWindow(options);
return child.webContents;
}
};
});
const aboutBlankTitle = await browserWindow.webContents.executeJavaScript(`
const win1 = window.open('about:blank', '', 'show=no');
win1.document.title = 'about-blank-title';
win1.document.title;
`);
expect(aboutBlankTitle).to.equal('about-blank-title');
const serverPageTitle = await browserWindow.webContents.executeJavaScript(`
const win2 = window.open('${url}/child', '', 'show=no');
win2.document.title = 'server-page-title';
win2.document.title;
`);
expect(serverPageTitle).to.equal('server-page-title');
});
it('spawns browser window with overridden options', async () => {
const childWindow = await new Promise<Electron.BrowserWindow>(resolve => {
browserWindow.webContents.setWindowOpenHandler(() => {
return {