From 33b6ab11f2d333b4ce2ff998a39c0ab257989c24 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 9 Jan 2017 15:18:47 -0800 Subject: [PATCH] Assert context state after reload --- spec/api-browser-window-spec.js | 46 ++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/spec/api-browser-window-spec.js b/spec/api-browser-window-spec.js index 02e9ce67ad..f28759ccbb 100644 --- a/spec/api-browser-window-spec.js +++ b/spec/api-browser-window-spec.js @@ -1836,9 +1836,18 @@ describe('BrowserWindow module', function () { }) describe('contextIsolation option', () => { - it('separates the page context from the Electron/preload context', (done) => { + beforeEach(() => { if (w != null) w.destroy() + w = new BrowserWindow({ + show: false, + webPreferences: { + contextIsolation: true, + preload: path.join(fixtures, 'api', 'isolated-preload.js') + } + }) + }) + it('separates the page context from the Electron/preload context', (done) => { ipcMain.once('isolated-world', (event, data) => { assert.deepEqual(data, { preloadContext: { @@ -1862,12 +1871,35 @@ describe('BrowserWindow module', function () { done() }) - w = new BrowserWindow({ - show: false, - webPreferences: { - contextIsolation: true, - preload: path.join(fixtures, 'api', 'isolated-preload.js') - } + w.loadURL('file://' + fixtures + '/api/isolated.html') + }) + + it('recreates the contexts on reload', (done) => { + w.webContents.once('did-finish-load', () => { + ipcMain.once('isolated-world', (event, data) => { + assert.deepEqual(data, { + preloadContext: { + preloadProperty: 'number', + pageProperty: 'undefined', + typeofRequire: 'function', + typeofProcess: 'object', + typeofArrayPush: 'function', + typeofFunctionApply: 'function' + }, + pageContext: { + preloadProperty: 'undefined', + pageProperty: 'string', + typeofRequire: 'undefined', + typeofProcess: 'undefined', + typeofArrayPush: 'number', + typeofFunctionApply: 'boolean', + typeofPreloadExecuteJavaScriptProperty: 'number' + } + }) + done() + }) + + w.webContents.reload() }) w.loadURL('file://' + fixtures + '/api/isolated.html') })