| Index: chrome/browser/usb/usb_chooser_controller.cc
|
| diff --git a/chrome/browser/usb/usb_chooser_controller.cc b/chrome/browser/usb/usb_chooser_controller.cc
|
| index 1e4b0ed9ad461463fdd8307c88ee6d9150d9d292..c5fcfffb9a5cd5eafdafe4f7403585b9597f5080 100644
|
| --- a/chrome/browser/usb/usb_chooser_controller.cc
|
| +++ b/chrome/browser/usb/usb_chooser_controller.cc
|
| @@ -9,6 +9,8 @@
|
|
|
| #include "base/bind.h"
|
| #include "base/command_line.h"
|
| +#include "base/strings/stringprintf.h"
|
| +#include "base/strings/utf_string_conversions.h"
|
| #include "chrome/browser/net/referrer.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/profiles/profile_manager.h"
|
| @@ -27,6 +29,7 @@
|
| #include "device/usb/mojo/type_converters.h"
|
| #include "device/usb/usb_device.h"
|
| #include "device/usb/usb_device_filter.h"
|
| +#include "device/usb/usb_ids.h"
|
| #include "device/usb/webusb_descriptors.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| #include "url/gurl.h"
|
| @@ -40,6 +43,30 @@ Browser* GetBrowser() {
|
| return browser_displayer.browser();
|
| }
|
|
|
| +base::string16 GetDeviceName(scoped_refptr<device::UsbDevice> device) {
|
| + base::string16 device_name = device->product_string();
|
| + if (device_name.empty()) {
|
| + uint16_t vendor_id = device->vendor_id();
|
| + uint16_t product_id = device->product_id();
|
| + if (const char* product_name =
|
| + device::UsbIds::GetProductName(vendor_id, product_id)) {
|
| + device_name = base::UTF8ToUTF16(product_name);
|
| + } else if (const char* vendor_name =
|
| + device::UsbIds::GetVendorName(vendor_id)) {
|
| + device_name = l10n_util::GetStringFUTF16(
|
| + IDS_DEVICE_CHOOSER_DEVICE_NAME_UNKNOWN_DEVICE_WITH_VENDOR_NAME,
|
| + base::UTF8ToUTF16(vendor_name));
|
| + } else {
|
| + device_name = l10n_util::GetStringFUTF16(
|
| + IDS_DEVICE_CHOOSER_DEVICE_NAME_UNKNOWN_DEVICE_WITH_VENDOR_ID_AND_PRODUCT_ID,
|
| + base::ASCIIToUTF16(base::StringPrintf("%04x", vendor_id)),
|
| + base::ASCIIToUTF16(base::StringPrintf("%04x", product_id)));
|
| + }
|
| + }
|
| +
|
| + return device_name;
|
| +}
|
| +
|
| } // namespace
|
|
|
| UsbChooserController::UsbChooserController(
|
| @@ -154,7 +181,7 @@ void UsbChooserController::OpenHelpCenterUrl() const {
|
| void UsbChooserController::OnDeviceAdded(
|
| scoped_refptr<device::UsbDevice> device) {
|
| if (DisplayDevice(device)) {
|
| - const base::string16& device_name = device->product_string();
|
| + base::string16 device_name = GetDeviceName(device);
|
| devices_.push_back(std::make_pair(device, device_name));
|
| ++device_name_map_[device_name];
|
| if (view())
|
| @@ -184,7 +211,7 @@ void UsbChooserController::GotUsbDeviceList(
|
| const std::vector<scoped_refptr<device::UsbDevice>>& devices) {
|
| for (const auto& device : devices) {
|
| if (DisplayDevice(device)) {
|
| - const base::string16& device_name = device->product_string();
|
| + base::string16 device_name = GetDeviceName(device);
|
| devices_.push_back(std::make_pair(device, device_name));
|
| ++device_name_map_[device_name];
|
| }
|
|
|