Skip to content

Commit

Permalink
fix: crash on navigator.serial.getPorts()
Browse files Browse the repository at this point in the history
  • Loading branch information
jkleinsc committed May 19, 2022
1 parent 455544d commit fb308b3
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 5 deletions.
15 changes: 11 additions & 4 deletions shell/browser/electron_permission_manager.cc
Expand Up @@ -339,18 +339,25 @@ bool ElectronPermissionManager::CheckDevicePermission(
granted_device.FindStringKey(kDeviceInstanceIdKey))
return true;
#else
const auto* serial_number =
granted_device.FindStringKey(kSerialNumberKey);
const auto* port_serial_number =
device->FindStringKey(kSerialNumberKey);
if (device->FindIntKey(kVendorIdKey) !=
granted_device.FindIntKey(kVendorIdKey) ||
device->FindIntKey(kProductIdKey) !=
granted_device.FindIntKey(kProductIdKey) ||
*device->FindStringKey(kSerialNumberKey) !=
*granted_device.FindStringKey(kSerialNumberKey)) {
(serial_number && port_serial_number &&
*port_serial_number != *serial_number)) {
continue;
}

#if BUILDFLAG(IS_MAC)
if (*device->FindStringKey(kUsbDriverKey) !=
*granted_device.FindStringKey(kUsbDriverKey)) {
const auto* usb_driver_key = device->FindStringKey(kUsbDriverKey);
const auto* port_usb_driver_key =
granted_device.FindStringKey(kUsbDriverKey);
if (usb_driver_key && port_usb_driver_key &&
*usb_driver_key != *port_usb_driver_key) {
continue;
}
#endif // BUILDFLAG(IS_MAC)
Expand Down
19 changes: 18 additions & 1 deletion spec-main/chromium-spec.ts
Expand Up @@ -1684,6 +1684,24 @@ describe('navigator.serial', () => {
const port = await getPorts();
expect(port).to.equal('[object SerialPort]');
});

it('navigator.serial.getPorts() returns values', async () => {
let havePorts = false;

w.webContents.session.on('select-serial-port', (event, portList, webContents, callback) => {
if (portList.length > 0) {
havePorts = true;
callback(portList[0].portId);
} else {
callback('');
}
});
await getPorts();
if (havePorts) {
const grantedPorts = await w.webContents.executeJavaScript('navigator.serial.getPorts()');
expect(grantedPorts).to.not.be.empty();
}
});
});

describe('navigator.clipboard', () => {
Expand Down Expand Up @@ -2005,7 +2023,6 @@ describe('navigator.hid', () => {
if (details.deviceList.length > 0) {
details.deviceList.find((device) => {
if (device.name && device.name !== '' && device.serialNumber && device.serialNumber !== '') {
console.log('device is: ', device);
if (checkForExcludedDevice) {
const compareDevice = {
vendorId: device.vendorId,
Expand Down

0 comments on commit fb308b3

Please sign in to comment.