diff --git a/shell/browser/electron_permission_manager.cc b/shell/browser/electron_permission_manager.cc index 6970369b80432..5e37cfb92b68a 100644 --- a/shell/browser/electron_permission_manager.cc +++ b/shell/browser/electron_permission_manager.cc @@ -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) diff --git a/spec-main/chromium-spec.ts b/spec-main/chromium-spec.ts index ca93d5e0954bd..244b5b5e5ecd0 100644 --- a/spec-main/chromium-spec.ts +++ b/spec-main/chromium-spec.ts @@ -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', () => { @@ -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,