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

Side by Side Diff: extensions/browser/api/usb_private/usb_private_api.cc

Issue 617933002: Remove the usbPrivate API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased again. This patch is fighting for an edit in _api_features.json. Created 6 years, 2 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 unified diff | Download patch
OLDNEW
(Empty)
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/browser/api/usb_private/usb_private_api.h"
6
7 #include <string>
8 #include <vector>
9
10 #include "base/memory/ref_counted.h"
11 #include "base/strings/utf_string_conversions.h"
12 #include "device/core/device_client.h"
13 #include "device/usb/usb_device_filter.h"
14 #include "device/usb/usb_device_handle.h"
15 #include "device/usb/usb_ids.h"
16 #include "device/usb/usb_service.h"
17 #include "extensions/common/api/usb_private.h"
18
19 namespace usb = extensions::core_api::usb;
20 namespace usb_private = extensions::core_api::usb_private;
21 namespace GetDevices = usb_private::GetDevices;
22 namespace GetDeviceInfo = usb_private::GetDeviceInfo;
23
24 using content::BrowserThread;
25 using device::UsbDevice;
26 using device::UsbDeviceFilter;
27 using device::UsbDeviceHandle;
28 using device::UsbService;
29
30 typedef std::vector<scoped_refptr<UsbDevice> > DeviceVector;
31
32 namespace {
33
34 const char kErrorInitService[] = "Failed to initialize USB service.";
35 const char kErrorNoDevice[] = "No such device.";
36
37 } // namespace
38
39 namespace extensions {
40
41 UsbPrivateGetDevicesFunction::UsbPrivateGetDevicesFunction() {
42 }
43
44 UsbPrivateGetDevicesFunction::~UsbPrivateGetDevicesFunction() {
45 }
46
47 bool UsbPrivateGetDevicesFunction::Prepare() {
48 parameters_ = GetDevices::Params::Create(*args_);
49 EXTENSION_FUNCTION_VALIDATE(parameters_.get());
50 return true;
51 }
52
53 void UsbPrivateGetDevicesFunction::AsyncWorkStart() {
54 UsbService* service = device::DeviceClient::Get()->GetUsbService();
55 if (!service) {
56 CompleteWithError(kErrorInitService);
57 return;
58 }
59
60 std::vector<UsbDeviceFilter> filters;
61 filters.resize(parameters_->filters.size());
62 for (size_t i = 0; i < parameters_->filters.size(); ++i) {
63 CreateDeviceFilter(*parameters_->filters[i].get(), &filters[i]);
64 }
65
66 DeviceVector devices;
67 service->GetDevices(&devices);
68
69 scoped_ptr<base::ListValue> result(new base::ListValue());
70 for (DeviceVector::iterator it = devices.begin(); it != devices.end(); ++it) {
71 scoped_refptr<UsbDevice> device = *it;
72 if (filters.empty() || UsbDeviceFilter::MatchesAny(device, filters)) {
73 result->Append(new base::FundamentalValue((int)device->unique_id()));
74 }
75 }
76
77 SetResult(result.release());
78 AsyncWorkCompleted();
79 }
80
81 UsbPrivateGetDeviceInfoFunction::UsbPrivateGetDeviceInfoFunction() {
82 }
83
84 UsbPrivateGetDeviceInfoFunction::~UsbPrivateGetDeviceInfoFunction() {
85 }
86
87 bool UsbPrivateGetDeviceInfoFunction::Prepare() {
88 parameters_ = GetDeviceInfo::Params::Create(*args_);
89 EXTENSION_FUNCTION_VALIDATE(parameters_.get());
90 return true;
91 }
92
93 void UsbPrivateGetDeviceInfoFunction::AsyncWorkStart() {
94 UsbService* service = device::DeviceClient::Get()->GetUsbService();
95 if (!service) {
96 CompleteWithError(kErrorInitService);
97 return;
98 }
99
100 scoped_refptr<UsbDevice> device =
101 service->GetDeviceById(parameters_->device_id);
102 if (!device.get()) {
103 CompleteWithError(kErrorNoDevice);
104 return;
105 }
106
107 usb_private::DeviceInfo device_info;
108 device_info.vendor_id = device->vendor_id();
109 device_info.product_id = device->product_id();
110
111 const char* name = device::UsbIds::GetVendorName(device_info.vendor_id);
112 if (name) {
113 device_info.vendor_name.reset(new std::string(name));
114 }
115
116 name = device::UsbIds::GetProductName(device_info.vendor_id,
117 device_info.product_id);
118 if (name) {
119 device_info.product_name.reset(new std::string(name));
120 }
121
122 base::string16 utf16;
123 if (device->GetManufacturer(&utf16)) {
124 device_info.manufacturer_string.reset(
125 new std::string(base::UTF16ToUTF8(utf16)));
126 }
127
128 if (device->GetProduct(&utf16)) {
129 device_info.product_string.reset(new std::string(base::UTF16ToUTF8(utf16)));
130 }
131
132 if (device->GetSerialNumber(&utf16)) {
133 device_info.serial_string.reset(new std::string(base::UTF16ToUTF8(utf16)));
134 }
135
136 SetResult(device_info.ToValue().release());
137 AsyncWorkCompleted();
138 }
139
140 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/api/usb_private/usb_private_api.h ('k') | extensions/common/api/_api_features.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698