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.
5 #ifndef EXTENSIONS_BROWSER_API_HID_HID_API_H_
6 #define EXTENSIONS_BROWSER_API_HID_HID_API_H_
10 #include "base/memory/ref_counted.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "extensions/browser/api/api_resource_manager.h"
13 #include "extensions/browser/api/async_api_function.h"
14 #include "extensions/browser/api/hid/hid_connection_resource.h"
15 #include "extensions/browser/api/hid/hid_device_manager.h"
16 #include "extensions/common/api/hid.h"
20 class IOBufferWithSize
;
24 namespace extensions
{
26 class HidAsyncApiFunction
: public AsyncApiFunction
{
28 HidAsyncApiFunction();
30 virtual bool PrePrepare() OVERRIDE
;
31 virtual bool Respond() OVERRIDE
;
34 virtual ~HidAsyncApiFunction();
36 HidConnectionResource
* GetHidConnectionResource(int api_resource_id
);
37 void RemoveHidConnectionResource(int api_resource_id
);
39 void CompleteWithError(const std::string
& error
);
41 HidDeviceManager
* device_manager_
;
42 ApiResourceManager
<HidConnectionResource
>* connection_manager_
;
45 DISALLOW_COPY_AND_ASSIGN(HidAsyncApiFunction
);
48 class HidGetDevicesFunction
: public HidAsyncApiFunction
{
50 DECLARE_EXTENSION_FUNCTION("hid.getDevices", HID_GETDEVICES
);
52 HidGetDevicesFunction();
55 virtual bool Prepare() OVERRIDE
;
56 virtual void AsyncWorkStart() OVERRIDE
;
58 virtual ~HidGetDevicesFunction();
60 scoped_ptr
<core_api::hid::GetDevices::Params
> parameters_
;
63 DISALLOW_COPY_AND_ASSIGN(HidGetDevicesFunction
);
66 class HidConnectFunction
: public HidAsyncApiFunction
{
68 DECLARE_EXTENSION_FUNCTION("hid.connect", HID_CONNECT
);
73 virtual bool Prepare() OVERRIDE
;
74 virtual void AsyncWorkStart() OVERRIDE
;
77 virtual ~HidConnectFunction();
79 scoped_ptr
<core_api::hid::Connect::Params
> parameters_
;
81 DISALLOW_COPY_AND_ASSIGN(HidConnectFunction
);
84 class HidDisconnectFunction
: public HidAsyncApiFunction
{
86 DECLARE_EXTENSION_FUNCTION("hid.disconnect", HID_DISCONNECT
);
88 HidDisconnectFunction();
91 virtual bool Prepare() OVERRIDE
;
92 virtual void AsyncWorkStart() OVERRIDE
;
95 virtual ~HidDisconnectFunction();
97 scoped_ptr
<core_api::hid::Disconnect::Params
> parameters_
;
99 DISALLOW_COPY_AND_ASSIGN(HidDisconnectFunction
);
102 class HidReceiveFunction
: public HidAsyncApiFunction
{
104 DECLARE_EXTENSION_FUNCTION("hid.receive", HID_RECEIVE
);
106 HidReceiveFunction();
109 virtual bool Prepare() OVERRIDE
;
110 virtual void AsyncWorkStart() OVERRIDE
;
113 virtual ~HidReceiveFunction();
115 void OnFinished(bool success
,
116 scoped_refptr
<net::IOBuffer
> buffer
,
119 scoped_ptr
<core_api::hid::Receive::Params
> parameters_
;
121 DISALLOW_COPY_AND_ASSIGN(HidReceiveFunction
);
124 class HidSendFunction
: public HidAsyncApiFunction
{
126 DECLARE_EXTENSION_FUNCTION("hid.send", HID_SEND
);
131 virtual bool Prepare() OVERRIDE
;
132 virtual void AsyncWorkStart() OVERRIDE
;
135 virtual ~HidSendFunction();
137 void OnFinished(bool success
);
139 scoped_ptr
<core_api::hid::Send::Params
> parameters_
;
141 DISALLOW_COPY_AND_ASSIGN(HidSendFunction
);
144 class HidReceiveFeatureReportFunction
: public HidAsyncApiFunction
{
146 DECLARE_EXTENSION_FUNCTION("hid.receiveFeatureReport",
147 HID_RECEIVEFEATUREREPORT
);
149 HidReceiveFeatureReportFunction();
152 virtual bool Prepare() OVERRIDE
;
153 virtual void AsyncWorkStart() OVERRIDE
;
156 virtual ~HidReceiveFeatureReportFunction();
158 void OnFinished(bool success
,
159 scoped_refptr
<net::IOBuffer
> buffer
,
162 scoped_ptr
<core_api::hid::ReceiveFeatureReport::Params
> parameters_
;
164 DISALLOW_COPY_AND_ASSIGN(HidReceiveFeatureReportFunction
);
167 class HidSendFeatureReportFunction
: public HidAsyncApiFunction
{
169 DECLARE_EXTENSION_FUNCTION("hid.sendFeatureReport", HID_SENDFEATUREREPORT
);
171 HidSendFeatureReportFunction();
174 virtual bool Prepare() OVERRIDE
;
175 virtual void AsyncWorkStart() OVERRIDE
;
178 virtual ~HidSendFeatureReportFunction();
180 void OnFinished(bool success
);
182 scoped_ptr
<core_api::hid::SendFeatureReport::Params
> parameters_
;
184 DISALLOW_COPY_AND_ASSIGN(HidSendFeatureReportFunction
);
187 } // namespace extensions
189 #endif // EXTENSIONS_BROWSER_API_HID_HID_API_H_