Index: device/usb/webusb_descriptors.cc |
diff --git a/device/usb/webusb_descriptors.cc b/device/usb/webusb_descriptors.cc |
index 57468182278ebb3d1bbf7c554698a97db1b8780d..1bc243d114e573cc0190c7ebfa07aa42f7ed6a40 100644 |
--- a/device/usb/webusb_descriptors.cc |
+++ b/device/usb/webusb_descriptors.cc |
@@ -576,7 +576,9 @@ void ReadWebUsbDescriptors(scoped_refptr<UsbDeviceHandle> device_handle, |
bool FindInWebUsbAllowedOrigins( |
const device::WebUsbAllowedOrigins* allowed_origins, |
- const GURL& origin) { |
+ const GURL& origin, |
+ base::Optional<uint8_t> config_value, |
+ base::Optional<uint8_t> first_interface) { |
if (!allowed_origins) |
return false; |
@@ -584,10 +586,16 @@ bool FindInWebUsbAllowedOrigins( |
return true; |
for (const auto& config : allowed_origins->configurations) { |
+ if (config_value && *config_value != config.configuration_value) |
+ continue; |
+ |
if (base::ContainsValue(config.origins, origin)) |
return true; |
for (const auto& function : config.functions) { |
+ if (first_interface && *first_interface != function.first_interface) |
+ continue; |
+ |
if (base::ContainsValue(function.origins, origin)) |
return true; |
} |