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"
22 namespace extensions {
24 class HidAsyncApiFunction : public AsyncApiFunction {
26 HidAsyncApiFunction();
28 virtual bool PrePrepare() OVERRIDE;
29 virtual bool Respond() OVERRIDE;
32 virtual ~HidAsyncApiFunction();
34 HidConnectionResource* GetHidConnectionResource(int api_resource_id);
35 void RemoveHidConnectionResource(int api_resource_id);
37 void CompleteWithError(const std::string& error);
39 HidDeviceManager* device_manager_;
40 ApiResourceManager<HidConnectionResource>* connection_manager_;
43 DISALLOW_COPY_AND_ASSIGN(HidAsyncApiFunction);
46 class HidGetDevicesFunction : public HidAsyncApiFunction {
48 DECLARE_EXTENSION_FUNCTION("hid.getDevices", HID_GETDEVICES);
50 HidGetDevicesFunction();
53 virtual bool Prepare() OVERRIDE;
54 virtual void AsyncWorkStart() OVERRIDE;
56 virtual ~HidGetDevicesFunction();
58 scoped_ptr<core_api::hid::GetDevices::Params> parameters_;
61 DISALLOW_COPY_AND_ASSIGN(HidGetDevicesFunction);
64 class HidConnectFunction : public HidAsyncApiFunction {
66 DECLARE_EXTENSION_FUNCTION("hid.connect", HID_CONNECT);
71 virtual bool Prepare() OVERRIDE;
72 virtual void AsyncWorkStart() OVERRIDE;
75 virtual ~HidConnectFunction();
77 scoped_ptr<core_api::hid::Connect::Params> parameters_;
79 DISALLOW_COPY_AND_ASSIGN(HidConnectFunction);
82 class HidDisconnectFunction : public HidAsyncApiFunction {
84 DECLARE_EXTENSION_FUNCTION("hid.disconnect", HID_DISCONNECT);
86 HidDisconnectFunction();
89 virtual bool Prepare() OVERRIDE;
90 virtual void AsyncWorkStart() OVERRIDE;
93 virtual ~HidDisconnectFunction();
95 scoped_ptr<core_api::hid::Disconnect::Params> parameters_;
97 DISALLOW_COPY_AND_ASSIGN(HidDisconnectFunction);
100 class HidReceiveFunction : public HidAsyncApiFunction {
102 DECLARE_EXTENSION_FUNCTION("hid.receive", HID_RECEIVE);
104 HidReceiveFunction();
107 virtual bool Prepare() OVERRIDE;
108 virtual void AsyncWorkStart() OVERRIDE;
111 virtual ~HidReceiveFunction();
113 void OnFinished(bool success,
114 scoped_refptr<net::IOBuffer> buffer,
117 scoped_ptr<core_api::hid::Receive::Params> parameters_;
119 DISALLOW_COPY_AND_ASSIGN(HidReceiveFunction);
122 class HidSendFunction : public HidAsyncApiFunction {
124 DECLARE_EXTENSION_FUNCTION("hid.send", HID_SEND);
129 virtual bool Prepare() OVERRIDE;
130 virtual void AsyncWorkStart() OVERRIDE;
133 virtual ~HidSendFunction();
135 void OnFinished(bool success);
137 scoped_ptr<core_api::hid::Send::Params> parameters_;
139 DISALLOW_COPY_AND_ASSIGN(HidSendFunction);
142 class HidReceiveFeatureReportFunction : public HidAsyncApiFunction {
144 DECLARE_EXTENSION_FUNCTION("hid.receiveFeatureReport",
145 HID_RECEIVEFEATUREREPORT);
147 HidReceiveFeatureReportFunction();
150 virtual bool Prepare() OVERRIDE;
151 virtual void AsyncWorkStart() OVERRIDE;
154 virtual ~HidReceiveFeatureReportFunction();
156 void OnFinished(bool success,
157 scoped_refptr<net::IOBuffer> buffer,
160 scoped_ptr<core_api::hid::ReceiveFeatureReport::Params> parameters_;
162 DISALLOW_COPY_AND_ASSIGN(HidReceiveFeatureReportFunction);
165 class HidSendFeatureReportFunction : public HidAsyncApiFunction {
167 DECLARE_EXTENSION_FUNCTION("hid.sendFeatureReport", HID_SENDFEATUREREPORT);
169 HidSendFeatureReportFunction();
172 virtual bool Prepare() OVERRIDE;
173 virtual void AsyncWorkStart() OVERRIDE;
176 virtual ~HidSendFeatureReportFunction();
178 void OnFinished(bool success);
180 scoped_ptr<core_api::hid::SendFeatureReport::Params> parameters_;
182 DISALLOW_COPY_AND_ASSIGN(HidSendFeatureReportFunction);
185 } // namespace extensions
187 #endif // EXTENSIONS_BROWSER_API_HID_HID_API_H_