From 2f5acfedcdf1a5774454e5de2478263fcd38b135 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 19 Dec 2016 15:25:56 -0800 Subject: [PATCH] Add spec for denying perm requests when handler is cleared --- spec/api-session-spec.js | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/spec/api-session-spec.js b/spec/api-session-spec.js index b8170da495..56d34da92e 100644 --- a/spec/api-session-spec.js +++ b/spec/api-session-spec.js @@ -13,6 +13,7 @@ const {ipcMain, session, BrowserWindow, net} = remote describe('session module', function () { var fixtures = path.resolve(__dirname, 'fixtures') var w = null + var webview = null var url = 'http://127.0.0.1' beforeEach(function () { @@ -24,6 +25,11 @@ describe('session module', function () { }) afterEach(function () { + if (!document.body.contains(webview)) { + document.body.appendChild(webview) + } + webview.remove() + return closeWindow(w).then(function () { w = null }) }) @@ -325,7 +331,7 @@ describe('session module', function () { downloadServer.listen(0, '127.0.0.1', function () { var port = downloadServer.address().port ipcRenderer.sendSync('set-download-option', false, false) - var webview = new WebView() + webview = new WebView() webview.src = 'file://' + fixtures + '/api/blank.html' webview.addEventListener('did-finish-load', function () { webview.downloadURL(url + ':' + port + '/') @@ -718,4 +724,24 @@ describe('session module', function () { }) }) }) + + describe('ses.setPermissionRequestHandler(handler)', () => { + it('cancels any pending requests when cleared', (done) => { + const ses = session.fromPartition('permissionTest') + ses.setPermissionRequestHandler(() => { + ses.setPermissionRequestHandler(null) + }) + + webview = new WebView() + webview.addEventListener('ipc-message', function (e) { + assert.equal(e.channel, 'message') + assert.deepEqual(e.args, ['SecurityError']) + done() + }) + webview.src = 'file://' + fixtures + '/pages/permissions/midi-sysex.html' + webview.partition = 'permissionTest' + webview.setAttribute('nodeintegration', 'on') + document.body.appendChild(webview) + }) + }) })