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 3 // found in the LICENSE file. 4 5 #ifndef DEVICE_USB_USB_DEVICE_FILTER_H_ 6 #define DEVICE_USB_USB_DEVICE_FILTER_H_ 7 8 #include <vector> 9 10 #include "base/memory/ref_counted.h" 11 12 namespace base { 13 class Value; 14 } 15 16 namespace device { 17 18 class UsbDevice; 19 20 class UsbDeviceFilter { 21 public: 22 UsbDeviceFilter(); 23 ~UsbDeviceFilter(); 24 25 void SetVendorId(uint16 vendor_id); 26 void SetProductId(uint16 product_id); 27 void SetInterfaceClass(uint8 interface_class); 28 void SetInterfaceSubclass(uint8 interface_subclass); 29 void SetInterfaceProtocol(uint8 interface_protocol); 30 31 bool Matches(scoped_refptr<UsbDevice> device) const; 32 base::Value* ToValue() const; 33 34 static bool MatchesAny(scoped_refptr<UsbDevice> device, 35 const std::vector<UsbDeviceFilter>& filters); 36 37 private: 38 uint16 vendor_id_; 39 uint16 product_id_; 40 uint8 interface_class_; 41 uint8 interface_subclass_; 42 uint8 interface_protocol_; 43 bool vendor_id_set_ : 1; 44 bool product_id_set_ : 1; 45 bool interface_class_set_ : 1; 46 bool interface_subclass_set_ : 1; 47 bool interface_protocol_set_ : 1; 48 }; 49 50 } // namespace device 51 52 #endif // DEVICE_USB_USB_DEVICE_FILTER_H_ 53