| Index: extensions/common/permissions/usb_device_permission.h
|
| diff --git a/extensions/common/permissions/usb_device_permission.h b/extensions/common/permissions/usb_device_permission.h
|
| index 2658011861d09082a6bd3d98cce80dfc55655aea..77bc08b40b79dc2e6e0b9b5cbe78db2d45e3b53f 100644
|
| --- a/extensions/common/permissions/usb_device_permission.h
|
| +++ b/extensions/common/permissions/usb_device_permission.h
|
| @@ -7,24 +7,66 @@
|
|
|
| #include <stdint.h>
|
|
|
| +#include <memory>
|
| +#include <set>
|
| +
|
| #include "extensions/common/permissions/api_permission.h"
|
| #include "extensions/common/permissions/set_disjunction_permission.h"
|
| #include "extensions/common/permissions/usb_device_permission_data.h"
|
|
|
| namespace extensions {
|
|
|
| +class Extension;
|
| +
|
| class UsbDevicePermission
|
| : public SetDisjunctionPermission<UsbDevicePermissionData,
|
| UsbDevicePermission> {
|
| public:
|
| struct CheckParam : public APIPermission::CheckParam {
|
| - CheckParam(uint16_t vendor_id, uint16_t product_id, int interface_id)
|
| - : vendor_id(vendor_id),
|
| - product_id(product_id),
|
| - interface_id(interface_id) {}
|
| + static std::unique_ptr<CheckParam> ForUsbDevice(
|
| + const Extension* extension,
|
| + const device::UsbDevice* device);
|
| + // Creates check param that only checks vendor, product and interface ID
|
| + // permission properties. It will accept all interfaceClass properties. For
|
| + // example, created param would always accept {"intefaceClass": 3}
|
| + // permission, and it would accept {"vendorId": 2, "interfaceClass": 4} iff
|
| + // |vendor_id| is 2.
|
| + // Created check param failing means there are no permissions allowing
|
| + // access to the USB device. On the other hand, created check param passing
|
| + // does not necessarily mean there is a permission allowing access to the
|
| + // USB device - one should recheck the permission when complete USB device
|
| + // info is known.
|
| + // This is useful when trying to discard devices that do not match any
|
| + // usbDevice permission when complete USB device info is not known, without
|
| + // having to fetch available USB devices.
|
| + static std::unique_ptr<CheckParam> ForDeviceWithAnyInterfaceClass(
|
| + const Extension* extension,
|
| + uint16_t vendor_id,
|
| + uint16_t product_id,
|
| + int interface_id);
|
| + static std::unique_ptr<CheckParam> ForUsbDeviceAndInterface(
|
| + const Extension* extension,
|
| + const device::UsbDevice* device,
|
| + int interface_id);
|
| + static std::unique_ptr<CheckParam> ForHidDevice(const Extension* extension,
|
| + uint16_t vendor_id,
|
| + uint16_t product_id);
|
| +
|
| + CheckParam(const Extension* extension,
|
| + uint16_t vendor_id,
|
| + uint16_t product_id,
|
| + std::unique_ptr<std::set<int>> interface_classes,
|
| + int interface_id);
|
| + ~CheckParam();
|
| +
|
| const uint16_t vendor_id;
|
| const uint16_t product_id;
|
| + const std::unique_ptr<std::set<int>> interface_classes;
|
| const int interface_id;
|
| + const bool interface_class_allowed;
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(CheckParam);
|
| };
|
|
|
| explicit UsbDevicePermission(const APIPermissionInfo* info);
|
|
|