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

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

Issue 1300353002: Make USB permissions work in the new permission message system (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@kill_permissionmessage
Patch Set: review Created 5 years, 4 months 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/api_permission_set.cc ('k') | tools/metrics/histograms/histograms.xml » ('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 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;
}
« no previous file with comments | « extensions/common/permissions/api_permission_set.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698