Index: chrome/browser/extensions/api/serial/serial_api.cc |
diff --git a/chrome/browser/extensions/api/serial/serial_api.cc b/chrome/browser/extensions/api/serial/serial_api.cc |
index 827ce2b1eefd0817422e1acdc22793605c637ec3..eae97c1ae9ce636bc8f6f58810e2cce6163eecad 100644 |
--- a/chrome/browser/extensions/api/serial/serial_api.cc |
+++ b/chrome/browser/extensions/api/serial/serial_api.cc |
@@ -85,27 +85,11 @@ bool SerialGetDevicesFunction::Prepare() { |
void SerialGetDevicesFunction::Work() { |
DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
- device::SerialDeviceInfoList devices; |
scoped_ptr<device::SerialDeviceEnumerator> enumerator = |
device::SerialDeviceEnumerator::Create(); |
- enumerator->GetDevices(&devices); |
- |
- std::vector<linked_ptr<serial::DeviceInfo> > out_devices; |
- for (device::SerialDeviceInfoList::const_iterator iter = devices.begin(); |
- iter != devices.end(); |
- ++iter) { |
- linked_ptr<device::SerialDeviceInfo> device = *iter; |
- linked_ptr<serial::DeviceInfo> info(new serial::DeviceInfo); |
- info->path = device->path; |
- if (device->vendor_id) |
- info->vendor_id.reset(new int(static_cast<int>(*device->vendor_id))); |
- if (device->product_id) |
- info->product_id.reset(new int(static_cast<int>(*device->product_id))); |
- info->display_name.reset(device->display_name.release()); |
- out_devices.push_back(info); |
- } |
- |
- results_ = serial::GetDevices::Results::Create(out_devices); |
+ mojo::Array<device::SerialDeviceInfoPtr> devices = enumerator->GetDevices(); |
+ results_ = serial::GetDevices::Results::Create( |
+ devices.To<std::vector<linked_ptr<serial::DeviceInfo> > >()); |
} |
SerialConnectFunction::SerialConnectFunction() {} |
@@ -425,3 +409,24 @@ void SerialSetControlSignalsFunction::Work() { |
} // namespace api |
} // namespace extensions |
+ |
+namespace mojo { |
+ |
+// static |
+linked_ptr<extensions::api::serial::DeviceInfo> |
+TypeConverter<device::SerialDeviceInfoPtr, |
+ linked_ptr<extensions::api::serial::DeviceInfo> >:: |
+ ConvertTo(const device::SerialDeviceInfoPtr& device) { |
+ linked_ptr<extensions::api::serial::DeviceInfo> info( |
+ new extensions::api::serial::DeviceInfo); |
+ info->path = device->path; |
+ if (device->has_vendor_id) |
+ info->vendor_id.reset(new int(static_cast<int>(device->vendor_id))); |
+ if (device->has_product_id) |
+ info->product_id.reset(new int(static_cast<int>(device->product_id))); |
+ if (device->display_name) |
+ info->display_name.reset(new std::string(device->display_name)); |
+ return info; |
+} |
+ |
+} // namespace mojo |