summaryrefslogtreecommitdiffstats
path: root/chrome/common/extensions/permissions/usb_device_permission.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/common/extensions/permissions/usb_device_permission.cc')
-rw-r--r--chrome/common/extensions/permissions/usb_device_permission.cc66
1 files changed, 66 insertions, 0 deletions
diff --git a/chrome/common/extensions/permissions/usb_device_permission.cc b/chrome/common/extensions/permissions/usb_device_permission.cc
new file mode 100644
index 0000000..cc13b93
--- /dev/null
+++ b/chrome/common/extensions/permissions/usb_device_permission.cc
@@ -0,0 +1,66 @@
+// Copyright (c) 2012 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 "chrome/common/extensions/permissions/usb_device_permission.h"
+
+#include <set>
+#include <string>
+
+#include "base/logging.h"
+#include "base/string16.h"
+#include "base/utf_string_conversions.h"
+#include "chrome/common/extensions/permissions/permissions_info.h"
+#include "device/usb/usb_ids.h"
+#include "grit/generated_resources.h"
+#include "ui/base/l10n/l10n_util.h"
+
+namespace extensions {
+
+UsbDevicePermission::UsbDevicePermission(
+ const APIPermissionInfo* info)
+ : SetDisjunctionPermission<UsbDevicePermissionData,
+ UsbDevicePermission>(info) {
+}
+
+UsbDevicePermission::~UsbDevicePermission() {
+}
+
+PermissionMessages UsbDevicePermission::GetMessages() const {
+ DCHECK(HasMessages());
+ PermissionMessages result;
+
+ for (std::set<UsbDevicePermissionData>::const_iterator i =
+ data_set_.begin(); i != data_set_.end(); ++i) {
+
+ const char* vendor = device::UsbIds::GetVendorName(i->vendor_id());
+ string16 vendor_name;
+ if (vendor) {
+ vendor_name = ASCIIToUTF16(vendor);
+ } else {
+ vendor_name = l10n_util::GetStringUTF16(
+ IDS_EXTENSION_PROMPT_WARNING_UNKNOWN_USB_VENDOR);
+ }
+
+ const char* product =
+ device::UsbIds::GetProductName(i->vendor_id(), i->product_id());
+ string16 product_name;
+ if (product) {
+ product_name = ASCIIToUTF16(product);
+ } else {
+ product_name = l10n_util::GetStringUTF16(
+ IDS_EXTENSION_PROMPT_WARNING_UNKNOWN_USB_PRODUCT);
+ }
+
+ result.push_back(PermissionMessage(
+ PermissionMessage::kUsbDevice,
+ l10n_util::GetStringFUTF16(
+ IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE,
+ product_name,
+ vendor_name)));
+ }
+
+ return result;
+}
+
+} // namespace extensions