| Index: extensions/common/permissions/usb_device_permission.cc
|
| diff --git a/extensions/common/permissions/usb_device_permission.cc b/extensions/common/permissions/usb_device_permission.cc
|
| index bedf6b02cbdc7044f2eae43039dfff5c291b53ab..a79d47f109b46e25759e88a594780795cb547394 100644
|
| --- a/extensions/common/permissions/usb_device_permission.cc
|
| +++ b/extensions/common/permissions/usb_device_permission.cc
|
| @@ -19,19 +19,19 @@
|
|
|
| namespace extensions {
|
|
|
| -namespace {
|
| +UsbDevicePermission::UsbDevicePermission(const APIPermissionInfo* info)
|
| + : SetDisjunctionPermission<UsbDevicePermissionData, UsbDevicePermission>(
|
| + info) {}
|
|
|
| -// Adds the permissions from the |data_set| to |ids|.
|
| -void AddPermissionsToLists(const std::set<UsbDevicePermissionData>& data_set,
|
| - PermissionIDSet* ids) {
|
| - // TODO(sashab): Once GetMessages() is deprecated, move this logic back into
|
| - // GetPermissions().
|
| - // TODO(sashab, reillyg): Once GetMessages() is deprecated, rework the
|
| - // permission message logic for USB devices to generate more meaningful
|
| - // messages and better fit the current rules system.
|
| - if (data_set.size() == 1) {
|
| - const UsbDevicePermissionData& data = *data_set.begin();
|
| +UsbDevicePermission::~UsbDevicePermission() {}
|
|
|
| +PermissionIDSet UsbDevicePermission::GetPermissions() const {
|
| + PermissionIDSet ids;
|
| +
|
| + std::set<uint16> unknown_product_vendors;
|
| + bool found_unknown_vendor = false;
|
| +
|
| + for (const UsbDevicePermissionData& data : data_set_) {
|
| const char* vendor = device::UsbIds::GetVendorName(data.vendor_id());
|
| if (vendor) {
|
| const char* product =
|
| @@ -40,73 +40,25 @@ void AddPermissionsToLists(const std::set<UsbDevicePermissionData>& data_set,
|
| base::string16 product_name_and_vendor = l10n_util::GetStringFUTF16(
|
| IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_PRODUCT_NAME_AND_VENDOR,
|
| base::UTF8ToUTF16(product), base::UTF8ToUTF16(vendor));
|
| -
|
| - ids->insert(APIPermission::kUsbDevice, product_name_and_vendor);
|
| + ids.insert(APIPermission::kUsbDevice, product_name_and_vendor);
|
| } else {
|
| - ids->insert(APIPermission::kUsbDeviceUnknownProduct,
|
| - base::UTF8ToUTF16(vendor));
|
| + unknown_product_vendors.insert(data.vendor_id());
|
| }
|
| } else {
|
| - ids->insert(APIPermission::kUsbDeviceUnknownVendor);
|
| - }
|
| - } else if (data_set.size() > 1) {
|
| - std::vector<base::string16> details;
|
| - std::set<uint16> unknown_product_vendors;
|
| - bool found_unknown_vendor = false;
|
| -
|
| - for (const UsbDevicePermissionData& data : data_set) {
|
| - const char* vendor = device::UsbIds::GetVendorName(data.vendor_id());
|
| - if (vendor) {
|
| - const char* product =
|
| - device::UsbIds::GetProductName(data.vendor_id(), data.product_id());
|
| - if (product) {
|
| - base::string16 product_name_and_vendor = l10n_util::GetStringFUTF16(
|
| - IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_PRODUCT_NAME_AND_VENDOR,
|
| - base::UTF8ToUTF16(product), base::UTF8ToUTF16(vendor));
|
| - details.push_back(l10n_util::GetStringFUTF16(
|
| - IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_LIST_ITEM,
|
| - product_name_and_vendor));
|
| - } else {
|
| - unknown_product_vendors.insert(data.vendor_id());
|
| - }
|
| - } else {
|
| - found_unknown_vendor = true;
|
| - }
|
| - }
|
| -
|
| - // List generic "devices from this vendor" entries after specific devices.
|
| - for (const uint16& vendor_id : unknown_product_vendors) {
|
| - const char* vendor = device::UsbIds::GetVendorName(vendor_id);
|
| - DCHECK(vendor);
|
| - details.push_back(l10n_util::GetStringFUTF16(
|
| - IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_LIST_ITEM_UNKNOWN_PRODUCT,
|
| - base::UTF8ToUTF16(vendor)));
|
| + found_unknown_vendor = true;
|
| }
|
| -
|
| - // Display the catch all "device from an unknown vendor" last.
|
| - if (found_unknown_vendor) {
|
| - details.push_back(l10n_util::GetStringUTF16(
|
| - IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_LIST_ITEM_UNKNOWN_VENDOR));
|
| - }
|
| -
|
| - for (const auto& detail : details)
|
| - ids->insert(APIPermission::kUsbDeviceList, detail);
|
| }
|
| -}
|
| -
|
| -} // namespace
|
|
|
| -UsbDevicePermission::UsbDevicePermission(const APIPermissionInfo* info)
|
| - : SetDisjunctionPermission<UsbDevicePermissionData, UsbDevicePermission>(
|
| - info) {
|
| -}
|
| + for (uint16 vendor_id : unknown_product_vendors) {
|
| + const char* vendor = device::UsbIds::GetVendorName(vendor_id);
|
| + DCHECK(vendor);
|
| + ids.insert(APIPermission::kUsbDeviceUnknownProduct,
|
| + base::UTF8ToUTF16(vendor));
|
| + }
|
|
|
| -UsbDevicePermission::~UsbDevicePermission() {
|
| -}
|
| + if (found_unknown_vendor)
|
| + ids.insert(APIPermission::kUsbDeviceUnknownVendor);
|
|
|
| -PermissionIDSet UsbDevicePermission::GetPermissions() const {
|
| - PermissionIDSet ids;
|
| - AddPermissionsToLists(data_set_, &ids);
|
| return ids;
|
| }
|
|
|
|
|