Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(827)

Unified Diff: extensions/common/permissions/usb_device_permission.h

Issue 2418353002: Allow interfaceClass USB device permissions (Closed)
Patch Set: . Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
« no previous file with comments | « extensions/common/features/behavior_feature.cc ('k') | extensions/common/permissions/usb_device_permission.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698