OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 #ifndef CHROME_COMMON_EXTENSIONS_PERMISSIONS_USB_DEVICE_PERMISSION_DATA_H_ | |
5 #define CHROME_COMMON_EXTENSIONS_PERMISSIONS_USB_DEVICE_PERMISSION_DATA_H_ | |
6 | |
7 #include <string> | |
8 | |
9 #include "base/basictypes.h" | |
10 #include "base/memory/scoped_ptr.h" | |
11 #include "extensions/common/permissions/api_permission.h" | |
12 | |
13 namespace base { | |
14 | |
15 class Value; | |
16 | |
17 } // namespace base | |
18 | |
19 namespace extensions { | |
20 | |
21 // A pattern that can be used to match a USB device permission. | |
22 // Should be of the format: vendorId:productId, where both vendorId and | |
23 // productId are decimal strings representing uint16 values. | |
24 class UsbDevicePermissionData { | |
25 public: | |
26 enum SpecialInterfaces { | |
27 // A special interface id for stating permissions for an entire USB device, | |
28 // no specific interface. This value must match value of Rule::ANY_INTERFACE | |
29 // from ChromeOS permission_broker project. | |
30 ANY_INTERFACE = -1, | |
31 | |
32 // A special interface id for |Check| to indicate that interface field is | |
33 // not to be checked. Not used in manifest file. | |
34 UNSPECIFIED_INTERFACE = -2 | |
35 }; | |
36 | |
37 UsbDevicePermissionData(); | |
38 UsbDevicePermissionData(uint16 vendor_id, | |
39 uint16 product_id, | |
40 int interface_id); | |
41 | |
42 // Check if |param| (which must be a UsbDevicePermissionData::CheckParam) | |
43 // matches the vendor and product IDs associated with |this|. | |
44 bool Check(const APIPermission::CheckParam* param) const; | |
45 | |
46 // Convert |this| into a base::Value. | |
47 scoped_ptr<base::Value> ToValue() const; | |
48 | |
49 // Populate |this| from a base::Value. | |
50 bool FromValue(const base::Value* value); | |
51 | |
52 bool operator<(const UsbDevicePermissionData& rhs) const; | |
53 bool operator==(const UsbDevicePermissionData& rhs) const; | |
54 | |
55 const uint16& vendor_id() const { return vendor_id_; } | |
56 const uint16& product_id() const { return product_id_; } | |
57 | |
58 // These accessors are provided for IPC_STRUCT_TRAITS_MEMBER. Please | |
59 // think twice before using them for anything else. | |
60 uint16& vendor_id() { return vendor_id_; } | |
61 uint16& product_id() { return product_id_; } | |
62 | |
63 private: | |
64 uint16 vendor_id_; | |
65 uint16 product_id_; | |
66 int interface_id_; | |
67 }; | |
68 | |
69 } // namespace extensions | |
70 | |
71 #endif // CHROME_COMMON_EXTENSIONS_PERMISSIONS_USB_DEVICE_PERMISSION_DATA_H_ | |
OLD | NEW |