Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(234)

Unified Diff: extensions/common/permissions/usb_device_permission.cc

Issue 795543002: Added PermissionIDSet to APIPermissions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@permissions_patch_1_static_initializer_fix
Patch Set: Rebase Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/common/permissions/usb_device_permission.h ('k') | extensions/extensions_strings.grd » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 851fbd32599a3ff92507f87ed61bbefd70051d0c..4384b325cc3d3697fbde998130f2e3f62de2c774 100644
--- a/extensions/common/permissions/usb_device_permission.cc
+++ b/extensions/common/permissions/usb_device_permission.cc
@@ -19,59 +19,80 @@
namespace extensions {
-UsbDevicePermission::UsbDevicePermission(
- const APIPermissionInfo* info)
- : SetDisjunctionPermission<UsbDevicePermissionData,
- UsbDevicePermission>(info) {
-}
-
-UsbDevicePermission::~UsbDevicePermission() {
-}
+namespace {
-PermissionMessages UsbDevicePermission::GetMessages() const {
- DCHECK(HasMessages());
- PermissionMessages result;
-
- if (data_set_.size() == 1) {
- const UsbDevicePermissionData& data = *data_set_.begin();
+// Adds the permissions from the |data_set| to the permission lists that are
+// not NULL. If NULL, that list is ignored.
+void AddPermissionsToLists(const std::set<UsbDevicePermissionData>& data_set,
+ PermissionIDSet* ids,
+ PermissionMessages* messages) {
+ // 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();
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) {
- result.push_back(PermissionMessage(
- PermissionMessage::kUsbDevice,
- l10n_util::GetStringFUTF16(IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE,
- base::UTF8ToUTF16(product),
- base::UTF8ToUTF16(vendor))));
+ 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));
+
+ if (messages) {
+ messages->push_back(
+ PermissionMessage(PermissionMessage::kUsbDevice,
+ l10n_util::GetStringFUTF16(
+ IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE,
+ product_name_and_vendor)));
+ }
+ if (ids)
+ ids->insert(APIPermission::kUsbDevice, product_name_and_vendor);
} else {
- result.push_back(PermissionMessage(
- PermissionMessage::kUsbDevice,
- l10n_util::GetStringFUTF16(
- IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_UNKNOWN_PRODUCT,
- base::UTF8ToUTF16(vendor))));
+ if (messages) {
+ messages->push_back(PermissionMessage(
+ PermissionMessage::kUsbDevice,
+ l10n_util::GetStringFUTF16(
+ IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_UNKNOWN_PRODUCT,
+ base::UTF8ToUTF16(vendor))));
+ }
+ if (ids) {
+ ids->insert(APIPermission::kUsbDeviceUnknownProduct,
+ base::UTF8ToUTF16(vendor));
+ }
}
} else {
- result.push_back(PermissionMessage(
- PermissionMessage::kUsbDevice,
- l10n_util::GetStringUTF16(
- IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_UNKNOWN_VENDOR)));
+ if (messages) {
+ messages->push_back(PermissionMessage(
+ PermissionMessage::kUsbDevice,
+ l10n_util::GetStringUTF16(
+ IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_UNKNOWN_VENDOR)));
+ }
+ if (ids) {
+ ids->insert(APIPermission::kUsbDeviceUnknownVendor);
}
- } else if (data_set_.size() > 1) {
+ }
+ } 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_) {
+ 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,
- base::UTF8ToUTF16(product), base::UTF8ToUTF16(vendor)));
+ product_name_and_vendor));
} else {
unknown_product_vendors.insert(data.vendor_id());
}
@@ -95,13 +116,41 @@ PermissionMessages UsbDevicePermission::GetMessages() const {
IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_LIST_ITEM_UNKNOWN_VENDOR));
}
- result.push_back(PermissionMessage(
- PermissionMessage::kUsbDevice,
- l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_LIST),
- JoinString(details, base::char16('\n'))));
+ if (messages) {
+ messages->push_back(
+ PermissionMessage(PermissionMessage::kUsbDevice,
+ l10n_util::GetStringUTF16(
+ IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_LIST),
+ JoinString(details, base::char16('\n'))));
+ }
+ if (ids) {
+ for (const auto& detail : details)
+ ids->insert(APIPermission::kUsbDeviceList, detail);
+ }
}
+}
+
+} // namespace
+
+UsbDevicePermission::UsbDevicePermission(const APIPermissionInfo* info)
+ : SetDisjunctionPermission<UsbDevicePermissionData, UsbDevicePermission>(
+ info) {
+}
- return result;
+UsbDevicePermission::~UsbDevicePermission() {
+}
+
+PermissionIDSet UsbDevicePermission::GetPermissions() const {
+ PermissionIDSet ids;
+ AddPermissionsToLists(data_set_, &ids, NULL);
+ return ids;
+}
+
+PermissionMessages UsbDevicePermission::GetMessages() const {
+ DCHECK(HasMessages());
+ PermissionMessages messages;
+ AddPermissionsToLists(data_set_, NULL, &messages);
+ return messages;
}
} // namespace extensions
« no previous file with comments | « extensions/common/permissions/usb_device_permission.h ('k') | extensions/extensions_strings.grd » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698