diff options
Diffstat (limited to 'chrome/browser/extensions/api/usb/usb_api.cc')
-rw-r--r-- | chrome/browser/extensions/api/usb/usb_api.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/chrome/browser/extensions/api/usb/usb_api.cc b/chrome/browser/extensions/api/usb/usb_api.cc index 9fa26cf..1b2d7b6 100644 --- a/chrome/browser/extensions/api/usb/usb_api.cc +++ b/chrome/browser/extensions/api/usb/usb_api.cc @@ -14,6 +14,7 @@ #include "chrome/browser/usb/usb_service.h" #include "chrome/browser/usb/usb_service_factory.h" #include "chrome/common/extensions/api/usb.h" +#include "chrome/common/extensions/permissions/usb_device_permission.h" namespace BulkTransfer = extensions::api::usb::BulkTransfer; namespace ClaimInterface = extensions::api::usb::ClaimInterface; @@ -68,6 +69,8 @@ static const char* kErrorConvertRecipient = "Invalid transfer recipient."; static const char* kErrorConvertRequestType = "Invalid request type."; static const char* kErrorMalformedParameters = "Error parsing parameters."; static const char* kErrorNoDevice = "No such device."; +static const char* kErrorPermissionDenied = + "Permission to access device was denied"; static UsbDevice* device_for_test_ = NULL; @@ -298,6 +301,15 @@ void UsbFindDevicesFunction::AsyncWorkStart() { return; } + UsbDevicePermission::CheckParam param( + parameters_->vendor_id, parameters_->product_id); + if (!GetExtension()->CheckAPIPermissionWithParam( + APIPermission::kUsbDevice, ¶m)) { + LOG(WARNING) << "Insufficient permissions to access device."; + CompleteWithError(kErrorPermissionDenied); + return; + } + UsbService* const service = UsbServiceFactory::GetInstance()->GetForProfile( profile()); if (!service) { |