DRY up logic to check if native modules should be loaded
This commit is contained in:
parent
90964290a6
commit
5cf4995f2e
4 changed files with 55 additions and 48 deletions
|
@ -12,6 +12,7 @@ const {ipcRenderer, remote, screen} = require('electron')
|
||||||
const {app, ipcMain, BrowserWindow, protocol, webContents} = remote
|
const {app, ipcMain, BrowserWindow, protocol, webContents} = remote
|
||||||
|
|
||||||
const isCI = remote.getGlobal('isCi')
|
const isCI = remote.getGlobal('isCi')
|
||||||
|
const nativeModulesEnabled = remote.getGlobal('nativeModulesEnabled')
|
||||||
|
|
||||||
describe('BrowserWindow module', function () {
|
describe('BrowserWindow module', function () {
|
||||||
var fixtures = path.resolve(__dirname, 'fixtures')
|
var fixtures = path.resolve(__dirname, 'fixtures')
|
||||||
|
@ -1301,19 +1302,19 @@ describe('BrowserWindow module', function () {
|
||||||
w.loadURL('file://' + path.join(fixtures, 'api', 'native-window-open-iframe.html'))
|
w.loadURL('file://' + path.join(fixtures, 'api', 'native-window-open-iframe.html'))
|
||||||
})
|
})
|
||||||
|
|
||||||
if (process.platform !== 'win32' || process.execPath.toLowerCase().indexOf('\\out\\d\\') === -1) {
|
it('loads native addons correctly after reload', (done) => {
|
||||||
it('loads native addons correctly after reload', (done) => {
|
if (!nativeModulesEnabled) return done()
|
||||||
|
|
||||||
|
ipcMain.once('answer', (event, content) => {
|
||||||
|
assert.equal(content, 'function')
|
||||||
ipcMain.once('answer', (event, content) => {
|
ipcMain.once('answer', (event, content) => {
|
||||||
assert.equal(content, 'function')
|
assert.equal(content, 'function')
|
||||||
ipcMain.once('answer', (event, content) => {
|
done()
|
||||||
assert.equal(content, 'function')
|
|
||||||
done()
|
|
||||||
})
|
|
||||||
w.reload()
|
|
||||||
})
|
})
|
||||||
w.loadURL('file://' + path.join(fixtures, 'api', 'native-window-open-native-addon.html'))
|
w.reload()
|
||||||
})
|
})
|
||||||
}
|
w.loadURL('file://' + path.join(fixtures, 'api', 'native-window-open-native-addon.html'))
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -5,38 +5,41 @@ const {remote} = require('electron')
|
||||||
const {BrowserWindow} = remote
|
const {BrowserWindow} = remote
|
||||||
const {closeWindow} = require('./window-helpers')
|
const {closeWindow} = require('./window-helpers')
|
||||||
|
|
||||||
|
const nativeModulesEnabled = remote.getGlobal('nativeModulesEnabled')
|
||||||
|
|
||||||
describe('modules support', function () {
|
describe('modules support', function () {
|
||||||
var fixtures = path.join(__dirname, 'fixtures')
|
var fixtures = path.join(__dirname, 'fixtures')
|
||||||
|
|
||||||
describe('third-party module', function () {
|
describe('third-party module', function () {
|
||||||
if (process.platform !== 'win32' || process.execPath.toLowerCase().indexOf('\\out\\d\\') === -1) {
|
describe('runas', function () {
|
||||||
describe('runas', function () {
|
if (!nativeModulesEnabled) return
|
||||||
it('can be required in renderer', function () {
|
|
||||||
require('runas')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('can be required in node binary', function (done) {
|
it('can be required in renderer', function () {
|
||||||
var runas = path.join(fixtures, 'module', 'runas.js')
|
require('runas')
|
||||||
var child = require('child_process').fork(runas)
|
|
||||||
child.on('message', function (msg) {
|
|
||||||
assert.equal(msg, 'ok')
|
|
||||||
done()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('ffi', function () {
|
it('can be required in node binary', function (done) {
|
||||||
if (process.platform === 'win32') return
|
var runas = path.join(fixtures, 'module', 'runas.js')
|
||||||
|
var child = require('child_process').fork(runas)
|
||||||
it('does not crash', function () {
|
child.on('message', function (msg) {
|
||||||
var ffi = require('ffi')
|
assert.equal(msg, 'ok')
|
||||||
var libm = ffi.Library('libm', {
|
done()
|
||||||
ceil: ['double', ['double']]
|
|
||||||
})
|
|
||||||
assert.equal(libm.ceil(1.5), 2)
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
})
|
||||||
|
|
||||||
|
describe('ffi', function () {
|
||||||
|
if (!nativeModulesEnabled) return
|
||||||
|
if (process.platform === 'win32') return
|
||||||
|
|
||||||
|
it('does not crash', function () {
|
||||||
|
var ffi = require('ffi')
|
||||||
|
var libm = ffi.Library('libm', {
|
||||||
|
ceil: ['double', ['double']]
|
||||||
|
})
|
||||||
|
assert.equal(libm.ceil(1.5), 2)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe('q', function () {
|
describe('q', function () {
|
||||||
var Q = require('q')
|
var Q = require('q')
|
||||||
|
|
|
@ -89,6 +89,8 @@ if (global.isCi) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
global.nativeModulesEnabled = process.platform !== 'win32' || process.execPath.toLowerCase().indexOf('\\out\\d\\') === -1
|
||||||
|
|
||||||
// Register app as standard scheme.
|
// Register app as standard scheme.
|
||||||
global.standardScheme = 'app'
|
global.standardScheme = 'app'
|
||||||
global.zoomScheme = 'zoom'
|
global.zoomScheme = 'zoom'
|
||||||
|
|
|
@ -7,6 +7,7 @@ const {app, session, getGuestWebContents, ipcMain, BrowserWindow, webContents} =
|
||||||
const {closeWindow} = require('./window-helpers')
|
const {closeWindow} = require('./window-helpers')
|
||||||
|
|
||||||
const isCI = remote.getGlobal('isCi')
|
const isCI = remote.getGlobal('isCi')
|
||||||
|
const nativeModulesEnabled = remote.getGlobal('nativeModulesEnabled')
|
||||||
|
|
||||||
describe('<webview> tag', function () {
|
describe('<webview> tag', function () {
|
||||||
this.timeout(3 * 60 * 1000)
|
this.timeout(3 * 60 * 1000)
|
||||||
|
@ -171,23 +172,23 @@ describe('<webview> tag', function () {
|
||||||
document.body.appendChild(webview)
|
document.body.appendChild(webview)
|
||||||
})
|
})
|
||||||
|
|
||||||
if (process.platform !== 'win32' || process.execPath.toLowerCase().indexOf('\\out\\d\\') === -1) {
|
it('loads native modules when navigation happens', function (done) {
|
||||||
it('loads native modules when navigation happens', function (done) {
|
if (!nativeModulesEnabled) return done()
|
||||||
var listener = function () {
|
|
||||||
webview.removeEventListener('did-finish-load', listener)
|
var listener = function () {
|
||||||
var listener2 = function (e) {
|
webview.removeEventListener('did-finish-load', listener)
|
||||||
assert.equal(e.message, 'function')
|
var listener2 = function (e) {
|
||||||
done()
|
assert.equal(e.message, 'function')
|
||||||
}
|
done()
|
||||||
webview.addEventListener('console-message', listener2)
|
|
||||||
webview.reload()
|
|
||||||
}
|
}
|
||||||
webview.addEventListener('did-finish-load', listener)
|
webview.addEventListener('console-message', listener2)
|
||||||
webview.setAttribute('nodeintegration', 'on')
|
webview.reload()
|
||||||
webview.src = 'file://' + fixtures + '/pages/native-module.html'
|
}
|
||||||
document.body.appendChild(webview)
|
webview.addEventListener('did-finish-load', listener)
|
||||||
})
|
webview.setAttribute('nodeintegration', 'on')
|
||||||
}
|
webview.src = 'file://' + fixtures + '/pages/native-module.html'
|
||||||
|
document.body.appendChild(webview)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('preload attribute', function () {
|
describe('preload attribute', function () {
|
||||||
|
|
Loading…
Reference in a new issue