chore: add helper to wait for a window to load in a remote-safe way (#16837)

This commit is contained in:
Samuel Attard 2019-02-08 12:26:03 -08:00 committed by GitHub
parent 1632c4b837
commit 833daaa2b2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 3 deletions

View file

@ -9,7 +9,7 @@ const url = require('url')
const ChildProcess = require('child_process') const ChildProcess = require('child_process')
const { ipcRenderer, remote } = require('electron') const { ipcRenderer, remote } = require('electron')
const { emittedOnce } = require('./events-helpers') const { emittedOnce } = require('./events-helpers')
const { closeWindow } = require('./window-helpers') const { closeWindow, waitForWebContentsToLoad } = require('./window-helpers')
const { resolveGetters } = require('./assert-helpers') const { resolveGetters } = require('./assert-helpers')
const { app, BrowserWindow, ipcMain, protocol, session, webContents } = remote const { app, BrowserWindow, ipcMain, protocol, session, webContents } = remote
const isCI = remote.getGlobal('isCi') const isCI = remote.getGlobal('isCi')
@ -525,7 +525,7 @@ describe('chromium feature', () => {
const w = window.open() const w = window.open()
try { try {
const [, { webContents }] = await browserWindowCreated const [, { webContents }] = await browserWindowCreated
await emittedOnce(webContents, 'did-finish-load') await waitForWebContentsToLoad(webContents)
assert.strictEqual(w.location.href, 'about:blank') assert.strictEqual(w.location.href, 'about:blank')
} finally { } finally {
w.close() w.close()
@ -537,7 +537,7 @@ describe('chromium feature', () => {
const w = window.open('') const w = window.open('')
try { try {
const [, { webContents }] = await browserWindowCreated const [, { webContents }] = await browserWindowCreated
await emittedOnce(webContents, 'did-finish-load') await waitForWebContentsToLoad(webContents)
assert.strictEqual(w.location.href, 'about:blank') assert.strictEqual(w.location.href, 'about:blank')
} finally { } finally {
w.close() w.close()

View file

@ -17,3 +17,10 @@ exports.closeWindow = async (window = null,
expect(BrowserWindow.getAllWindows()).to.have.lengthOf(1) expect(BrowserWindow.getAllWindows()).to.have.lengthOf(1)
} }
} }
exports.waitForWebContentsToLoad = async (webContents) => {
const didFinishLoadPromise = emittedOnce(webContents, 'did-finish-load')
if (webContents.isLoadingMainFrame()) {
await didFinishLoadPromise
}
}