| Index: device/usb/mojo/device_impl.cc
|
| diff --git a/device/usb/mojo/device_impl.cc b/device/usb/mojo/device_impl.cc
|
| index 2d8f7c44fdbdcc5dbfec3bbb7f652cd56f14623c..6bbb81bba618600e7f3ce1556e48f15fac811dc9 100644
|
| --- a/device/usb/mojo/device_impl.cc
|
| +++ b/device/usb/mojo/device_impl.cc
|
| @@ -142,40 +142,30 @@ bool DeviceImpl::HasControlTransferPermission(
|
| UsbControlTransferRecipient recipient,
|
| uint16_t index) {
|
| DCHECK(device_handle_);
|
| - const UsbConfigDescriptor* config = device_->active_configuration();
|
|
|
| - if (!permission_provider_)
|
| + if (recipient != UsbControlTransferRecipient::INTERFACE &&
|
| + recipient != UsbControlTransferRecipient::ENDPOINT) {
|
| + return true;
|
| + }
|
| +
|
| + const UsbConfigDescriptor* config = device_->active_configuration();
|
| + if (!config)
|
| return false;
|
|
|
| - if (recipient == UsbControlTransferRecipient::INTERFACE ||
|
| - recipient == UsbControlTransferRecipient::ENDPOINT) {
|
| - if (!config)
|
| - return false;
|
| -
|
| - const UsbInterfaceDescriptor* interface = nullptr;
|
| - if (recipient == UsbControlTransferRecipient::ENDPOINT) {
|
| - interface = device_handle_->FindInterfaceByEndpoint(index & 0xff);
|
| - } else {
|
| - auto interface_it =
|
| - std::find_if(config->interfaces.begin(), config->interfaces.end(),
|
| - [index](const UsbInterfaceDescriptor& this_iface) {
|
| - return this_iface.interface_number == (index & 0xff);
|
| - });
|
| - if (interface_it != config->interfaces.end())
|
| - interface = &*interface_it;
|
| - }
|
| - if (interface == nullptr)
|
| - return false;
|
| -
|
| - return permission_provider_->HasFunctionPermission(
|
| - interface->first_interface, config->configuration_value, device_);
|
| - } else if (config) {
|
| - return permission_provider_->HasConfigurationPermission(
|
| - config->configuration_value, device_);
|
| + const UsbInterfaceDescriptor* interface = nullptr;
|
| + if (recipient == UsbControlTransferRecipient::ENDPOINT) {
|
| + interface = device_handle_->FindInterfaceByEndpoint(index & 0xff);
|
| } else {
|
| - // Client must already have device permission to have gotten this far.
|
| - return true;
|
| + auto interface_it =
|
| + std::find_if(config->interfaces.begin(), config->interfaces.end(),
|
| + [index](const UsbInterfaceDescriptor& this_iface) {
|
| + return this_iface.interface_number == (index & 0xff);
|
| + });
|
| + if (interface_it != config->interfaces.end())
|
| + interface = &*interface_it;
|
| }
|
| +
|
| + return interface != nullptr;
|
| }
|
|
|
| // static
|
| @@ -196,8 +186,7 @@ void DeviceImpl::OnOpen(base::WeakPtr<DeviceImpl> self,
|
|
|
| void DeviceImpl::OnPermissionGrantedForOpen(const OpenCallback& callback,
|
| bool granted) {
|
| - if (granted && permission_provider_ &&
|
| - permission_provider_->HasDevicePermission(device_)) {
|
| + if (granted) {
|
| device_->Open(
|
| base::Bind(&DeviceImpl::OnOpen, weak_factory_.GetWeakPtr(), callback));
|
| } else {
|
| @@ -218,13 +207,8 @@ void DeviceImpl::Open(const OpenCallback& callback) {
|
| return;
|
| }
|
|
|
| - if (permission_provider_ &&
|
| - permission_provider_->HasDevicePermission(device_)) {
|
| - device_->Open(
|
| - base::Bind(&DeviceImpl::OnOpen, weak_factory_.GetWeakPtr(), callback));
|
| - } else {
|
| - callback.Run(mojom::UsbOpenDeviceError::ACCESS_DENIED);
|
| - }
|
| + device_->Open(
|
| + base::Bind(&DeviceImpl::OnOpen, weak_factory_.GetWeakPtr(), callback));
|
| }
|
|
|
| void DeviceImpl::Close(const CloseCallback& callback) {
|
| @@ -239,12 +223,7 @@ void DeviceImpl::SetConfiguration(uint8_t value,
|
| return;
|
| }
|
|
|
| - if (permission_provider_ &&
|
| - permission_provider_->HasConfigurationPermission(value, device_)) {
|
| - device_handle_->SetConfiguration(value, callback);
|
| - } else {
|
| - callback.Run(false);
|
| - }
|
| + device_handle_->SetConfiguration(value, callback);
|
| }
|
|
|
| void DeviceImpl::ClaimInterface(uint8_t interface_number,
|
| @@ -270,14 +249,7 @@ void DeviceImpl::ClaimInterface(uint8_t interface_number,
|
| return;
|
| }
|
|
|
| - if (permission_provider_ &&
|
| - permission_provider_->HasFunctionPermission(interface_it->first_interface,
|
| - config->configuration_value,
|
| - device_)) {
|
| - device_handle_->ClaimInterface(interface_number, callback);
|
| - } else {
|
| - callback.Run(false);
|
| - }
|
| + device_handle_->ClaimInterface(interface_number, callback);
|
| }
|
|
|
| void DeviceImpl::ReleaseInterface(uint8_t interface_number,
|
|
|