OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_EXTENSIONS_API_USB_USB_API_H_ | |
6 #define CHROME_BROWSER_EXTENSIONS_API_USB_USB_API_H_ | |
7 | |
8 #include <string> | |
9 #include <vector> | |
10 | |
11 #include "base/memory/ref_counted.h" | |
12 #include "base/memory/scoped_ptr.h" | |
13 #include "chrome/common/extensions/api/usb.h" | |
14 #include "components/usb_service/usb_device.h" | |
15 #include "components/usb_service/usb_device_handle.h" | |
16 #include "extensions/browser/api/api_resource_manager.h" | |
17 #include "extensions/browser/api/async_api_function.h" | |
18 #include "net/base/io_buffer.h" | |
19 | |
20 namespace extensions { | |
21 | |
22 class UsbDeviceResource; | |
23 | |
24 class UsbAsyncApiFunction : public AsyncApiFunction { | |
25 public: | |
26 UsbAsyncApiFunction(); | |
27 | |
28 protected: | |
29 virtual ~UsbAsyncApiFunction(); | |
30 | |
31 virtual bool PrePrepare() OVERRIDE; | |
32 virtual bool Respond() OVERRIDE; | |
33 | |
34 scoped_refptr<usb_service::UsbDevice> GetDeviceOrOrCompleteWithError( | |
35 const extensions::api::usb::Device& input_device); | |
36 | |
37 scoped_refptr<usb_service::UsbDeviceHandle> | |
38 GetDeviceHandleOrCompleteWithError( | |
39 const extensions::api::usb::ConnectionHandle& input_device_handle); | |
40 | |
41 void RemoveUsbDeviceResource(int api_resource_id); | |
42 | |
43 void CompleteWithError(const std::string& error); | |
44 | |
45 ApiResourceManager<UsbDeviceResource>* manager_; | |
46 }; | |
47 | |
48 class UsbAsyncApiTransferFunction : public UsbAsyncApiFunction { | |
49 protected: | |
50 UsbAsyncApiTransferFunction(); | |
51 virtual ~UsbAsyncApiTransferFunction(); | |
52 | |
53 bool ConvertDirectionSafely(const extensions::api::usb::Direction& input, | |
54 usb_service::UsbEndpointDirection* output); | |
55 bool ConvertRequestTypeSafely( | |
56 const extensions::api::usb::RequestType& input, | |
57 usb_service::UsbDeviceHandle::TransferRequestType* output); | |
58 bool ConvertRecipientSafely( | |
59 const extensions::api::usb::Recipient& input, | |
60 usb_service::UsbDeviceHandle::TransferRecipient* output); | |
61 | |
62 void OnCompleted(usb_service::UsbTransferStatus status, | |
63 scoped_refptr<net::IOBuffer> data, | |
64 size_t length); | |
65 }; | |
66 | |
67 class UsbFindDevicesFunction : public UsbAsyncApiFunction { | |
68 public: | |
69 DECLARE_EXTENSION_FUNCTION("usb.findDevices", USB_FINDDEVICES) | |
70 | |
71 UsbFindDevicesFunction(); | |
72 | |
73 protected: | |
74 virtual ~UsbFindDevicesFunction(); | |
75 | |
76 virtual bool Prepare() OVERRIDE; | |
77 virtual void AsyncWorkStart() OVERRIDE; | |
78 | |
79 private: | |
80 void OpenDevices( | |
81 scoped_ptr<std::vector<scoped_refptr<usb_service::UsbDevice> > > devices); | |
82 | |
83 std::vector<scoped_refptr<usb_service::UsbDeviceHandle> > device_handles_; | |
84 scoped_ptr<extensions::api::usb::FindDevices::Params> parameters_; | |
85 }; | |
86 | |
87 class UsbGetDevicesFunction : public UsbAsyncApiFunction { | |
88 public: | |
89 DECLARE_EXTENSION_FUNCTION("usb.getDevices", USB_GETDEVICES) | |
90 | |
91 UsbGetDevicesFunction(); | |
92 | |
93 virtual bool Prepare() OVERRIDE; | |
94 virtual void AsyncWorkStart() OVERRIDE; | |
95 | |
96 protected: | |
97 virtual ~UsbGetDevicesFunction(); | |
98 | |
99 private: | |
100 void EnumerationCompletedFileThread( | |
101 scoped_ptr<std::vector<scoped_refptr<usb_service::UsbDevice> > > devices); | |
102 | |
103 scoped_ptr<extensions::api::usb::GetDevices::Params> parameters_; | |
104 }; | |
105 | |
106 class UsbRequestAccessFunction : public UsbAsyncApiFunction { | |
107 public: | |
108 DECLARE_EXTENSION_FUNCTION("usb.requestAccess", USB_REQUESTACCESS) | |
109 | |
110 UsbRequestAccessFunction(); | |
111 | |
112 virtual bool Prepare() OVERRIDE; | |
113 virtual void AsyncWorkStart() OVERRIDE; | |
114 | |
115 protected: | |
116 virtual ~UsbRequestAccessFunction(); | |
117 | |
118 void OnCompleted(bool success); | |
119 | |
120 private: | |
121 scoped_ptr<extensions::api::usb::RequestAccess::Params> parameters_; | |
122 }; | |
123 | |
124 class UsbOpenDeviceFunction : public UsbAsyncApiFunction { | |
125 public: | |
126 DECLARE_EXTENSION_FUNCTION("usb.openDevice", USB_OPENDEVICE) | |
127 | |
128 UsbOpenDeviceFunction(); | |
129 | |
130 virtual bool Prepare() OVERRIDE; | |
131 virtual void AsyncWorkStart() OVERRIDE; | |
132 | |
133 protected: | |
134 virtual ~UsbOpenDeviceFunction(); | |
135 | |
136 private: | |
137 scoped_refptr<usb_service::UsbDeviceHandle> handle_; | |
138 scoped_ptr<extensions::api::usb::OpenDevice::Params> parameters_; | |
139 }; | |
140 | |
141 class UsbListInterfacesFunction : public UsbAsyncApiFunction { | |
142 public: | |
143 DECLARE_EXTENSION_FUNCTION("usb.listInterfaces", USB_LISTINTERFACES) | |
144 | |
145 UsbListInterfacesFunction(); | |
146 | |
147 protected: | |
148 virtual ~UsbListInterfacesFunction(); | |
149 | |
150 virtual bool Prepare() OVERRIDE; | |
151 virtual void AsyncWorkStart() OVERRIDE; | |
152 | |
153 private: | |
154 bool ConvertDirectionSafely(const usb_service::UsbEndpointDirection& input, | |
155 extensions::api::usb::Direction* output); | |
156 bool ConvertSynchronizationTypeSafely( | |
157 const usb_service::UsbSynchronizationType& input, | |
158 extensions::api::usb::SynchronizationType* output); | |
159 bool ConvertTransferTypeSafely(const usb_service::UsbTransferType& input, | |
160 extensions::api::usb::TransferType* output); | |
161 bool ConvertUsageTypeSafely(const usb_service::UsbUsageType& input, | |
162 extensions::api::usb::UsageType* output); | |
163 | |
164 scoped_ptr<base::ListValue> result_; | |
165 scoped_ptr<extensions::api::usb::ListInterfaces::Params> parameters_; | |
166 }; | |
167 | |
168 class UsbCloseDeviceFunction : public UsbAsyncApiFunction { | |
169 public: | |
170 DECLARE_EXTENSION_FUNCTION("usb.closeDevice", USB_CLOSEDEVICE) | |
171 | |
172 UsbCloseDeviceFunction(); | |
173 | |
174 protected: | |
175 virtual ~UsbCloseDeviceFunction(); | |
176 | |
177 virtual bool Prepare() OVERRIDE; | |
178 virtual void AsyncWorkStart() OVERRIDE; | |
179 | |
180 private: | |
181 scoped_ptr<extensions::api::usb::CloseDevice::Params> parameters_; | |
182 }; | |
183 | |
184 class UsbClaimInterfaceFunction : public UsbAsyncApiFunction { | |
185 public: | |
186 DECLARE_EXTENSION_FUNCTION("usb.claimInterface", USB_CLAIMINTERFACE) | |
187 | |
188 UsbClaimInterfaceFunction(); | |
189 | |
190 protected: | |
191 virtual ~UsbClaimInterfaceFunction(); | |
192 | |
193 virtual bool Prepare() OVERRIDE; | |
194 virtual void AsyncWorkStart() OVERRIDE; | |
195 | |
196 private: | |
197 scoped_ptr<extensions::api::usb::ClaimInterface::Params> parameters_; | |
198 }; | |
199 | |
200 class UsbReleaseInterfaceFunction : public UsbAsyncApiFunction { | |
201 public: | |
202 DECLARE_EXTENSION_FUNCTION("usb.releaseInterface", USB_RELEASEINTERFACE) | |
203 | |
204 UsbReleaseInterfaceFunction(); | |
205 | |
206 protected: | |
207 virtual ~UsbReleaseInterfaceFunction(); | |
208 | |
209 virtual bool Prepare() OVERRIDE; | |
210 virtual void AsyncWorkStart() OVERRIDE; | |
211 | |
212 private: | |
213 scoped_ptr<extensions::api::usb::ReleaseInterface::Params> parameters_; | |
214 }; | |
215 | |
216 class UsbSetInterfaceAlternateSettingFunction : public UsbAsyncApiFunction { | |
217 public: | |
218 DECLARE_EXTENSION_FUNCTION("usb.setInterfaceAlternateSetting", | |
219 USB_SETINTERFACEALTERNATESETTING) | |
220 | |
221 UsbSetInterfaceAlternateSettingFunction(); | |
222 | |
223 private: | |
224 virtual ~UsbSetInterfaceAlternateSettingFunction(); | |
225 | |
226 virtual bool Prepare() OVERRIDE; | |
227 virtual void AsyncWorkStart() OVERRIDE; | |
228 | |
229 scoped_ptr<extensions::api::usb::SetInterfaceAlternateSetting::Params> | |
230 parameters_; | |
231 }; | |
232 | |
233 class UsbControlTransferFunction : public UsbAsyncApiTransferFunction { | |
234 public: | |
235 DECLARE_EXTENSION_FUNCTION("usb.controlTransfer", USB_CONTROLTRANSFER) | |
236 | |
237 UsbControlTransferFunction(); | |
238 | |
239 protected: | |
240 virtual ~UsbControlTransferFunction(); | |
241 | |
242 virtual bool Prepare() OVERRIDE; | |
243 virtual void AsyncWorkStart() OVERRIDE; | |
244 | |
245 private: | |
246 scoped_ptr<extensions::api::usb::ControlTransfer::Params> parameters_; | |
247 }; | |
248 | |
249 class UsbBulkTransferFunction : public UsbAsyncApiTransferFunction { | |
250 public: | |
251 DECLARE_EXTENSION_FUNCTION("usb.bulkTransfer", USB_BULKTRANSFER) | |
252 | |
253 UsbBulkTransferFunction(); | |
254 | |
255 protected: | |
256 virtual ~UsbBulkTransferFunction(); | |
257 | |
258 virtual bool Prepare() OVERRIDE; | |
259 virtual void AsyncWorkStart() OVERRIDE; | |
260 | |
261 private: | |
262 scoped_ptr<extensions::api::usb::BulkTransfer::Params> parameters_; | |
263 }; | |
264 | |
265 class UsbInterruptTransferFunction : public UsbAsyncApiTransferFunction { | |
266 public: | |
267 DECLARE_EXTENSION_FUNCTION("usb.interruptTransfer", USB_INTERRUPTTRANSFER) | |
268 | |
269 UsbInterruptTransferFunction(); | |
270 | |
271 protected: | |
272 virtual ~UsbInterruptTransferFunction(); | |
273 | |
274 virtual bool Prepare() OVERRIDE; | |
275 virtual void AsyncWorkStart() OVERRIDE; | |
276 | |
277 private: | |
278 scoped_ptr<extensions::api::usb::InterruptTransfer::Params> parameters_; | |
279 }; | |
280 | |
281 class UsbIsochronousTransferFunction : public UsbAsyncApiTransferFunction { | |
282 public: | |
283 DECLARE_EXTENSION_FUNCTION("usb.isochronousTransfer", USB_ISOCHRONOUSTRANSFER) | |
284 | |
285 UsbIsochronousTransferFunction(); | |
286 | |
287 protected: | |
288 virtual ~UsbIsochronousTransferFunction(); | |
289 | |
290 virtual bool Prepare() OVERRIDE; | |
291 virtual void AsyncWorkStart() OVERRIDE; | |
292 | |
293 private: | |
294 scoped_ptr<extensions::api::usb::IsochronousTransfer::Params> parameters_; | |
295 }; | |
296 | |
297 class UsbResetDeviceFunction : public UsbAsyncApiFunction { | |
298 public: | |
299 DECLARE_EXTENSION_FUNCTION("usb.resetDevice", USB_RESETDEVICE) | |
300 | |
301 UsbResetDeviceFunction(); | |
302 | |
303 protected: | |
304 virtual ~UsbResetDeviceFunction(); | |
305 | |
306 virtual bool Prepare() OVERRIDE; | |
307 virtual void AsyncWorkStart() OVERRIDE; | |
308 | |
309 private: | |
310 scoped_ptr<extensions::api::usb::ResetDevice::Params> parameters_; | |
311 }; | |
312 } // namespace extensions | |
313 | |
314 #endif // CHROME_BROWSER_EXTENSIONS_API_USB_USB_API_H_ | |
OLD | NEW |