| Index: chrome/browser/usb/usb_service.cc
|
| diff --git a/chrome/browser/usb/usb_service.cc b/chrome/browser/usb/usb_service.cc
|
| index 4425d9b4b728bef2a60a47d31e0f7cc1d00b9252..3501c05b2d37f0106fce1ba05e609284679ea315 100644
|
| --- a/chrome/browser/usb/usb_service.cc
|
| +++ b/chrome/browser/usb/usb_service.cc
|
| @@ -64,7 +64,8 @@ class ExitObserver : public content::NotificationObserver {
|
| using content::BrowserThread;
|
|
|
| UsbService::UsbService()
|
| - : context_(new UsbContext()) {
|
| + : context_(new UsbContext()),
|
| + next_unique_id_(0) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
| }
|
|
|
| @@ -167,7 +168,7 @@ void UsbService::FindDevicesImpl(
|
| RefreshDevices();
|
|
|
| for (DeviceMap::iterator it = devices_.begin();
|
| - it != devices_.end(); ++it) {
|
| + it != devices_.end(); ++it) {
|
| if (DeviceMatches(it->second, vendor_id, product_id))
|
| devices->push_back(it->second);
|
| }
|
| @@ -175,6 +176,16 @@ void UsbService::FindDevicesImpl(
|
| callback.Run(devices.Pass());
|
| }
|
|
|
| +scoped_refptr<UsbDevice> UsbService::GetDeviceById(uint32 unique_id) {
|
| + RefreshDevices();
|
| + for (DeviceMap::iterator it = devices_.begin();
|
| + it != devices_.end(); ++it) {
|
| + if (it->second->unique_id() == unique_id)
|
| + return it->second;
|
| + }
|
| + return NULL;
|
| +}
|
| +
|
| void UsbService::RefreshDevices() {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
|
|
| @@ -193,9 +204,10 @@ void UsbService::RefreshDevices() {
|
| if (0 != libusb_get_device_descriptor(platform_devices[i], &descriptor))
|
| continue;
|
| UsbDevice* new_device = new UsbDevice(context_,
|
| - platform_devices[i],
|
| - descriptor.idVendor,
|
| - descriptor.idProduct);
|
| + platform_devices[i],
|
| + descriptor.idVendor,
|
| + descriptor.idProduct,
|
| + ++next_unique_id_);
|
| devices_[platform_devices[i]] = new_device;
|
| connected_devices.insert(new_device);
|
| } else {
|
|
|