| Index: device/usb/usb_device_filter.cc
 | 
| diff --git a/device/usb/usb_device_filter.cc b/device/usb/usb_device_filter.cc
 | 
| index 6230aab89cbbcd5117dfcd8f949f688c17a72f6d..2b705860c305bd66904522e73ffd851299a5e579 100644
 | 
| --- a/device/usb/usb_device_filter.cc
 | 
| +++ b/device/usb/usb_device_filter.cc
 | 
| @@ -7,6 +7,7 @@
 | 
|  #include <memory>
 | 
|  #include <utility>
 | 
|  
 | 
| +#include "base/memory/ptr_util.h"
 | 
|  #include "base/values.h"
 | 
|  #include "device/usb/usb_descriptors.h"
 | 
|  #include "device/usb/usb_device.h"
 | 
| @@ -23,63 +24,29 @@ const char kInterfaceProtocolKey[] = "interfaceProtocol";
 | 
|  
 | 
|  }  // namespace
 | 
|  
 | 
| -UsbDeviceFilter::UsbDeviceFilter()
 | 
| -    : vendor_id_set_(false),
 | 
| -      product_id_set_(false),
 | 
| -      interface_class_set_(false),
 | 
| -      interface_subclass_set_(false),
 | 
| -      interface_protocol_set_(false) {
 | 
| -}
 | 
| +UsbDeviceFilter::UsbDeviceFilter() = default;
 | 
|  
 | 
|  UsbDeviceFilter::UsbDeviceFilter(const UsbDeviceFilter& other) = default;
 | 
|  
 | 
| -UsbDeviceFilter::~UsbDeviceFilter() {
 | 
| -}
 | 
| -
 | 
| -void UsbDeviceFilter::SetVendorId(uint16_t vendor_id) {
 | 
| -  vendor_id_set_ = true;
 | 
| -  vendor_id_ = vendor_id;
 | 
| -}
 | 
| -
 | 
| -void UsbDeviceFilter::SetProductId(uint16_t product_id) {
 | 
| -  product_id_set_ = true;
 | 
| -  product_id_ = product_id;
 | 
| -}
 | 
| -
 | 
| -void UsbDeviceFilter::SetInterfaceClass(uint8_t interface_class) {
 | 
| -  interface_class_set_ = true;
 | 
| -  interface_class_ = interface_class;
 | 
| -}
 | 
| -
 | 
| -void UsbDeviceFilter::SetInterfaceSubclass(uint8_t interface_subclass) {
 | 
| -  interface_subclass_set_ = true;
 | 
| -  interface_subclass_ = interface_subclass;
 | 
| -}
 | 
| -
 | 
| -void UsbDeviceFilter::SetInterfaceProtocol(uint8_t interface_protocol) {
 | 
| -  interface_protocol_set_ = true;
 | 
| -  interface_protocol_ = interface_protocol;
 | 
| -}
 | 
| +UsbDeviceFilter::~UsbDeviceFilter() = default;
 | 
|  
 | 
|  bool UsbDeviceFilter::Matches(scoped_refptr<UsbDevice> device) const {
 | 
| -  if (vendor_id_set_) {
 | 
| -    if (device->vendor_id() != vendor_id_) {
 | 
| +  if (vendor_id) {
 | 
| +    if (device->vendor_id() != *vendor_id)
 | 
|        return false;
 | 
| -    }
 | 
|  
 | 
| -    if (product_id_set_ && device->product_id() != product_id_) {
 | 
| +    if (product_id && device->product_id() != *product_id)
 | 
|        return false;
 | 
| -    }
 | 
|    }
 | 
|  
 | 
| -  if (interface_class_set_) {
 | 
| +  if (interface_class) {
 | 
|      for (const UsbConfigDescriptor& config : device->configurations()) {
 | 
|        for (const UsbInterfaceDescriptor& iface : config.interfaces) {
 | 
| -        if (iface.interface_class == interface_class_ &&
 | 
| -            (!interface_subclass_set_ ||
 | 
| -             (iface.interface_subclass == interface_subclass_ &&
 | 
| -              (!interface_protocol_set_ ||
 | 
| -               iface.interface_protocol == interface_protocol_)))) {
 | 
| +        if (iface.interface_class == *interface_class &&
 | 
| +            (!interface_subclass ||
 | 
| +             (iface.interface_subclass == *interface_subclass &&
 | 
| +              (!interface_protocol ||
 | 
| +               iface.interface_protocol == *interface_protocol)))) {
 | 
|            return true;
 | 
|          }
 | 
|        }
 | 
| @@ -92,22 +59,20 @@ bool UsbDeviceFilter::Matches(scoped_refptr<UsbDevice> device) const {
 | 
|  }
 | 
|  
 | 
|  std::unique_ptr<base::Value> UsbDeviceFilter::ToValue() const {
 | 
| -  std::unique_ptr<base::DictionaryValue> obj(new base::DictionaryValue());
 | 
| +  auto obj = base::MakeUnique<base::DictionaryValue>();
 | 
|  
 | 
| -  if (vendor_id_set_) {
 | 
| -    obj->SetInteger(kVendorIdKey, vendor_id_);
 | 
| -    if (product_id_set_) {
 | 
| -      obj->SetInteger(kProductIdKey, product_id_);
 | 
| -    }
 | 
| +  if (vendor_id) {
 | 
| +    obj->SetInteger(kVendorIdKey, *vendor_id);
 | 
| +    if (product_id)
 | 
| +      obj->SetInteger(kProductIdKey, *product_id);
 | 
|    }
 | 
|  
 | 
| -  if (interface_class_set_) {
 | 
| -    obj->SetInteger(kInterfaceClassKey, interface_class_);
 | 
| -    if (interface_subclass_set_) {
 | 
| -      obj->SetInteger(kInterfaceSubclassKey, interface_subclass_);
 | 
| -      if (interface_protocol_set_) {
 | 
| -        obj->SetInteger(kInterfaceProtocolKey, interface_protocol_);
 | 
| -      }
 | 
| +  if (interface_class) {
 | 
| +    obj->SetInteger(kInterfaceClassKey, *interface_class);
 | 
| +    if (interface_subclass) {
 | 
| +      obj->SetInteger(kInterfaceSubclassKey, *interface_subclass);
 | 
| +      if (interface_protocol)
 | 
| +        obj->SetInteger(kInterfaceProtocolKey, *interface_protocol);
 | 
|      }
 | 
|    }
 | 
|  
 | 
| @@ -120,12 +85,9 @@ bool UsbDeviceFilter::MatchesAny(scoped_refptr<UsbDevice> device,
 | 
|    if (filters.empty())
 | 
|      return true;
 | 
|  
 | 
| -  for (std::vector<UsbDeviceFilter>::const_iterator i = filters.begin();
 | 
| -       i != filters.end();
 | 
| -       ++i) {
 | 
| -    if (i->Matches(device)) {
 | 
| +  for (const auto& filter : filters) {
 | 
| +    if (filter.Matches(device))
 | 
|        return true;
 | 
| -    }
 | 
|    }
 | 
|    return false;
 | 
|  }
 | 
| 
 |