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.
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_USB_USB_API_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_USB_USB_API_H_
10 #include "chrome/browser/extensions/api/api_function.h"
11 #include "chrome/browser/extensions/api/api_resource_manager.h"
12 #include "chrome/common/extensions/api/experimental_usb.h"
16 namespace extensions
{
18 class ApiResourceEventNotifier
;
19 class UsbDeviceResource
;
21 class UsbAsyncApiFunction
: public AsyncApiFunction
{
23 UsbAsyncApiFunction();
26 virtual ~UsbAsyncApiFunction();
28 virtual bool PrePrepare() OVERRIDE
;
30 UsbDeviceResource
* GetUsbDeviceResource(int api_resource_id
);
31 void RemoveUsbDeviceResource(int api_resource_id
);
33 ApiResourceManager
<UsbDeviceResource
>* manager_
;
36 class UsbFindDeviceFunction
: public UsbAsyncApiFunction
{
38 DECLARE_EXTENSION_FUNCTION_NAME("experimental.usb.findDevice");
40 UsbFindDeviceFunction();
42 static void SetDeviceForTest(UsbDevice
* device
);
45 virtual ~UsbFindDeviceFunction();
46 virtual bool Prepare() OVERRIDE
;
47 virtual void Work() OVERRIDE
;
48 virtual bool Respond() OVERRIDE
;
51 scoped_ptr
<extensions::api::experimental_usb::FindDevice::Params
> parameters_
;
52 ApiResourceEventNotifier
* event_notifier_
;
55 class UsbCloseDeviceFunction
: public UsbAsyncApiFunction
{
57 DECLARE_EXTENSION_FUNCTION_NAME("experimental.usb.closeDevice");
59 UsbCloseDeviceFunction();
62 virtual ~UsbCloseDeviceFunction();
63 virtual bool Prepare() OVERRIDE
;
64 virtual void Work() OVERRIDE
;
65 virtual bool Respond() OVERRIDE
;
68 scoped_ptr
<extensions::api::experimental_usb::CloseDevice::Params
>
72 class UsbControlTransferFunction
: public UsbAsyncApiFunction
{
74 DECLARE_EXTENSION_FUNCTION_NAME("experimental.usb.controlTransfer");
76 UsbControlTransferFunction();
79 virtual ~UsbControlTransferFunction();
80 virtual bool Prepare() OVERRIDE
;
81 virtual void Work() OVERRIDE
;
82 virtual bool Respond() OVERRIDE
;
85 scoped_ptr
<extensions::api::experimental_usb::ControlTransfer::Params
>
89 class UsbBulkTransferFunction
: public UsbAsyncApiFunction
{
91 DECLARE_EXTENSION_FUNCTION_NAME("experimental.usb.bulkTransfer");
93 UsbBulkTransferFunction();
96 virtual ~UsbBulkTransferFunction();
97 virtual bool Prepare() OVERRIDE
;
98 virtual void Work() OVERRIDE
;
99 virtual bool Respond() OVERRIDE
;
102 scoped_ptr
<extensions::api::experimental_usb::BulkTransfer::Params
>
106 class UsbInterruptTransferFunction
: public UsbAsyncApiFunction
{
108 DECLARE_EXTENSION_FUNCTION_NAME("experimental.usb.interruptTransfer");
110 UsbInterruptTransferFunction();
113 virtual ~UsbInterruptTransferFunction();
114 virtual bool Prepare() OVERRIDE
;
115 virtual void Work() OVERRIDE
;
116 virtual bool Respond() OVERRIDE
;
119 scoped_ptr
<extensions::api::experimental_usb::InterruptTransfer::Params
>
123 class UsbIsochronousTransferFunction
: public UsbAsyncApiFunction
{
125 DECLARE_EXTENSION_FUNCTION_NAME("experimental.usb.isochronousTransfer");
127 UsbIsochronousTransferFunction();
130 virtual ~UsbIsochronousTransferFunction();
131 virtual bool Prepare() OVERRIDE
;
132 virtual void Work() OVERRIDE
;
133 virtual bool Respond() OVERRIDE
;
136 scoped_ptr
<extensions::api::experimental_usb::IsochronousTransfer::Params
>
140 } // namespace extensions
142 #endif // CHROME_BROWSER_EXTENSIONS_API_USB_USB_API_H_