Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / extensions / common / permissions / usb_device_permission.cc
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
3 // found in the LICENSE file.
4
5 #include "extensions/common/permissions/usb_device_permission.h"
6
7 #include <set>
8 #include <string>
9
10 #include "base/logging.h"
11 #include "base/strings/string16.h"
12 #include "base/strings/utf_string_conversions.h"
13 #include "device/usb/usb_ids.h"
14 #include "extensions/common/permissions/permissions_info.h"
15 #include "grit/extensions_strings.h"
16 #include "ui/base/l10n/l10n_util.h"
17
18 namespace extensions {
19
20 UsbDevicePermission::UsbDevicePermission(
21     const APIPermissionInfo* info)
22   : SetDisjunctionPermission<UsbDevicePermissionData,
23                              UsbDevicePermission>(info) {
24 }
25
26 UsbDevicePermission::~UsbDevicePermission() {
27 }
28
29 PermissionMessages UsbDevicePermission::GetMessages() const {
30   DCHECK(HasMessages());
31   PermissionMessages result;
32
33   // //device/usb/usb.gyp:device_usb is not available when extensions are
34   // disabled.
35   for (std::set<UsbDevicePermissionData>::const_iterator i =
36       data_set_.begin(); i != data_set_.end(); ++i) {
37     const char* vendor = device::UsbIds::GetVendorName(i->vendor_id());
38
39     if (vendor) {
40       const char* product =
41           device::UsbIds::GetProductName(i->vendor_id(), i->product_id());
42       if (product) {
43         result.push_back(PermissionMessage(
44             PermissionMessage::kUsbDevice,
45             l10n_util::GetStringFUTF16(
46                 IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE,
47                 base::ASCIIToUTF16(product),
48                 base::ASCIIToUTF16(vendor))));
49       } else {
50         result.push_back(PermissionMessage(
51             PermissionMessage::kUsbDevice,
52             l10n_util::GetStringFUTF16(
53                 IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_MISSING_PRODUCT,
54                 base::ASCIIToUTF16(vendor))));
55       }
56     } else {
57       result.push_back(PermissionMessage(
58           PermissionMessage::kUsbDevice,
59           l10n_util::GetStringUTF16(
60               IDS_EXTENSION_PROMPT_WARNING_USB_DEVICE_MISSING_VENDOR)));
61     }
62   }
63
64   return result;
65 }
66
67 }  // namespace extensions