// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "extensions/common/permissions/usb_device_permission.h" #include <set> #include <string> #include "base/logging.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" #include "extensions/common/permissions/permissions_info.h" #include "grit/extensions_strings.h" #include "ui/base/l10n/l10n_util.h" #if defined(ENABLE_EXTENSIONS) #include "device/usb/usb_ids.h" #endif namespace extensions { UsbDevicePermission::UsbDevicePermission( const APIPermissionInfo* info) : SetDisjunctionPermission<UsbDevicePermissionData, UsbDevicePermission>(info) { } UsbDevicePermission::~UsbDevicePermission() { } PermissionMessages UsbDevicePermission::GetMessages() const { DCHECK(HasMessages()); PermissionMessages result; #if defined(ENABLE_EXTENSIONS) // //device/usb/usb.gyp:device_usb is not available when extensions are // disabled. for (std::set<UsbDevicePermissionData>::const_iterator i = data_set_.begin(); i != data_set_.end(); ++i) { const char* vendor = device::UsbIds::GetVendorName(i->vendor_id()); if (vendor) { const char* product = device::UsbIds::GetProductName(i->vendor_id(), i->product_id()); if (product) { result.push_back(PermissionMessage( PermissionMessage::kUsbDevice, l10n_util::GetStringFUTF16( IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE, base::ASCIIToUTF16(product), base::ASCIIToUTF16(vendor)))); } else { result.push_back(PermissionMessage( PermissionMessage::kUsbDevice, l10n_util::GetStringFUTF16( IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_MISSING_PRODUCT, base::ASCIIToUTF16(vendor)))); } } else { result.push_back(PermissionMessage( PermissionMessage::kUsbDevice, l10n_util::GetStringUTF16( IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_MISSING_VENDOR))); } } #else NOTREACHED(); #endif // defined(ENABLE_EXTENSIONS) return result; } } // namespace extensions