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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef EXTENSIONS_COMMON_PERMISSIONS_USB_DEVICE_PERMISSION_H_ 5 #ifndef EXTENSIONS_COMMON_PERMISSIONS_USB_DEVICE_PERMISSION_H_
6 #define EXTENSIONS_COMMON_PERMISSIONS_USB_DEVICE_PERMISSION_H_ 6 #define EXTENSIONS_COMMON_PERMISSIONS_USB_DEVICE_PERMISSION_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory>
11 #include <set>
12
10 #include "extensions/common/permissions/api_permission.h" 13 #include "extensions/common/permissions/api_permission.h"
11 #include "extensions/common/permissions/set_disjunction_permission.h" 14 #include "extensions/common/permissions/set_disjunction_permission.h"
12 #include "extensions/common/permissions/usb_device_permission_data.h" 15 #include "extensions/common/permissions/usb_device_permission_data.h"
13 16
14 namespace extensions { 17 namespace extensions {
15 18
19 class Extension;
20
16 class UsbDevicePermission 21 class UsbDevicePermission
17 : public SetDisjunctionPermission<UsbDevicePermissionData, 22 : public SetDisjunctionPermission<UsbDevicePermissionData,
18 UsbDevicePermission> { 23 UsbDevicePermission> {
19 public: 24 public:
20 struct CheckParam : public APIPermission::CheckParam { 25 struct CheckParam : public APIPermission::CheckParam {
21 CheckParam(uint16_t vendor_id, uint16_t product_id, int interface_id) 26 static std::unique_ptr<CheckParam> ForUsbDevice(
22 : vendor_id(vendor_id), 27 const Extension* extension,
23 product_id(product_id), 28 const device::UsbDevice* device);
24 interface_id(interface_id) {} 29 static std::unique_ptr<CheckParam> ForDeviceWithAnyInterfaceClass(
30 const Extension* extension,
31 uint16_t vendor_id,
32 uint16_t product_id,
33 int interface_id);
34 static std::unique_ptr<CheckParam> ForUsbDeviceAndInterface(
35 const Extension* extension,
36 const device::UsbDevice* device,
37 int interface_id);
38 static std::unique_ptr<CheckParam> ForHidDevice(const Extension* extension,
39 uint16_t vendor_id,
40 uint16_t product_id);
41
42 CheckParam(const Extension* extesnion,
43 uint16_t vendor_id,
44 uint16_t product_id,
45 std::unique_ptr<std::set<int>> interface_classes,
46 int interface_id);
47 ~CheckParam();
48
25 const uint16_t vendor_id; 49 const uint16_t vendor_id;
26 const uint16_t product_id; 50 const uint16_t product_id;
51 const std::unique_ptr<std::set<int>> interface_classes;
27 const int interface_id; 52 const int interface_id;
53 const bool interface_class_allowed;
54
55 private:
56 DISALLOW_COPY_AND_ASSIGN(CheckParam);
28 }; 57 };
29 58
30 explicit UsbDevicePermission(const APIPermissionInfo* info); 59 explicit UsbDevicePermission(const APIPermissionInfo* info);
31 ~UsbDevicePermission() override; 60 ~UsbDevicePermission() override;
32 61
33 // SetDisjunctionPermission overrides. 62 // SetDisjunctionPermission overrides.
34 bool FromValue(const base::Value* value, 63 bool FromValue(const base::Value* value,
35 std::string* error, 64 std::string* error,
36 std::vector<std::string>* unhandled_permissions) override; 65 std::vector<std::string>* unhandled_permissions) override;
37 66
38 // APIPermission overrides 67 // APIPermission overrides
39 PermissionIDSet GetPermissions() const override; 68 PermissionIDSet GetPermissions() const override;
40 }; 69 };
41 70
42 } // namespace extensions 71 } // namespace extensions
43 72
44 #endif // EXTENSIONS_COMMON_PERMISSIONS_USB_DEVICE_PERMISSION_H_ 73 #endif // EXTENSIONS_COMMON_PERMISSIONS_USB_DEVICE_PERMISSION_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698