Preflight Checklist
Issue Details
- Electron Version:
- x86 v4.2.9
- x86 v7.0.0-beta.3
- Operating System:
Expected Behavior
When all perms are denied in chrome, both navigator.mediaDevices.getUserMedia({audio: true}) and navigator.permissions.query({name: 'microphone'}) report denials.
The electron facility for denying chrome perms is session.setPermission(Check|Request)Handler so it's expected that when all perms are denied, navigator.permissions.query({name: 'microphone'}) would return "denied".
Actual Behavior
navigator.permissions.query({name: 'microphone'}) returns {state: 'granted'}
It doesn't actually have this perm as navigator.mediaDevices.getUserMedia({audio: true}) correctly throws "permission denied"
To Reproduce
- run the app
'use strict';
const {app, BrowserWindow} = require('electron');
let win;
app.on('ready', () => {
win = new BrowserWindow({
width: 1440,
height: 900,
useContentSize: true,
webPreferences: {
nodeIntegration: false,
},
});
win.webContents.session.setPermissionCheckHandler((webCont, perm, origin, details) => {
console.log('ChromePermissionCheck %s %O', perm, details);
return false;
});
win.webContents.session.setPermissionRequestHandler((webCont, perm, callback, details) => {
console.log('ChromePermissionRequest %s %O', perm, details);
callback(false);
});
win.webContents.openDevTools({mode: 'right'});
win.loadURL('https://example.org/');
});
- eval
await navigator.permissions.query({name: 'microphone'}) in the devtools console
Screenshots

Preflight Checklist
Issue Details
Expected Behavior
When all perms are denied in chrome, both
navigator.mediaDevices.getUserMedia({audio: true})andnavigator.permissions.query({name: 'microphone'})report denials.The electron facility for denying chrome perms is
session.setPermission(Check|Request)Handlerso it's expected that when all perms are denied,navigator.permissions.query({name: 'microphone'})would return "denied".Actual Behavior
navigator.permissions.query({name: 'microphone'})returns{state: 'granted'}It doesn't actually have this perm as
navigator.mediaDevices.getUserMedia({audio: true})correctly throws "permission denied"To Reproduce
await navigator.permissions.query({name: 'microphone'})in the devtools consoleScreenshots