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 12namespace base { 13class Value; 14} 15 16namespace device { 17 18class UsbDevice; 19 20class 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