| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "extensions/common/permissions/usb_device_permission.h" | 5 #include "extensions/common/permissions/usb_device_permission.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 | 21 |
| 22 UsbDevicePermission::UsbDevicePermission( | 22 UsbDevicePermission::UsbDevicePermission( |
| 23 const APIPermissionInfo* info) | 23 const APIPermissionInfo* info) |
| 24 : SetDisjunctionPermission<UsbDevicePermissionData, | 24 : SetDisjunctionPermission<UsbDevicePermissionData, |
| 25 UsbDevicePermission>(info) { | 25 UsbDevicePermission>(info) { |
| 26 } | 26 } |
| 27 | 27 |
| 28 UsbDevicePermission::~UsbDevicePermission() { | 28 UsbDevicePermission::~UsbDevicePermission() { |
| 29 } | 29 } |
| 30 | 30 |
| 31 PermissionIDSet UsbDevicePermission::GetPermissions() const { |
| 32 PermissionMessages messages; |
| 33 PermissionIDSet ids; |
| 34 AddPermissionsToLists(ids, messages); |
| 35 return ids; |
| 36 } |
| 37 |
| 31 PermissionMessages UsbDevicePermission::GetMessages() const { | 38 PermissionMessages UsbDevicePermission::GetMessages() const { |
| 32 DCHECK(HasMessages()); | 39 DCHECK(HasMessages()); |
| 33 PermissionMessages result; | 40 PermissionMessages messages; |
| 41 PermissionIDSet ids; |
| 42 AddPermissionsToLists(ids, messages); |
| 43 return messages; |
| 44 } |
| 34 | 45 |
| 46 void UsbDevicePermission::AddPermissionsToLists( |
| 47 PermissionIDSet& ids, |
| 48 PermissionMessages& messages) const { |
| 49 // TODO(sashab, reillyg): Once the |messages| argument is removed, rework |
| 50 // the permission message logic for USB devices to generate more meaningful |
| 51 // messages and better fit the current rules system. |
| 35 if (data_set_.size() == 1) { | 52 if (data_set_.size() == 1) { |
| 36 const UsbDevicePermissionData& data = *data_set_.begin(); | 53 const UsbDevicePermissionData& data = *data_set_.begin(); |
| 37 | 54 |
| 38 const char* vendor = device::UsbIds::GetVendorName(data.vendor_id()); | 55 const char* vendor = device::UsbIds::GetVendorName(data.vendor_id()); |
| 39 if (vendor) { | 56 if (vendor) { |
| 40 const char* product = | 57 const char* product = |
| 41 device::UsbIds::GetProductName(data.vendor_id(), data.product_id()); | 58 device::UsbIds::GetProductName(data.vendor_id(), data.product_id()); |
| 42 if (product) { | 59 if (product) { |
| 43 result.push_back(PermissionMessage( | 60 base::string16 product_name_and_vendor = l10n_util::GetStringFUTF16( |
| 61 IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_PRODUCT_NAME_AND_VENDOR, |
| 62 base::UTF8ToUTF16(product), base::UTF8ToUTF16(vendor)); |
| 63 |
| 64 messages.push_back(PermissionMessage( |
| 44 PermissionMessage::kUsbDevice, | 65 PermissionMessage::kUsbDevice, |
| 45 l10n_util::GetStringFUTF16(IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE, | 66 l10n_util::GetStringFUTF16(IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE, |
| 46 base::UTF8ToUTF16(product), | 67 product_name_and_vendor))); |
| 47 base::UTF8ToUTF16(vendor)))); | 68 ids.insert(APIPermission::kUsbDevice, product_name_and_vendor); |
| 48 } else { | 69 } else { |
| 49 result.push_back(PermissionMessage( | 70 messages.push_back(PermissionMessage( |
| 50 PermissionMessage::kUsbDevice, | 71 PermissionMessage::kUsbDevice, |
| 51 l10n_util::GetStringFUTF16( | 72 l10n_util::GetStringFUTF16( |
| 52 IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_UNKNOWN_PRODUCT, | 73 IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_UNKNOWN_PRODUCT, |
| 53 base::UTF8ToUTF16(vendor)))); | 74 base::UTF8ToUTF16(vendor)))); |
| 75 ids.insert(APIPermission::kUsbDeviceUnknownProduct, |
| 76 base::UTF8ToUTF16(vendor)); |
| 54 } | 77 } |
| 55 } else { | 78 } else { |
| 56 result.push_back(PermissionMessage( | 79 messages.push_back(PermissionMessage( |
| 57 PermissionMessage::kUsbDevice, | 80 PermissionMessage::kUsbDevice, |
| 58 l10n_util::GetStringUTF16( | 81 l10n_util::GetStringUTF16( |
| 59 IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_UNKNOWN_VENDOR))); | 82 IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_UNKNOWN_VENDOR))); |
| 83 ids.insert(APIPermission::kUsbDeviceUnknownVendor); |
| 60 } | 84 } |
| 61 } else if (data_set_.size() > 1) { | 85 } else if (data_set_.size() > 1) { |
| 62 std::vector<base::string16> details; | 86 std::vector<base::string16> details; |
| 63 std::set<uint16> unknown_product_vendors; | 87 std::set<uint16> unknown_product_vendors; |
| 64 bool found_unknown_vendor = false; | 88 bool found_unknown_vendor = false; |
| 65 | 89 |
| 66 for (const UsbDevicePermissionData& data : data_set_) { | 90 for (const UsbDevicePermissionData& data : data_set_) { |
| 67 const char* vendor = device::UsbIds::GetVendorName(data.vendor_id()); | 91 const char* vendor = device::UsbIds::GetVendorName(data.vendor_id()); |
| 68 if (vendor) { | 92 if (vendor) { |
| 69 const char* product = | 93 const char* product = |
| (...skipping 18 matching lines...) Expand all Loading... |
| 88 IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_LIST_ITEM_UNKNOWN_PRODUCT, | 112 IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_LIST_ITEM_UNKNOWN_PRODUCT, |
| 89 base::UTF8ToUTF16(vendor))); | 113 base::UTF8ToUTF16(vendor))); |
| 90 } | 114 } |
| 91 | 115 |
| 92 // Display the catch all "device from an unknown vendor" last. | 116 // Display the catch all "device from an unknown vendor" last. |
| 93 if (found_unknown_vendor) { | 117 if (found_unknown_vendor) { |
| 94 details.push_back(l10n_util::GetStringUTF16( | 118 details.push_back(l10n_util::GetStringUTF16( |
| 95 IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_LIST_ITEM_UNKNOWN_VENDOR)); | 119 IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_LIST_ITEM_UNKNOWN_VENDOR)); |
| 96 } | 120 } |
| 97 | 121 |
| 98 result.push_back(PermissionMessage( | 122 messages.push_back(PermissionMessage( |
| 99 PermissionMessage::kUsbDevice, | 123 PermissionMessage::kUsbDevice, |
| 100 l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_LIST), | 124 l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_LIST), |
| 101 JoinString(details, base::char16('\n')))); | 125 JoinString(details, base::char16('\n')))); |
| 126 for (const auto& detail : details) |
| 127 ids.insert(APIPermission::kUsbDeviceList, detail); |
| 102 } | 128 } |
| 103 | |
| 104 return result; | |
| 105 } | 129 } |
| 106 | 130 |
| 107 } // namespace extensions | 131 } // namespace extensions |
| OLD | NEW |