refactor: use types for once() return values in spec (#38872)
This commit is contained in:
parent
abec9ead06
commit
9226cc662b
11 changed files with 85 additions and 85 deletions
|
@ -6,7 +6,7 @@ import * as net from 'node:net';
|
||||||
import * as fs from 'fs-extra';
|
import * as fs from 'fs-extra';
|
||||||
import * as path from 'node:path';
|
import * as path from 'node:path';
|
||||||
import { promisify } from 'node:util';
|
import { promisify } from 'node:util';
|
||||||
import { app, BrowserWindow, Menu, session, net as electronNet } from 'electron/main';
|
import { app, BrowserWindow, Menu, session, net as electronNet, WebContents } from 'electron/main';
|
||||||
import { closeWindow, closeAllWindows } from './lib/window-helpers';
|
import { closeWindow, closeAllWindows } from './lib/window-helpers';
|
||||||
import { ifdescribe, ifit, listen, waitUntil } from './lib/spec-helpers';
|
import { ifdescribe, ifit, listen, waitUntil } from './lib/spec-helpers';
|
||||||
import { once } from 'node:events';
|
import { once } from 'node:events';
|
||||||
|
@ -495,7 +495,7 @@ describe('app module', () => {
|
||||||
afterEach(() => closeWindow(w).then(() => { w = null as any; }));
|
afterEach(() => closeWindow(w).then(() => { w = null as any; }));
|
||||||
|
|
||||||
it('should emit browser-window-focus event when window is focused', async () => {
|
it('should emit browser-window-focus event when window is focused', async () => {
|
||||||
const emitted = once(app, 'browser-window-focus');
|
const emitted = once(app, 'browser-window-focus') as Promise<[any, BrowserWindow]>;
|
||||||
w = new BrowserWindow({ show: false });
|
w = new BrowserWindow({ show: false });
|
||||||
w.emit('focus');
|
w.emit('focus');
|
||||||
const [, window] = await emitted;
|
const [, window] = await emitted;
|
||||||
|
@ -503,7 +503,7 @@ describe('app module', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should emit browser-window-blur event when window is blurred', async () => {
|
it('should emit browser-window-blur event when window is blurred', async () => {
|
||||||
const emitted = once(app, 'browser-window-blur');
|
const emitted = once(app, 'browser-window-blur') as Promise<[any, BrowserWindow]>;
|
||||||
w = new BrowserWindow({ show: false });
|
w = new BrowserWindow({ show: false });
|
||||||
w.emit('blur');
|
w.emit('blur');
|
||||||
const [, window] = await emitted;
|
const [, window] = await emitted;
|
||||||
|
@ -511,14 +511,14 @@ describe('app module', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should emit browser-window-created event when window is created', async () => {
|
it('should emit browser-window-created event when window is created', async () => {
|
||||||
const emitted = once(app, 'browser-window-created');
|
const emitted = once(app, 'browser-window-created') as Promise<[any, BrowserWindow]>;
|
||||||
w = new BrowserWindow({ show: false });
|
w = new BrowserWindow({ show: false });
|
||||||
const [, window] = await emitted;
|
const [, window] = await emitted;
|
||||||
expect(window.id).to.equal(w.id);
|
expect(window.id).to.equal(w.id);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should emit web-contents-created event when a webContents is created', async () => {
|
it('should emit web-contents-created event when a webContents is created', async () => {
|
||||||
const emitted = once(app, 'web-contents-created');
|
const emitted = once(app, 'web-contents-created') as Promise<[any, WebContents]>;
|
||||||
w = new BrowserWindow({ show: false });
|
w = new BrowserWindow({ show: false });
|
||||||
const [, webContents] = await emitted;
|
const [, webContents] = await emitted;
|
||||||
expect(webContents.id).to.equal(w.webContents.id);
|
expect(webContents.id).to.equal(w.webContents.id);
|
||||||
|
@ -535,7 +535,7 @@ describe('app module', () => {
|
||||||
});
|
});
|
||||||
await w.loadURL('about:blank');
|
await w.loadURL('about:blank');
|
||||||
|
|
||||||
const emitted = once(app, 'renderer-process-crashed');
|
const emitted = once(app, 'renderer-process-crashed') as Promise<[any, WebContents]>;
|
||||||
w.webContents.executeJavaScript('process.crash()');
|
w.webContents.executeJavaScript('process.crash()');
|
||||||
|
|
||||||
const [, webContents] = await emitted;
|
const [, webContents] = await emitted;
|
||||||
|
@ -553,7 +553,7 @@ describe('app module', () => {
|
||||||
});
|
});
|
||||||
await w.loadURL('about:blank');
|
await w.loadURL('about:blank');
|
||||||
|
|
||||||
const emitted = once(app, 'render-process-gone');
|
const emitted = once(app, 'render-process-gone') as Promise<[any, WebContents, Electron.RenderProcessGoneDetails]>;
|
||||||
w.webContents.executeJavaScript('process.crash()');
|
w.webContents.executeJavaScript('process.crash()');
|
||||||
|
|
||||||
const [, webContents, details] = await emitted;
|
const [, webContents, details] = await emitted;
|
||||||
|
@ -1935,7 +1935,7 @@ describe('default behavior', () => {
|
||||||
it('should emit a login event on app when a WebContents hits a 401', async () => {
|
it('should emit a login event on app when a WebContents hits a 401', async () => {
|
||||||
const w = new BrowserWindow({ show: false });
|
const w = new BrowserWindow({ show: false });
|
||||||
w.loadURL(serverUrl);
|
w.loadURL(serverUrl);
|
||||||
const [, webContents] = await once(app, 'login');
|
const [, webContents] = await once(app, 'login') as [any, WebContents];
|
||||||
expect(webContents).to.equal(w.webContents);
|
expect(webContents).to.equal(w.webContents);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -6,7 +6,7 @@ import { once } from 'node:events';
|
||||||
ifdescribe(!process.mas)('autoUpdater module', function () {
|
ifdescribe(!process.mas)('autoUpdater module', function () {
|
||||||
describe('checkForUpdates', function () {
|
describe('checkForUpdates', function () {
|
||||||
ifit(process.platform === 'win32')('emits an error on Windows if the feed URL is not set', async function () {
|
ifit(process.platform === 'win32')('emits an error on Windows if the feed URL is not set', async function () {
|
||||||
const errorEvent = once(autoUpdater, 'error');
|
const errorEvent = once(autoUpdater, 'error') as Promise<[Error]>;
|
||||||
autoUpdater.setFeedURL({ url: '' });
|
autoUpdater.setFeedURL({ url: '' });
|
||||||
autoUpdater.checkForUpdates();
|
autoUpdater.checkForUpdates();
|
||||||
const [error] = await errorEvent;
|
const [error] = await errorEvent;
|
||||||
|
@ -56,7 +56,7 @@ ifdescribe(!process.mas)('autoUpdater module', function () {
|
||||||
|
|
||||||
ifdescribe(process.platform === 'darwin' && process.arch !== 'arm64')('on Mac', function () {
|
ifdescribe(process.platform === 'darwin' && process.arch !== 'arm64')('on Mac', function () {
|
||||||
it('emits an error when the application is unsigned', async () => {
|
it('emits an error when the application is unsigned', async () => {
|
||||||
const errorEvent = once(autoUpdater, 'error');
|
const errorEvent = once(autoUpdater, 'error') as Promise<[Error]>;
|
||||||
autoUpdater.setFeedURL({ url: '' });
|
autoUpdater.setFeedURL({ url: '' });
|
||||||
const [error] = await errorEvent;
|
const [error] = await errorEvent;
|
||||||
expect(error.message).equal('Could not get code signature for running application');
|
expect(error.message).equal('Could not get code signature for running application');
|
||||||
|
@ -80,7 +80,7 @@ ifdescribe(!process.mas)('autoUpdater module', function () {
|
||||||
|
|
||||||
describe('quitAndInstall', () => {
|
describe('quitAndInstall', () => {
|
||||||
ifit(process.platform === 'win32')('emits an error on Windows when no update is available', async function () {
|
ifit(process.platform === 'win32')('emits an error on Windows when no update is available', async function () {
|
||||||
const errorEvent = once(autoUpdater, 'error');
|
const errorEvent = once(autoUpdater, 'error') as Promise<[Error]>;
|
||||||
autoUpdater.quitAndInstall();
|
autoUpdater.quitAndInstall();
|
||||||
const [error] = await errorEvent;
|
const [error] = await errorEvent;
|
||||||
expect(error.message).to.equal('No update available, can\'t quit and install');
|
expect(error.message).to.equal('No update available, can\'t quit and install');
|
||||||
|
|
|
@ -2312,7 +2312,7 @@ describe('BrowserWindow module', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('causes the right value to be emitted on `always-on-top-changed`', async () => {
|
it('causes the right value to be emitted on `always-on-top-changed`', async () => {
|
||||||
const alwaysOnTopChanged = once(w, 'always-on-top-changed');
|
const alwaysOnTopChanged = once(w, 'always-on-top-changed') as Promise<[any, boolean]>;
|
||||||
expect(w.isAlwaysOnTop()).to.be.false('is alwaysOnTop');
|
expect(w.isAlwaysOnTop()).to.be.false('is alwaysOnTop');
|
||||||
w.setAlwaysOnTop(true);
|
w.setAlwaysOnTop(true);
|
||||||
const [, alwaysOnTop] = await alwaysOnTopChanged;
|
const [, alwaysOnTop] = await alwaysOnTopChanged;
|
||||||
|
@ -2694,7 +2694,7 @@ describe('BrowserWindow module', () => {
|
||||||
// https://github.com/electron/electron/issues/25413, and is not integral
|
// https://github.com/electron/electron/issues/25413, and is not integral
|
||||||
// to the test.
|
// to the test.
|
||||||
const p = once(w.webContents, 'did-attach-webview');
|
const p = once(w.webContents, 'did-attach-webview');
|
||||||
const [, webviewContents] = await once(app, 'web-contents-created');
|
const [, webviewContents] = await once(app, 'web-contents-created') as [any, WebContents];
|
||||||
expect(BrowserWindow.fromWebContents(webviewContents)!.id).to.equal(w.id);
|
expect(BrowserWindow.fromWebContents(webviewContents)!.id).to.equal(w.id);
|
||||||
await p;
|
await p;
|
||||||
});
|
});
|
||||||
|
@ -3496,7 +3496,7 @@ describe('BrowserWindow module', () => {
|
||||||
const pageUrl = 'file://' + htmlPath;
|
const pageUrl = 'file://' + htmlPath;
|
||||||
const answer = once(ipcMain, 'answer');
|
const answer = once(ipcMain, 'answer');
|
||||||
w.loadURL(pageUrl);
|
w.loadURL(pageUrl);
|
||||||
const [, { url, frameName, options }] = await once(w.webContents, 'did-create-window');
|
const [, { url, frameName, options }] = await once(w.webContents, 'did-create-window') as [BrowserWindow, Electron.DidCreateWindowDetails];
|
||||||
const expectedUrl = process.platform === 'win32'
|
const expectedUrl = process.platform === 'win32'
|
||||||
? 'file:///' + htmlPath.replace(/\\/g, '/')
|
? 'file:///' + htmlPath.replace(/\\/g, '/')
|
||||||
: pageUrl;
|
: pageUrl;
|
||||||
|
@ -3542,7 +3542,7 @@ describe('BrowserWindow module', () => {
|
||||||
|
|
||||||
// The page is going to open a popup that it won't be able to close.
|
// The page is going to open a popup that it won't be able to close.
|
||||||
// We have to close it from here later.
|
// We have to close it from here later.
|
||||||
const [, popupWindow] = await once(app, 'browser-window-created');
|
const [, popupWindow] = await once(app, 'browser-window-created') as [any, BrowserWindow];
|
||||||
|
|
||||||
// Ask the popup window for details.
|
// Ask the popup window for details.
|
||||||
const detailsAnswer = once(ipcMain, 'child-loaded');
|
const detailsAnswer = once(ipcMain, 'child-loaded');
|
||||||
|
@ -3600,11 +3600,11 @@ describe('BrowserWindow module', () => {
|
||||||
w.webContents.setWindowOpenHandler(() => ({ action: 'allow', overrideBrowserWindowOptions: { webPreferences: { preload: preloadPath, contextIsolation: false } } }));
|
w.webContents.setWindowOpenHandler(() => ({ action: 'allow', overrideBrowserWindowOptions: { webPreferences: { preload: preloadPath, contextIsolation: false } } }));
|
||||||
w.loadFile(path.join(fixtures, 'api', 'new-window.html'));
|
w.loadFile(path.join(fixtures, 'api', 'new-window.html'));
|
||||||
const [[, childWebContents]] = await Promise.all([
|
const [[, childWebContents]] = await Promise.all([
|
||||||
once(app, 'web-contents-created'),
|
once(app, 'web-contents-created') as Promise<[any, WebContents]>,
|
||||||
once(ipcMain, 'answer')
|
once(ipcMain, 'answer')
|
||||||
]);
|
]);
|
||||||
const webPreferences = childWebContents.getLastWebPreferences();
|
const webPreferences = childWebContents.getLastWebPreferences();
|
||||||
expect(webPreferences.contextIsolation).to.equal(false);
|
expect(webPreferences!.contextIsolation).to.equal(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should set ipc event sender correctly', async () => {
|
it('should set ipc event sender correctly', async () => {
|
||||||
|
@ -3736,7 +3736,7 @@ describe('BrowserWindow module', () => {
|
||||||
contextIsolation: false
|
contextIsolation: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const didAttachWebview = once(w.webContents, 'did-attach-webview');
|
const didAttachWebview = once(w.webContents, 'did-attach-webview') as Promise<[any, WebContents]>;
|
||||||
const webviewDomReady = once(ipcMain, 'webview-dom-ready');
|
const webviewDomReady = once(ipcMain, 'webview-dom-ready');
|
||||||
w.loadFile(path.join(fixtures, 'pages', 'webview-did-attach-event.html'));
|
w.loadFile(path.join(fixtures, 'pages', 'webview-did-attach-event.html'));
|
||||||
|
|
||||||
|
@ -3850,11 +3850,11 @@ describe('BrowserWindow module', () => {
|
||||||
}));
|
}));
|
||||||
w.loadFile(path.join(fixtures, 'api', 'new-window.html'));
|
w.loadFile(path.join(fixtures, 'api', 'new-window.html'));
|
||||||
const [[, childWebContents]] = await Promise.all([
|
const [[, childWebContents]] = await Promise.all([
|
||||||
once(app, 'web-contents-created'),
|
once(app, 'web-contents-created') as Promise<[any, WebContents]>,
|
||||||
once(ipcMain, 'answer')
|
once(ipcMain, 'answer')
|
||||||
]);
|
]);
|
||||||
const webPreferences = childWebContents.getLastWebPreferences();
|
const webPreferences = childWebContents.getLastWebPreferences();
|
||||||
expect(webPreferences.contextIsolation).to.equal(false);
|
expect(webPreferences!.contextIsolation).to.equal(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('window.location', () => {
|
describe('window.location', () => {
|
||||||
|
@ -5952,10 +5952,10 @@ describe('BrowserWindow module', () => {
|
||||||
preload: path.join(fixtures, 'api', 'isolated-preload.js')
|
preload: path.join(fixtures, 'api', 'isolated-preload.js')
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const browserWindowCreated = once(app, 'browser-window-created');
|
const browserWindowCreated = once(app, 'browser-window-created') as Promise<[any, BrowserWindow]>;
|
||||||
iw.loadFile(path.join(fixtures, 'pages', 'window-open.html'));
|
iw.loadFile(path.join(fixtures, 'pages', 'window-open.html'));
|
||||||
const [, window] = await browserWindowCreated;
|
const [, window] = await browserWindowCreated;
|
||||||
expect(window.webContents.getLastWebPreferences().contextIsolation).to.be.true('contextIsolation');
|
expect(window.webContents.getLastWebPreferences()!.contextIsolation).to.be.true('contextIsolation');
|
||||||
});
|
});
|
||||||
it('separates the page context from the Electron/preload context with sandbox on', async () => {
|
it('separates the page context from the Electron/preload context with sandbox on', async () => {
|
||||||
const ws = new BrowserWindow({
|
const ws = new BrowserWindow({
|
||||||
|
@ -6086,7 +6086,7 @@ describe('BrowserWindow module', () => {
|
||||||
afterEach(closeAllWindows);
|
afterEach(closeAllWindows);
|
||||||
|
|
||||||
it('creates offscreen window with correct size', async () => {
|
it('creates offscreen window with correct size', async () => {
|
||||||
const paint = once(w.webContents, 'paint');
|
const paint = once(w.webContents, 'paint') as Promise<[any, Electron.Rectangle, Electron.NativeImage]>;
|
||||||
w.loadFile(path.join(fixtures, 'api', 'offscreen-rendering.html'));
|
w.loadFile(path.join(fixtures, 'api', 'offscreen-rendering.html'));
|
||||||
const [,, data] = await paint;
|
const [,, data] = await paint;
|
||||||
expect(data.constructor.name).to.equal('NativeImage');
|
expect(data.constructor.name).to.equal('NativeImage');
|
||||||
|
@ -6117,7 +6117,7 @@ describe('BrowserWindow module', () => {
|
||||||
|
|
||||||
describe('window.webContents.isPainting()', () => {
|
describe('window.webContents.isPainting()', () => {
|
||||||
it('returns whether is currently painting', async () => {
|
it('returns whether is currently painting', async () => {
|
||||||
const paint = once(w.webContents, 'paint');
|
const paint = once(w.webContents, 'paint') as Promise<[any, Electron.Rectangle, Electron.NativeImage]>;
|
||||||
w.loadFile(path.join(fixtures, 'api', 'offscreen-rendering.html'));
|
w.loadFile(path.join(fixtures, 'api', 'offscreen-rendering.html'));
|
||||||
await paint;
|
await paint;
|
||||||
expect(w.webContents.isPainting()).to.be.true('isPainting');
|
expect(w.webContents.isPainting()).to.be.true('isPainting');
|
||||||
|
@ -6144,7 +6144,7 @@ describe('BrowserWindow module', () => {
|
||||||
w.webContents.stopPainting();
|
w.webContents.stopPainting();
|
||||||
w.webContents.startPainting();
|
w.webContents.startPainting();
|
||||||
|
|
||||||
await once(w.webContents, 'paint');
|
await once(w.webContents, 'paint') as [any, Electron.Rectangle, Electron.NativeImage];
|
||||||
expect(w.webContents.isPainting()).to.be.true('isPainting');
|
expect(w.webContents.isPainting()).to.be.true('isPainting');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -6152,13 +6152,13 @@ describe('BrowserWindow module', () => {
|
||||||
describe('frameRate APIs', () => {
|
describe('frameRate APIs', () => {
|
||||||
it('has default frame rate (function)', async () => {
|
it('has default frame rate (function)', async () => {
|
||||||
w.loadFile(path.join(fixtures, 'api', 'offscreen-rendering.html'));
|
w.loadFile(path.join(fixtures, 'api', 'offscreen-rendering.html'));
|
||||||
await once(w.webContents, 'paint');
|
await once(w.webContents, 'paint') as [any, Electron.Rectangle, Electron.NativeImage];
|
||||||
expect(w.webContents.getFrameRate()).to.equal(60);
|
expect(w.webContents.getFrameRate()).to.equal(60);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('has default frame rate (property)', async () => {
|
it('has default frame rate (property)', async () => {
|
||||||
w.loadFile(path.join(fixtures, 'api', 'offscreen-rendering.html'));
|
w.loadFile(path.join(fixtures, 'api', 'offscreen-rendering.html'));
|
||||||
await once(w.webContents, 'paint');
|
await once(w.webContents, 'paint') as [any, Electron.Rectangle, Electron.NativeImage];
|
||||||
expect(w.webContents.frameRate).to.equal(60);
|
expect(w.webContents.frameRate).to.equal(60);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -6169,7 +6169,7 @@ describe('BrowserWindow module', () => {
|
||||||
|
|
||||||
w.webContents.setFrameRate(30);
|
w.webContents.setFrameRate(30);
|
||||||
|
|
||||||
await once(w.webContents, 'paint');
|
await once(w.webContents, 'paint') as [any, Electron.Rectangle, Electron.NativeImage];
|
||||||
expect(w.webContents.getFrameRate()).to.equal(30);
|
expect(w.webContents.getFrameRate()).to.equal(30);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -6180,7 +6180,7 @@ describe('BrowserWindow module', () => {
|
||||||
|
|
||||||
w.webContents.frameRate = 30;
|
w.webContents.frameRate = 30;
|
||||||
|
|
||||||
await once(w.webContents, 'paint');
|
await once(w.webContents, 'paint') as [any, Electron.Rectangle, Electron.NativeImage];
|
||||||
expect(w.webContents.frameRate).to.equal(30);
|
expect(w.webContents.frameRate).to.equal(30);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -84,7 +84,7 @@ describe('nativeTheme module', () => {
|
||||||
.addEventListener('change', () => require('electron').ipcRenderer.send('theme-change'))
|
.addEventListener('change', () => require('electron').ipcRenderer.send('theme-change'))
|
||||||
`);
|
`);
|
||||||
const originalSystemIsDark = await getPrefersColorSchemeIsDark(w);
|
const originalSystemIsDark = await getPrefersColorSchemeIsDark(w);
|
||||||
let changePromise: Promise<any[]> = once(ipcMain, 'theme-change');
|
let changePromise = once(ipcMain, 'theme-change');
|
||||||
nativeTheme.themeSource = 'dark';
|
nativeTheme.themeSource = 'dark';
|
||||||
if (!originalSystemIsDark) await changePromise;
|
if (!originalSystemIsDark) await changePromise;
|
||||||
expect(await getPrefersColorSchemeIsDark(w)).to.equal(true);
|
expect(await getPrefersColorSchemeIsDark(w)).to.equal(true);
|
||||||
|
|
|
@ -1412,7 +1412,7 @@ describe('session module', () => {
|
||||||
|
|
||||||
describe('session-created event', () => {
|
describe('session-created event', () => {
|
||||||
it('is emitted when a session is created', async () => {
|
it('is emitted when a session is created', async () => {
|
||||||
const sessionCreated = once(app, 'session-created');
|
const sessionCreated = once(app, 'session-created') as Promise<[any, Session]>;
|
||||||
const session1 = session.fromPartition('' + Math.random());
|
const session1 = session.fromPartition('' + Math.random());
|
||||||
const [session2] = await sessionCreated;
|
const [session2] = await sessionCreated;
|
||||||
expect(session1).to.equal(session2);
|
expect(session1).to.equal(session2);
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { AddressInfo } from 'node:net';
|
||||||
import * as path from 'node:path';
|
import * as path from 'node:path';
|
||||||
import * as fs from 'node:fs';
|
import * as fs from 'node:fs';
|
||||||
import * as http from 'node:http';
|
import * as http from 'node:http';
|
||||||
import { BrowserWindow, ipcMain, webContents, session, app, BrowserView } from 'electron/main';
|
import { BrowserWindow, ipcMain, webContents, session, app, BrowserView, WebContents } from 'electron/main';
|
||||||
import { closeAllWindows } from './lib/window-helpers';
|
import { closeAllWindows } from './lib/window-helpers';
|
||||||
import { ifdescribe, defer, waitUntil, listen, ifit } from './lib/spec-helpers';
|
import { ifdescribe, defer, waitUntil, listen, ifit } from './lib/spec-helpers';
|
||||||
import { once } from 'node:events';
|
import { once } from 'node:events';
|
||||||
|
@ -24,7 +24,7 @@ describe('webContents module', () => {
|
||||||
});
|
});
|
||||||
w.loadFile(path.join(fixturesPath, 'pages', 'webview-zoom-factor.html'));
|
w.loadFile(path.join(fixturesPath, 'pages', 'webview-zoom-factor.html'));
|
||||||
|
|
||||||
await once(w.webContents, 'did-attach-webview');
|
await once(w.webContents, 'did-attach-webview') as [any, WebContents];
|
||||||
|
|
||||||
w.webContents.openDevTools();
|
w.webContents.openDevTools();
|
||||||
|
|
||||||
|
@ -637,7 +637,7 @@ describe('webContents module', () => {
|
||||||
if (opts.meta) modifiers.push('meta');
|
if (opts.meta) modifiers.push('meta');
|
||||||
if (opts.isAutoRepeat) modifiers.push('isAutoRepeat');
|
if (opts.isAutoRepeat) modifiers.push('isAutoRepeat');
|
||||||
|
|
||||||
const p = once(w.webContents, 'before-input-event');
|
const p = once(w.webContents, 'before-input-event') as Promise<[any, Electron.Input]>;
|
||||||
w.webContents.sendInputEvent({
|
w.webContents.sendInputEvent({
|
||||||
type: opts.type,
|
type: opts.type,
|
||||||
keyCode: opts.keyCode,
|
keyCode: opts.keyCode,
|
||||||
|
@ -720,7 +720,7 @@ describe('webContents module', () => {
|
||||||
modifiers: ['control', 'meta']
|
modifiers: ['control', 'meta']
|
||||||
});
|
});
|
||||||
|
|
||||||
const [, zoomDirection] = await once(w.webContents, 'zoom-changed');
|
const [, zoomDirection] = await once(w.webContents, 'zoom-changed') as [any, string];
|
||||||
expect(zoomDirection).to.equal('in');
|
expect(zoomDirection).to.equal('in');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -743,7 +743,7 @@ describe('webContents module', () => {
|
||||||
modifiers: ['control', 'meta']
|
modifiers: ['control', 'meta']
|
||||||
});
|
});
|
||||||
|
|
||||||
const [, zoomDirection] = await once(w.webContents, 'zoom-changed');
|
const [, zoomDirection] = await once(w.webContents, 'zoom-changed') as [any, string];
|
||||||
expect(zoomDirection).to.equal('out');
|
expect(zoomDirection).to.equal('out');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1293,7 +1293,7 @@ describe('webContents module', () => {
|
||||||
it('can get opener with window.open()', async () => {
|
it('can get opener with window.open()', async () => {
|
||||||
const w = new BrowserWindow({ show: false, webPreferences: { sandbox: true } });
|
const w = new BrowserWindow({ show: false, webPreferences: { sandbox: true } });
|
||||||
await w.loadURL('about:blank');
|
await w.loadURL('about:blank');
|
||||||
const childPromise = once(w.webContents, 'did-create-window');
|
const childPromise = once(w.webContents, 'did-create-window') as Promise<[BrowserWindow, Electron.DidCreateWindowDetails]>;
|
||||||
w.webContents.executeJavaScript('window.open("about:blank")', true);
|
w.webContents.executeJavaScript('window.open("about:blank")', true);
|
||||||
const [childWindow] = await childPromise;
|
const [childWindow] = await childPromise;
|
||||||
expect(childWindow.webContents.opener).to.equal(w.webContents.mainFrame);
|
expect(childWindow.webContents.opener).to.equal(w.webContents.mainFrame);
|
||||||
|
@ -1301,7 +1301,7 @@ describe('webContents module', () => {
|
||||||
it('has no opener when using "noopener"', async () => {
|
it('has no opener when using "noopener"', async () => {
|
||||||
const w = new BrowserWindow({ show: false, webPreferences: { sandbox: true } });
|
const w = new BrowserWindow({ show: false, webPreferences: { sandbox: true } });
|
||||||
await w.loadURL('about:blank');
|
await w.loadURL('about:blank');
|
||||||
const childPromise = once(w.webContents, 'did-create-window');
|
const childPromise = once(w.webContents, 'did-create-window') as Promise<[BrowserWindow, Electron.DidCreateWindowDetails]>;
|
||||||
w.webContents.executeJavaScript('window.open("about:blank", undefined, "noopener")', true);
|
w.webContents.executeJavaScript('window.open("about:blank", undefined, "noopener")', true);
|
||||||
const [childWindow] = await childPromise;
|
const [childWindow] = await childPromise;
|
||||||
expect(childWindow.webContents.opener).to.be.null();
|
expect(childWindow.webContents.opener).to.be.null();
|
||||||
|
@ -1309,7 +1309,7 @@ describe('webContents module', () => {
|
||||||
it('can get opener with a[target=_blank][rel=opener]', async () => {
|
it('can get opener with a[target=_blank][rel=opener]', async () => {
|
||||||
const w = new BrowserWindow({ show: false, webPreferences: { sandbox: true } });
|
const w = new BrowserWindow({ show: false, webPreferences: { sandbox: true } });
|
||||||
await w.loadURL('about:blank');
|
await w.loadURL('about:blank');
|
||||||
const childPromise = once(w.webContents, 'did-create-window');
|
const childPromise = once(w.webContents, 'did-create-window') as Promise<[BrowserWindow, Electron.DidCreateWindowDetails]>;
|
||||||
w.webContents.executeJavaScript(`(function() {
|
w.webContents.executeJavaScript(`(function() {
|
||||||
const a = document.createElement('a');
|
const a = document.createElement('a');
|
||||||
a.target = '_blank';
|
a.target = '_blank';
|
||||||
|
@ -1323,7 +1323,7 @@ describe('webContents module', () => {
|
||||||
it('has no opener with a[target=_blank][rel=noopener]', async () => {
|
it('has no opener with a[target=_blank][rel=noopener]', async () => {
|
||||||
const w = new BrowserWindow({ show: false, webPreferences: { sandbox: true } });
|
const w = new BrowserWindow({ show: false, webPreferences: { sandbox: true } });
|
||||||
await w.loadURL('about:blank');
|
await w.loadURL('about:blank');
|
||||||
const childPromise = once(w.webContents, 'did-create-window');
|
const childPromise = once(w.webContents, 'did-create-window') as Promise<[BrowserWindow, Electron.DidCreateWindowDetails]>;
|
||||||
w.webContents.executeJavaScript(`(function() {
|
w.webContents.executeJavaScript(`(function() {
|
||||||
const a = document.createElement('a');
|
const a = document.createElement('a');
|
||||||
a.target = '_blank';
|
a.target = '_blank';
|
||||||
|
@ -1485,7 +1485,7 @@ describe('webContents module', () => {
|
||||||
|
|
||||||
it('forcefullyCrashRenderer() crashes the process with reason=killed||crashed', async () => {
|
it('forcefullyCrashRenderer() crashes the process with reason=killed||crashed', async () => {
|
||||||
expect(w.webContents.isCrashed()).to.equal(false);
|
expect(w.webContents.isCrashed()).to.equal(false);
|
||||||
const crashEvent = once(w.webContents, 'render-process-gone');
|
const crashEvent = once(w.webContents, 'render-process-gone') as Promise<[any, Electron.RenderProcessGoneDetails]>;
|
||||||
w.webContents.forcefullyCrashRenderer();
|
w.webContents.forcefullyCrashRenderer();
|
||||||
const [, details] = await crashEvent;
|
const [, details] = await crashEvent;
|
||||||
expect(details.reason === 'killed' || details.reason === 'crashed').to.equal(true, 'reason should be killed || crashed');
|
expect(details.reason === 'killed' || details.reason === 'crashed').to.equal(true, 'reason should be killed || crashed');
|
||||||
|
@ -1716,7 +1716,7 @@ describe('webContents module', () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const promise = once(w.webContents, 'preload-error');
|
const promise = once(w.webContents, 'preload-error') as Promise<[any, string, Error]>;
|
||||||
w.loadURL('about:blank');
|
w.loadURL('about:blank');
|
||||||
|
|
||||||
const [, preloadPath, error] = await promise;
|
const [, preloadPath, error] = await promise;
|
||||||
|
@ -1735,7 +1735,7 @@ describe('webContents module', () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const promise = once(w.webContents, 'preload-error');
|
const promise = once(w.webContents, 'preload-error') as Promise<[any, string, Error]>;
|
||||||
w.loadURL('about:blank');
|
w.loadURL('about:blank');
|
||||||
|
|
||||||
const [, preloadPath, error] = await promise;
|
const [, preloadPath, error] = await promise;
|
||||||
|
@ -1754,7 +1754,7 @@ describe('webContents module', () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const promise = once(w.webContents, 'preload-error');
|
const promise = once(w.webContents, 'preload-error') as Promise<[any, string, Error]>;
|
||||||
w.loadURL('about:blank');
|
w.loadURL('about:blank');
|
||||||
|
|
||||||
const [, preloadPath, error] = await promise;
|
const [, preloadPath, error] = await promise;
|
||||||
|
@ -2227,9 +2227,9 @@ describe('webContents module', () => {
|
||||||
const bw = new BrowserWindow({ show: false });
|
const bw = new BrowserWindow({ show: false });
|
||||||
await bw.loadURL('about:blank');
|
await bw.loadURL('about:blank');
|
||||||
bw.webContents.executeJavaScript('child = window.open("", "", "show=no"); null');
|
bw.webContents.executeJavaScript('child = window.open("", "", "show=no"); null');
|
||||||
const [, child] = await once(app, 'web-contents-created');
|
const [, child] = await once(app, 'web-contents-created') as [any, WebContents];
|
||||||
bw.webContents.executeJavaScript('child.document.title = "new title"');
|
bw.webContents.executeJavaScript('child.document.title = "new title"');
|
||||||
const [, title] = await once(child, 'page-title-updated');
|
const [, title] = await once(child, 'page-title-updated') as [any, string];
|
||||||
expect(title).to.equal('new title');
|
expect(title).to.equal('new title');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -2251,7 +2251,7 @@ describe('webContents module', () => {
|
||||||
const w = new BrowserWindow({ show: false });
|
const w = new BrowserWindow({ show: false });
|
||||||
await w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html'));
|
await w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html'));
|
||||||
|
|
||||||
const promise = once(w.webContents, 'context-menu');
|
const promise = once(w.webContents, 'context-menu') as Promise<[any, Electron.ContextMenuParams]>;
|
||||||
|
|
||||||
// Simulate right-click to create context-menu event.
|
// Simulate right-click to create context-menu event.
|
||||||
const opts = { x: 0, y: 0, button: 'right' as any };
|
const opts = { x: 0, y: 0, button: 'right' as any };
|
||||||
|
@ -2350,7 +2350,7 @@ describe('webContents module', () => {
|
||||||
const w = new BrowserWindow({ show: false });
|
const w = new BrowserWindow({ show: false });
|
||||||
w.loadURL('about:blank');
|
w.loadURL('about:blank');
|
||||||
w.webContents.executeJavaScript('window.moveTo(100, 100)', true);
|
w.webContents.executeJavaScript('window.moveTo(100, 100)', true);
|
||||||
const [, rect] = await once(w.webContents, 'content-bounds-updated');
|
const [, rect] = await once(w.webContents, 'content-bounds-updated') as [any, Electron.Rectangle];
|
||||||
const { width, height } = w.getBounds();
|
const { width, height } = w.getBounds();
|
||||||
expect(rect).to.deep.equal({
|
expect(rect).to.deep.equal({
|
||||||
x: 100,
|
x: 100,
|
||||||
|
@ -2367,7 +2367,7 @@ describe('webContents module', () => {
|
||||||
const w = new BrowserWindow({ show: false });
|
const w = new BrowserWindow({ show: false });
|
||||||
w.loadURL('about:blank');
|
w.loadURL('about:blank');
|
||||||
w.webContents.executeJavaScript('window.resizeTo(100, 100)', true);
|
w.webContents.executeJavaScript('window.resizeTo(100, 100)', true);
|
||||||
const [, rect] = await once(w.webContents, 'content-bounds-updated');
|
const [, rect] = await once(w.webContents, 'content-bounds-updated') as [any, Electron.Rectangle];
|
||||||
const { x, y } = w.getBounds();
|
const { x, y } = w.getBounds();
|
||||||
expect(rect).to.deep.equal({
|
expect(rect).to.deep.equal({
|
||||||
x,
|
x,
|
||||||
|
|
|
@ -143,7 +143,7 @@ describe('webFrameMain module', () => {
|
||||||
it('should show parent origin when child page is about:blank', async () => {
|
it('should show parent origin when child page is about:blank', async () => {
|
||||||
const w = new BrowserWindow({ show: false });
|
const w = new BrowserWindow({ show: false });
|
||||||
await w.loadFile(path.join(fixtures, 'pages', 'blank.html'));
|
await w.loadFile(path.join(fixtures, 'pages', 'blank.html'));
|
||||||
const webContentsCreated: Promise<[unknown, WebContents]> = once(app, 'web-contents-created') as any;
|
const webContentsCreated = once(app, 'web-contents-created') as Promise<[any, WebContents]>;
|
||||||
expect(w.webContents.mainFrame.origin).to.equal('file://');
|
expect(w.webContents.mainFrame.origin).to.equal('file://');
|
||||||
await w.webContents.executeJavaScript('window.open("", null, "show=false"), null');
|
await w.webContents.executeJavaScript('window.open("", null, "show=false"), null');
|
||||||
const [, childWebContents] = await webContentsCreated;
|
const [, childWebContents] = await webContentsCreated;
|
||||||
|
@ -163,7 +163,7 @@ describe('webFrameMain module', () => {
|
||||||
expect(mainFrame.origin).to.equal(serverA.url.replace(/\/$/, ''));
|
expect(mainFrame.origin).to.equal(serverA.url.replace(/\/$/, ''));
|
||||||
const [childFrame] = mainFrame.frames;
|
const [childFrame] = mainFrame.frames;
|
||||||
expect(childFrame.origin).to.equal(serverB.url.replace(/\/$/, ''));
|
expect(childFrame.origin).to.equal(serverB.url.replace(/\/$/, ''));
|
||||||
const webContentsCreated: Promise<[unknown, WebContents]> = once(app, 'web-contents-created') as any;
|
const webContentsCreated = once(app, 'web-contents-created') as Promise<[any, WebContents]>;
|
||||||
await childFrame.executeJavaScript('window.open("", null, "show=false"), null');
|
await childFrame.executeJavaScript('window.open("", null, "show=false"), null');
|
||||||
const [, childWebContents] = await webContentsCreated;
|
const [, childWebContents] = await webContentsCreated;
|
||||||
expect(childWebContents.mainFrame.origin).to.equal(childFrame.origin);
|
expect(childWebContents.mainFrame.origin).to.equal(childFrame.origin);
|
||||||
|
@ -367,7 +367,7 @@ describe('webFrameMain module', () => {
|
||||||
describe('"frame-created" event', () => {
|
describe('"frame-created" event', () => {
|
||||||
it('emits when the main frame is created', async () => {
|
it('emits when the main frame is created', async () => {
|
||||||
const w = new BrowserWindow({ show: false });
|
const w = new BrowserWindow({ show: false });
|
||||||
const promise = once(w.webContents, 'frame-created');
|
const promise = once(w.webContents, 'frame-created') as Promise<[any, Electron.FrameCreatedDetails]>;
|
||||||
w.webContents.loadFile(path.join(subframesPath, 'frame.html'));
|
w.webContents.loadFile(path.join(subframesPath, 'frame.html'));
|
||||||
const [, details] = await promise;
|
const [, details] = await promise;
|
||||||
expect(details.frame).to.equal(w.webContents.mainFrame);
|
expect(details.frame).to.equal(w.webContents.mainFrame);
|
||||||
|
@ -375,7 +375,7 @@ describe('webFrameMain module', () => {
|
||||||
|
|
||||||
it('emits when nested frames are created', async () => {
|
it('emits when nested frames are created', async () => {
|
||||||
const w = new BrowserWindow({ show: false });
|
const w = new BrowserWindow({ show: false });
|
||||||
const promise = emittedNTimes(w.webContents, 'frame-created', 2);
|
const promise = emittedNTimes(w.webContents, 'frame-created', 2) as Promise<[any, Electron.FrameCreatedDetails][]>;
|
||||||
w.webContents.loadFile(path.join(subframesPath, 'frame-container.html'));
|
w.webContents.loadFile(path.join(subframesPath, 'frame-container.html'));
|
||||||
const [[, mainDetails], [, nestedDetails]] = await promise;
|
const [[, mainDetails], [, nestedDetails]] = await promise;
|
||||||
expect(mainDetails.frame).to.equal(w.webContents.mainFrame);
|
expect(mainDetails.frame).to.equal(w.webContents.mainFrame);
|
||||||
|
|
|
@ -107,7 +107,7 @@ describe('focus handling', () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const webviewReady = once(w.webContents, 'did-attach-webview');
|
const webviewReady = once(w.webContents, 'did-attach-webview') as Promise<[any, WebContents]>;
|
||||||
await w.loadFile(path.join(fixturesPath, 'pages', 'tab-focus-loop-elements.html'));
|
await w.loadFile(path.join(fixturesPath, 'pages', 'tab-focus-loop-elements.html'));
|
||||||
const [, wvContents] = await webviewReady;
|
const [, wvContents] = await webviewReady;
|
||||||
webviewContents = wvContents;
|
webviewContents = wvContents;
|
||||||
|
@ -940,7 +940,7 @@ describe('chromium features', () => {
|
||||||
|
|
||||||
await w.loadFile(path.join(fixturesPath, 'pages', 'form-with-data.html'));
|
await w.loadFile(path.join(fixturesPath, 'pages', 'form-with-data.html'));
|
||||||
|
|
||||||
const windowCreatedPromise = once(app, 'browser-window-created');
|
const windowCreatedPromise = once(app, 'browser-window-created') as Promise<[any, BrowserWindow]>;
|
||||||
|
|
||||||
w.webContents.executeJavaScript(`
|
w.webContents.executeJavaScript(`
|
||||||
const form = document.querySelector('form')
|
const form = document.querySelector('form')
|
||||||
|
@ -972,7 +972,7 @@ describe('chromium features', () => {
|
||||||
|
|
||||||
defer(() => { w.close(); });
|
defer(() => { w.close(); });
|
||||||
|
|
||||||
const promise = once(app, 'browser-window-created');
|
const promise = once(app, 'browser-window-created') as Promise<[any, BrowserWindow]>;
|
||||||
w.loadFile(path.join(fixturesPath, 'pages', 'window-open.html'));
|
w.loadFile(path.join(fixturesPath, 'pages', 'window-open.html'));
|
||||||
const [, newWindow] = await promise;
|
const [, newWindow] = await promise;
|
||||||
expect(newWindow.isVisible()).to.equal(true);
|
expect(newWindow.isVisible()).to.equal(true);
|
||||||
|
@ -1008,7 +1008,7 @@ describe('chromium features', () => {
|
||||||
w.webContents.executeJavaScript(`
|
w.webContents.executeJavaScript(`
|
||||||
{ b = window.open('devtools://devtools/bundled/inspector.html', '', 'nodeIntegration=no,show=no'); null }
|
{ b = window.open('devtools://devtools/bundled/inspector.html', '', 'nodeIntegration=no,show=no'); null }
|
||||||
`);
|
`);
|
||||||
const [, contents] = await once(app, 'web-contents-created');
|
const [, contents] = await once(app, 'web-contents-created') as [any, WebContents];
|
||||||
const typeofProcessGlobal = await contents.executeJavaScript('typeof process');
|
const typeofProcessGlobal = await contents.executeJavaScript('typeof process');
|
||||||
expect(typeofProcessGlobal).to.equal('undefined');
|
expect(typeofProcessGlobal).to.equal('undefined');
|
||||||
});
|
});
|
||||||
|
@ -1019,7 +1019,7 @@ describe('chromium features', () => {
|
||||||
w.webContents.executeJavaScript(`
|
w.webContents.executeJavaScript(`
|
||||||
{ b = window.open('about:blank', '', 'nodeIntegration=no,show=no'); null }
|
{ b = window.open('about:blank', '', 'nodeIntegration=no,show=no'); null }
|
||||||
`);
|
`);
|
||||||
const [, contents] = await once(app, 'web-contents-created');
|
const [, contents] = await once(app, 'web-contents-created') as [any, WebContents];
|
||||||
const typeofProcessGlobal = await contents.executeJavaScript('typeof process');
|
const typeofProcessGlobal = await contents.executeJavaScript('typeof process');
|
||||||
expect(typeofProcessGlobal).to.equal('undefined');
|
expect(typeofProcessGlobal).to.equal('undefined');
|
||||||
});
|
});
|
||||||
|
@ -1036,14 +1036,14 @@ describe('chromium features', () => {
|
||||||
w.webContents.executeJavaScript(`
|
w.webContents.executeJavaScript(`
|
||||||
{ b = window.open(${JSON.stringify(windowUrl)}, '', 'javascript=no,show=no'); null }
|
{ b = window.open(${JSON.stringify(windowUrl)}, '', 'javascript=no,show=no'); null }
|
||||||
`);
|
`);
|
||||||
const [, contents] = await once(app, 'web-contents-created');
|
const [, contents] = await once(app, 'web-contents-created') as [any, WebContents];
|
||||||
await once(contents, 'did-finish-load');
|
await once(contents, 'did-finish-load');
|
||||||
// Click link on page
|
// Click link on page
|
||||||
contents.sendInputEvent({ type: 'mouseDown', clickCount: 1, x: 1, y: 1 });
|
contents.sendInputEvent({ type: 'mouseDown', clickCount: 1, x: 1, y: 1 });
|
||||||
contents.sendInputEvent({ type: 'mouseUp', clickCount: 1, x: 1, y: 1 });
|
contents.sendInputEvent({ type: 'mouseUp', clickCount: 1, x: 1, y: 1 });
|
||||||
const [, window] = await once(app, 'browser-window-created');
|
const [, window] = await once(app, 'browser-window-created') as [any, BrowserWindow];
|
||||||
const preferences = window.webContents.getLastWebPreferences();
|
const preferences = window.webContents.getLastWebPreferences();
|
||||||
expect(preferences.javascript).to.be.false();
|
expect(preferences!.javascript).to.be.false();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('defines a window.location getter', async () => {
|
it('defines a window.location getter', async () => {
|
||||||
|
@ -1056,7 +1056,7 @@ describe('chromium features', () => {
|
||||||
const w = new BrowserWindow({ show: false });
|
const w = new BrowserWindow({ show: false });
|
||||||
w.webContents.loadFile(path.resolve(__dirname, 'fixtures', 'blank.html'));
|
w.webContents.loadFile(path.resolve(__dirname, 'fixtures', 'blank.html'));
|
||||||
w.webContents.executeJavaScript(`{ b = window.open(${JSON.stringify(targetURL)}); null }`);
|
w.webContents.executeJavaScript(`{ b = window.open(${JSON.stringify(targetURL)}); null }`);
|
||||||
const [, window] = await once(app, 'browser-window-created');
|
const [, window] = await once(app, 'browser-window-created') as [any, BrowserWindow];
|
||||||
await once(window.webContents, 'did-finish-load');
|
await once(window.webContents, 'did-finish-load');
|
||||||
expect(await w.webContents.executeJavaScript('b.location.href')).to.equal(targetURL);
|
expect(await w.webContents.executeJavaScript('b.location.href')).to.equal(targetURL);
|
||||||
});
|
});
|
||||||
|
@ -1065,7 +1065,7 @@ describe('chromium features', () => {
|
||||||
const w = new BrowserWindow({ show: false });
|
const w = new BrowserWindow({ show: false });
|
||||||
w.webContents.loadFile(path.resolve(__dirname, 'fixtures', 'blank.html'));
|
w.webContents.loadFile(path.resolve(__dirname, 'fixtures', 'blank.html'));
|
||||||
w.webContents.executeJavaScript('{ b = window.open("about:blank"); null }');
|
w.webContents.executeJavaScript('{ b = window.open("about:blank"); null }');
|
||||||
const [, { webContents }] = await once(app, 'browser-window-created');
|
const [, { webContents }] = await once(app, 'browser-window-created') as [any, BrowserWindow];
|
||||||
await once(webContents, 'did-finish-load');
|
await once(webContents, 'did-finish-load');
|
||||||
// When it loads, redirect
|
// When it loads, redirect
|
||||||
w.webContents.executeJavaScript(`{ b.location = ${JSON.stringify(`file://${fixturesPath}/pages/base-page.html`)}; null }`);
|
w.webContents.executeJavaScript(`{ b.location = ${JSON.stringify(`file://${fixturesPath}/pages/base-page.html`)}; null }`);
|
||||||
|
@ -1076,7 +1076,7 @@ describe('chromium features', () => {
|
||||||
const w = new BrowserWindow({ show: false });
|
const w = new BrowserWindow({ show: false });
|
||||||
w.webContents.loadFile(path.resolve(__dirname, 'fixtures', 'blank.html'));
|
w.webContents.loadFile(path.resolve(__dirname, 'fixtures', 'blank.html'));
|
||||||
w.webContents.executeJavaScript('{ b = window.open("about:blank"); null }');
|
w.webContents.executeJavaScript('{ b = window.open("about:blank"); null }');
|
||||||
const [, { webContents }] = await once(app, 'browser-window-created');
|
const [, { webContents }] = await once(app, 'browser-window-created') as [any, BrowserWindow];
|
||||||
await once(webContents, 'did-finish-load');
|
await once(webContents, 'did-finish-load');
|
||||||
// When it loads, redirect
|
// When it loads, redirect
|
||||||
w.webContents.executeJavaScript(`{ b.location.href = ${JSON.stringify(`file://${fixturesPath}/pages/base-page.html`)}; null }`);
|
w.webContents.executeJavaScript(`{ b.location.href = ${JSON.stringify(`file://${fixturesPath}/pages/base-page.html`)}; null }`);
|
||||||
|
@ -1087,7 +1087,7 @@ describe('chromium features', () => {
|
||||||
const w = new BrowserWindow({ show: false });
|
const w = new BrowserWindow({ show: false });
|
||||||
w.loadURL('about:blank');
|
w.loadURL('about:blank');
|
||||||
w.webContents.executeJavaScript('{ b = window.open(); null }');
|
w.webContents.executeJavaScript('{ b = window.open(); null }');
|
||||||
const [, { webContents }] = await once(app, 'browser-window-created');
|
const [, { webContents }] = await once(app, 'browser-window-created') as [any, BrowserWindow];
|
||||||
await once(webContents, 'did-finish-load');
|
await once(webContents, 'did-finish-load');
|
||||||
expect(await w.webContents.executeJavaScript('b.location.href')).to.equal('about:blank');
|
expect(await w.webContents.executeJavaScript('b.location.href')).to.equal('about:blank');
|
||||||
});
|
});
|
||||||
|
@ -1096,7 +1096,7 @@ describe('chromium features', () => {
|
||||||
const w = new BrowserWindow({ show: false });
|
const w = new BrowserWindow({ show: false });
|
||||||
w.loadURL('about:blank');
|
w.loadURL('about:blank');
|
||||||
w.webContents.executeJavaScript('{ b = window.open(\'\'); null }');
|
w.webContents.executeJavaScript('{ b = window.open(\'\'); null }');
|
||||||
const [, { webContents }] = await once(app, 'browser-window-created');
|
const [, { webContents }] = await once(app, 'browser-window-created') as [any, BrowserWindow];
|
||||||
await once(webContents, 'did-finish-load');
|
await once(webContents, 'did-finish-load');
|
||||||
expect(await w.webContents.executeJavaScript('b.location.href')).to.equal('about:blank');
|
expect(await w.webContents.executeJavaScript('b.location.href')).to.equal('about:blank');
|
||||||
});
|
});
|
||||||
|
@ -1864,7 +1864,7 @@ describe('chromium features', () => {
|
||||||
it('opens when loading a pdf resource as top level navigation', async () => {
|
it('opens when loading a pdf resource as top level navigation', async () => {
|
||||||
const w = new BrowserWindow({ show: false });
|
const w = new BrowserWindow({ show: false });
|
||||||
w.loadURL(pdfSource);
|
w.loadURL(pdfSource);
|
||||||
const [, contents] = await once(app, 'web-contents-created');
|
const [, contents] = await once(app, 'web-contents-created') as [any, WebContents];
|
||||||
await once(contents, 'did-navigate');
|
await once(contents, 'did-navigate');
|
||||||
expect(contents.getURL()).to.equal('chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/index.html');
|
expect(contents.getURL()).to.equal('chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/index.html');
|
||||||
});
|
});
|
||||||
|
@ -1872,7 +1872,7 @@ describe('chromium features', () => {
|
||||||
it('opens when loading a pdf resource in a iframe', async () => {
|
it('opens when loading a pdf resource in a iframe', async () => {
|
||||||
const w = new BrowserWindow({ show: false });
|
const w = new BrowserWindow({ show: false });
|
||||||
w.loadFile(path.join(__dirname, 'fixtures', 'pages', 'pdf-in-iframe.html'));
|
w.loadFile(path.join(__dirname, 'fixtures', 'pages', 'pdf-in-iframe.html'));
|
||||||
const [, contents] = await once(app, 'web-contents-created');
|
const [, contents] = await once(app, 'web-contents-created') as [any, WebContents];
|
||||||
await once(contents, 'did-navigate');
|
await once(contents, 'did-navigate');
|
||||||
expect(contents.getURL()).to.equal('chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/index.html');
|
expect(contents.getURL()).to.equal('chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/index.html');
|
||||||
});
|
});
|
||||||
|
|
|
@ -54,7 +54,7 @@ describe('chrome extensions', () => {
|
||||||
const w = new BrowserWindow({ show: false, webPreferences: { session: customSession, sandbox: true } });
|
const w = new BrowserWindow({ show: false, webPreferences: { session: customSession, sandbox: true } });
|
||||||
await w.loadURL('about:blank');
|
await w.loadURL('about:blank');
|
||||||
|
|
||||||
const promise = once(app, 'web-contents-created');
|
const promise = once(app, 'web-contents-created') as Promise<[any, WebContents]>;
|
||||||
await customSession.loadExtension(path.join(fixtures, 'extensions', 'persistent-background-page'));
|
await customSession.loadExtension(path.join(fixtures, 'extensions', 'persistent-background-page'));
|
||||||
const args: any = await promise;
|
const args: any = await promise;
|
||||||
const wc: Electron.WebContents = args[1];
|
const wc: Electron.WebContents = args[1];
|
||||||
|
@ -74,7 +74,7 @@ describe('chrome extensions', () => {
|
||||||
const w = new BrowserWindow({ show: false, webPreferences: { session: customSession, sandbox: true } });
|
const w = new BrowserWindow({ show: false, webPreferences: { session: customSession, sandbox: true } });
|
||||||
await w.loadURL('about:blank');
|
await w.loadURL('about:blank');
|
||||||
|
|
||||||
const promise = once(app, 'web-contents-created');
|
const promise = once(app, 'web-contents-created') as Promise<[any, WebContents]>;
|
||||||
await customSession.loadExtension(path.join(fixtures, 'extensions', 'persistent-background-page'));
|
await customSession.loadExtension(path.join(fixtures, 'extensions', 'persistent-background-page'));
|
||||||
const args: any = await promise;
|
const args: any = await promise;
|
||||||
const wc: Electron.WebContents = args[1];
|
const wc: Electron.WebContents = args[1];
|
||||||
|
@ -457,7 +457,7 @@ describe('chrome extensions', () => {
|
||||||
|
|
||||||
it('has session in background page', async () => {
|
it('has session in background page', async () => {
|
||||||
const customSession = session.fromPartition(`persist:${require('uuid').v4()}`);
|
const customSession = session.fromPartition(`persist:${require('uuid').v4()}`);
|
||||||
const promise = once(app, 'web-contents-created');
|
const promise = once(app, 'web-contents-created') as Promise<[any, WebContents]>;
|
||||||
const { id } = await customSession.loadExtension(path.join(fixtures, 'extensions', 'persistent-background-page'));
|
const { id } = await customSession.loadExtension(path.join(fixtures, 'extensions', 'persistent-background-page'));
|
||||||
const [, bgPageContents] = await promise;
|
const [, bgPageContents] = await promise;
|
||||||
expect(bgPageContents.getType()).to.equal('backgroundPage');
|
expect(bgPageContents.getType()).to.equal('backgroundPage');
|
||||||
|
@ -468,7 +468,7 @@ describe('chrome extensions', () => {
|
||||||
|
|
||||||
it('can open devtools of background page', async () => {
|
it('can open devtools of background page', async () => {
|
||||||
const customSession = session.fromPartition(`persist:${require('uuid').v4()}`);
|
const customSession = session.fromPartition(`persist:${require('uuid').v4()}`);
|
||||||
const promise = once(app, 'web-contents-created');
|
const promise = once(app, 'web-contents-created') as Promise<[any, WebContents]>;
|
||||||
await customSession.loadExtension(path.join(fixtures, 'extensions', 'persistent-background-page'));
|
await customSession.loadExtension(path.join(fixtures, 'extensions', 'persistent-background-page'));
|
||||||
const [, bgPageContents] = await promise;
|
const [, bgPageContents] = await promise;
|
||||||
expect(bgPageContents.getType()).to.equal('backgroundPage');
|
expect(bgPageContents.getType()).to.equal('backgroundPage');
|
||||||
|
|
|
@ -182,7 +182,7 @@ describe('webContents.setWindowOpenHandler', () => {
|
||||||
it('can change webPreferences of child windows', async () => {
|
it('can change webPreferences of child windows', async () => {
|
||||||
browserWindow.webContents.setWindowOpenHandler(() => ({ action: 'allow', overrideBrowserWindowOptions: { webPreferences: { defaultFontSize: 30 } } }));
|
browserWindow.webContents.setWindowOpenHandler(() => ({ action: 'allow', overrideBrowserWindowOptions: { webPreferences: { defaultFontSize: 30 } } }));
|
||||||
|
|
||||||
const didCreateWindow = once(browserWindow.webContents, 'did-create-window');
|
const didCreateWindow = once(browserWindow.webContents, 'did-create-window') as Promise<[BrowserWindow, Electron.DidCreateWindowDetails]>;
|
||||||
browserWindow.webContents.executeJavaScript("window.open('about:blank', '', 'show=no') && true");
|
browserWindow.webContents.executeJavaScript("window.open('about:blank', '', 'show=no') && true");
|
||||||
const [childWindow] = await didCreateWindow;
|
const [childWindow] = await didCreateWindow;
|
||||||
|
|
||||||
|
|
|
@ -208,7 +208,7 @@ describe('<webview> tag', function () {
|
||||||
contextIsolation: false
|
contextIsolation: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const didAttachWebview = once(w.webContents, 'did-attach-webview');
|
const didAttachWebview = once(w.webContents, 'did-attach-webview') as Promise<[any, WebContents]>;
|
||||||
const webviewDomReady = once(ipcMain, 'webview-dom-ready');
|
const webviewDomReady = once(ipcMain, 'webview-dom-ready');
|
||||||
w.loadFile(path.join(fixtures, 'pages', 'webview-did-attach-event.html'));
|
w.loadFile(path.join(fixtures, 'pages', 'webview-did-attach-event.html'));
|
||||||
|
|
||||||
|
@ -434,7 +434,7 @@ describe('<webview> tag', function () {
|
||||||
contextIsolation: false
|
contextIsolation: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const attachPromise = once(w.webContents, 'did-attach-webview');
|
const attachPromise = once(w.webContents, 'did-attach-webview') as Promise<[any, WebContents]>;
|
||||||
const readyPromise = once(ipcMain, 'dom-ready');
|
const readyPromise = once(ipcMain, 'dom-ready');
|
||||||
w.loadFile(path.join(fixtures, 'pages', 'webview-zoom-inherited.html'));
|
w.loadFile(path.join(fixtures, 'pages', 'webview-zoom-inherited.html'));
|
||||||
const [, webview] = await attachPromise;
|
const [, webview] = await attachPromise;
|
||||||
|
@ -453,7 +453,7 @@ describe('<webview> tag', function () {
|
||||||
contextIsolation: false
|
contextIsolation: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const attachPromise = once(w.webContents, 'did-attach-webview');
|
const attachPromise = once(w.webContents, 'did-attach-webview') as Promise<[any, WebContents]>;
|
||||||
await w.loadFile(path.join(fixtures, 'pages', 'webview-zoom-inherited.html'));
|
await w.loadFile(path.join(fixtures, 'pages', 'webview-zoom-inherited.html'));
|
||||||
await attachPromise;
|
await attachPromise;
|
||||||
await w.webContents.executeJavaScript('view.remove()');
|
await w.webContents.executeJavaScript('view.remove()');
|
||||||
|
@ -463,7 +463,7 @@ describe('<webview> tag', function () {
|
||||||
|
|
||||||
describe('requestFullscreen from webview', () => {
|
describe('requestFullscreen from webview', () => {
|
||||||
afterEach(closeAllWindows);
|
afterEach(closeAllWindows);
|
||||||
const loadWebViewWindow = async () => {
|
async function loadWebViewWindow (): Promise<[BrowserWindow, WebContents]> {
|
||||||
const w = new BrowserWindow({
|
const w = new BrowserWindow({
|
||||||
webPreferences: {
|
webPreferences: {
|
||||||
webviewTag: true,
|
webviewTag: true,
|
||||||
|
@ -472,7 +472,7 @@ describe('<webview> tag', function () {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const attachPromise = once(w.webContents, 'did-attach-webview');
|
const attachPromise = once(w.webContents, 'did-attach-webview') as Promise<[any, WebContents]>;
|
||||||
const loadPromise = once(w.webContents, 'did-finish-load');
|
const loadPromise = once(w.webContents, 'did-finish-load');
|
||||||
const readyPromise = once(ipcMain, 'webview-ready');
|
const readyPromise = once(ipcMain, 'webview-ready');
|
||||||
|
|
||||||
|
@ -572,7 +572,7 @@ describe('<webview> tag', function () {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const didAttachWebview = once(w.webContents, 'did-attach-webview');
|
const didAttachWebview = once(w.webContents, 'did-attach-webview') as Promise<[any, WebContents]>;
|
||||||
w.loadFile(path.join(fixtures, 'pages', 'webview-did-attach-event.html'));
|
w.loadFile(path.join(fixtures, 'pages', 'webview-did-attach-event.html'));
|
||||||
|
|
||||||
const [, webContents] = await didAttachWebview;
|
const [, webContents] = await didAttachWebview;
|
||||||
|
@ -792,7 +792,7 @@ describe('<webview> tag', function () {
|
||||||
partition,
|
partition,
|
||||||
nodeintegration: 'on'
|
nodeintegration: 'on'
|
||||||
});
|
});
|
||||||
const [, webViewContents] = await once(app, 'web-contents-created');
|
const [, webViewContents] = await once(app, 'web-contents-created') as [any, WebContents];
|
||||||
setUpRequestHandler(webViewContents.id, 'media');
|
setUpRequestHandler(webViewContents.id, 'media');
|
||||||
const [, errorName] = await errorFromRenderer;
|
const [, errorName] = await errorFromRenderer;
|
||||||
expect(errorName).to.equal('PermissionDeniedError');
|
expect(errorName).to.equal('PermissionDeniedError');
|
||||||
|
@ -806,7 +806,7 @@ describe('<webview> tag', function () {
|
||||||
nodeintegration: 'on',
|
nodeintegration: 'on',
|
||||||
webpreferences: 'contextIsolation=no'
|
webpreferences: 'contextIsolation=no'
|
||||||
});
|
});
|
||||||
const [, webViewContents] = await once(app, 'web-contents-created');
|
const [, webViewContents] = await once(app, 'web-contents-created') as [any, WebContents];
|
||||||
setUpRequestHandler(webViewContents.id, 'geolocation');
|
setUpRequestHandler(webViewContents.id, 'geolocation');
|
||||||
const [, error] = await errorFromRenderer;
|
const [, error] = await errorFromRenderer;
|
||||||
expect(error).to.equal('User denied Geolocation');
|
expect(error).to.equal('User denied Geolocation');
|
||||||
|
@ -820,7 +820,7 @@ describe('<webview> tag', function () {
|
||||||
nodeintegration: 'on',
|
nodeintegration: 'on',
|
||||||
webpreferences: 'contextIsolation=no'
|
webpreferences: 'contextIsolation=no'
|
||||||
});
|
});
|
||||||
const [, webViewContents] = await once(app, 'web-contents-created');
|
const [, webViewContents] = await once(app, 'web-contents-created') as [any, WebContents];
|
||||||
setUpRequestHandler(webViewContents.id, 'midi');
|
setUpRequestHandler(webViewContents.id, 'midi');
|
||||||
const [, error] = await errorFromRenderer;
|
const [, error] = await errorFromRenderer;
|
||||||
expect(error).to.equal('SecurityError');
|
expect(error).to.equal('SecurityError');
|
||||||
|
@ -834,7 +834,7 @@ describe('<webview> tag', function () {
|
||||||
nodeintegration: 'on',
|
nodeintegration: 'on',
|
||||||
webpreferences: 'contextIsolation=no'
|
webpreferences: 'contextIsolation=no'
|
||||||
});
|
});
|
||||||
const [, webViewContents] = await once(app, 'web-contents-created');
|
const [, webViewContents] = await once(app, 'web-contents-created') as [any, WebContents];
|
||||||
setUpRequestHandler(webViewContents.id, 'midiSysex');
|
setUpRequestHandler(webViewContents.id, 'midiSysex');
|
||||||
const [, error] = await errorFromRenderer;
|
const [, error] = await errorFromRenderer;
|
||||||
expect(error).to.equal('SecurityError');
|
expect(error).to.equal('SecurityError');
|
||||||
|
@ -845,7 +845,7 @@ describe('<webview> tag', function () {
|
||||||
src: 'magnet:test',
|
src: 'magnet:test',
|
||||||
partition
|
partition
|
||||||
});
|
});
|
||||||
const [, webViewContents] = await once(app, 'web-contents-created');
|
const [, webViewContents] = await once(app, 'web-contents-created') as [any, WebContents];
|
||||||
await setUpRequestHandler(webViewContents.id, 'openExternal');
|
await setUpRequestHandler(webViewContents.id, 'openExternal');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -857,7 +857,7 @@ describe('<webview> tag', function () {
|
||||||
nodeintegration: 'on',
|
nodeintegration: 'on',
|
||||||
webpreferences: 'contextIsolation=no'
|
webpreferences: 'contextIsolation=no'
|
||||||
});
|
});
|
||||||
const [, webViewContents] = await once(app, 'web-contents-created');
|
const [, webViewContents] = await once(app, 'web-contents-created') as [any, WebContents];
|
||||||
|
|
||||||
await setUpRequestHandler(webViewContents.id, 'notifications');
|
await setUpRequestHandler(webViewContents.id, 'notifications');
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue