diff --git a/spec/fixtures/module/answer.js b/spec/fixtures/module/answer.js
new file mode 100644
index 000000000000..d592d6cda214
--- /dev/null
+++ b/spec/fixtures/module/answer.js
@@ -0,0 +1,4 @@
+var ipcRenderer = require('electron').ipcRenderer
+window.answer = function (answer) {
+ ipcRenderer.send('answer', answer)
+}
diff --git a/spec/fixtures/pages/web-view-log-process.html b/spec/fixtures/pages/web-view-log-process.html
new file mode 100644
index 000000000000..9e75edb393e2
--- /dev/null
+++ b/spec/fixtures/pages/web-view-log-process.html
@@ -0,0 +1,13 @@
+
+
+
+
+ test
+
+
+
+ test?
+
+
diff --git a/spec/fixtures/pages/webview-no-node-integration-on-window.html b/spec/fixtures/pages/webview-no-node-integration-on-window.html
new file mode 100644
index 000000000000..0af03cf1c497
--- /dev/null
+++ b/spec/fixtures/pages/webview-no-node-integration-on-window.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
diff --git a/spec/webview-spec.js b/spec/webview-spec.js
index 88afbe2f131c..d2c37c857df1 100644
--- a/spec/webview-spec.js
+++ b/spec/webview-spec.js
@@ -84,6 +84,39 @@ describe(' tag', function () {
document.body.appendChild(webview)
})
+ it('disables node integration when disabled on the parent BrowserWindow', function (done) {
+ var b = undefined
+
+ ipcMain.once('answer', function (event, typeofProcess) {
+ try {
+ assert.equal(typeofProcess, 'undefined')
+ done()
+ } finally {
+ b.close()
+ }
+ })
+
+ var windowUrl = require('url').format({
+ pathname: `${fixtures}/pages/webview-no-node-integration-on-window.html`,
+ protocol: 'file',
+ query: {
+ p: `${fixtures}/pages/web-view-log-process.html`
+ },
+ slashes: true
+ })
+ var preload = path.join(fixtures, 'module', 'answer.js')
+
+ b = new BrowserWindow({
+ height: 400,
+ width: 400,
+ show: false,
+ webPreferences: {
+ preload: preload,
+ nodeIntegration: false,
+ }
+ })
+ b.loadURL(windowUrl)
+ })
it('disables node integration on child windows when it is disabled on the webview', function (done) {
app.once('browser-window-created', function (event, window) {