diff --git a/lib/browser/guest-window-manager.js b/lib/browser/guest-window-manager.js index 3ff307ea7c2..d0fa3cd4e23 100644 --- a/lib/browser/guest-window-manager.js +++ b/lib/browser/guest-window-manager.js @@ -24,14 +24,14 @@ const mergeOptions = function (child, parent) { // Merge |options| with the |embedder|'s window's options. const mergeBrowserWindowOptions = function (embedder, options) { + if (options.webPreferences == null) { + options.webPreferences = {} + } if (embedder.browserWindowOptions != null) { // Inherit the original options if it is a BrowserWindow. mergeOptions(options, embedder.browserWindowOptions) } else { // Or only inherit web-preferences if it is a webview. - if (options.webPreferences == null) { - options.webPreferences = {} - } mergeOptions(options.webPreferences, embedder.getWebPreferences()) } diff --git a/spec/api-browser-window-spec.js b/spec/api-browser-window-spec.js index 61c939ef24e..ae99be6808c 100644 --- a/spec/api-browser-window-spec.js +++ b/spec/api-browser-window-spec.js @@ -828,6 +828,19 @@ describe('browser-window module', function () { w.loadURL('file://' + fixtures + '/pages/window-open.html') }) + it('emits when window.open is called with no webPreferences', function (done) { + w.destroy() + w = new BrowserWindow({ show: false }) + w.webContents.once('new-window', function (e, url, frameName, disposition, options, additionalFeatures) { + e.preventDefault() + assert.equal(url, 'http://host/') + assert.equal(frameName, 'host') + assert.equal(additionalFeatures[0], 'this-is-not-a-standard-feature') + done() + }) + w.loadURL('file://' + fixtures + '/pages/window-open.html') + }) + it('emits when link with target is called', function (done) { this.timeout(10000) w.webContents.once('new-window', function (e, url, frameName) {