| Index: chrome/browser/devtools/device/usb/android_usb_device.cc
|
| diff --git a/chrome/browser/devtools/device/usb/android_usb_device.cc b/chrome/browser/devtools/device/usb/android_usb_device.cc
|
| index 11150052ddf7806594f071202cd57ad3459c7673..2e8b91d005c46decd85ff2c1fa70dfe2acb3d6d1 100644
|
| --- a/chrome/browser/devtools/device/usb/android_usb_device.cc
|
| +++ b/chrome/browser/devtools/device/usb/android_usb_device.cc
|
| @@ -200,16 +200,17 @@ static void OpenAndroidDeviceOnFileThread(
|
| if (success) {
|
| base::string16 serial;
|
| if (device->GetSerialNumber(&serial) && !serial.empty()) {
|
| - const UsbConfigDescriptor& config = device->GetConfiguration();
|
| - scoped_refptr<UsbDeviceHandle> usb_handle = device->Open();
|
| - if (usb_handle.get()) {
|
| - scoped_refptr<AndroidUsbDevice> android_device =
|
| - ClaimInterface(rsa_key, usb_handle, serial,
|
| - config.interfaces[interface_id]);
|
| - if (android_device.get())
|
| - devices->push_back(android_device.get());
|
| - else
|
| - usb_handle->Close();
|
| + const UsbConfigDescriptor* config = device->GetConfiguration();
|
| + if (config) {
|
| + scoped_refptr<UsbDeviceHandle> usb_handle = device->Open();
|
| + if (usb_handle.get()) {
|
| + scoped_refptr<AndroidUsbDevice> android_device = ClaimInterface(
|
| + rsa_key, usb_handle, serial, config->interfaces[interface_id]);
|
| + if (android_device.get())
|
| + devices->push_back(android_device.get());
|
| + else
|
| + usb_handle->Close();
|
| + }
|
| }
|
| }
|
| }
|
| @@ -223,16 +224,13 @@ static int CountOnFileThread() {
|
| if (service != NULL)
|
| service->GetDevices(&usb_devices);
|
| int device_count = 0;
|
| - for (UsbDevices::iterator deviceIt = usb_devices.begin();
|
| - deviceIt != usb_devices.end();
|
| - ++deviceIt) {
|
| - const UsbConfigDescriptor& config = (*deviceIt)->GetConfiguration();
|
| -
|
| - for (UsbInterfaceDescriptor::Iterator ifaceIt = config.interfaces.begin();
|
| - ifaceIt != config.interfaces.end();
|
| - ++ifaceIt) {
|
| - if (IsAndroidInterface(*ifaceIt)) {
|
| - ++device_count;
|
| + for (const scoped_refptr<UsbDevice>& device : usb_devices) {
|
| + const UsbConfigDescriptor* config = device->GetConfiguration();
|
| + if (config) {
|
| + for (const UsbInterfaceDescriptor& iface : config->interfaces) {
|
| + if (IsAndroidInterface(iface)) {
|
| + ++device_count;
|
| + }
|
| }
|
| }
|
| }
|
| @@ -258,22 +256,24 @@ static void EnumerateOnFileThread(
|
| devices,
|
| caller_message_loop_proxy));
|
|
|
| - for (UsbDevices::iterator it = usb_devices.begin(); it != usb_devices.end();
|
| - ++it) {
|
| - const UsbConfigDescriptor& config = (*it)->GetConfiguration();
|
| -
|
| + for (const scoped_refptr<UsbDevice>& device : usb_devices) {
|
| + const UsbConfigDescriptor* config = device->GetConfiguration();
|
| + if (!config) {
|
| + continue;
|
| + }
|
| bool has_android_interface = false;
|
| - for (size_t j = 0; j < config.interfaces.size(); ++j) {
|
| - if (!IsAndroidInterface(config.interfaces[j])) {
|
| + for (size_t j = 0; j < config->interfaces.size(); ++j) {
|
| + if (!IsAndroidInterface(config->interfaces[j])) {
|
| continue;
|
| }
|
|
|
| // Request permission on Chrome OS.
|
| #if defined(OS_CHROMEOS)
|
| - (*it)->RequestUsbAccess(j, base::Bind(&OpenAndroidDeviceOnFileThread,
|
| - devices, rsa_key, barrier, *it, j));
|
| + device->RequestUsbAccess(
|
| + j, base::Bind(&OpenAndroidDeviceOnFileThread, devices, rsa_key,
|
| + barrier, device, j));
|
| #else
|
| - OpenAndroidDeviceOnFileThread(devices, rsa_key, barrier, *it, j, true);
|
| + OpenAndroidDeviceOnFileThread(devices, rsa_key, barrier, device, j, true);
|
| #endif // defined(OS_CHROMEOS)
|
|
|
| has_android_interface = true;
|
|
|