Updating trunk VERSION from 2139.0 to 2140.0
[chromium-blink-merge.git] / extensions / browser / api / hid / hid_api.h
blob7683a63a55c034c2863df04f0cdd91eaea171ef1
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_
8 #include <string>
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"
18 namespace net {
20 class IOBufferWithSize;
22 } // namespace net
24 namespace extensions {
26 class HidAsyncApiFunction : public AsyncApiFunction {
27 public:
28 HidAsyncApiFunction();
30 virtual bool PrePrepare() OVERRIDE;
31 virtual bool Respond() OVERRIDE;
33 protected:
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_;
44 private:
45 DISALLOW_COPY_AND_ASSIGN(HidAsyncApiFunction);
48 class HidGetDevicesFunction : public HidAsyncApiFunction {
49 public:
50 DECLARE_EXTENSION_FUNCTION("hid.getDevices", HID_GETDEVICES);
52 HidGetDevicesFunction();
54 protected:
55 virtual bool Prepare() OVERRIDE;
56 virtual void AsyncWorkStart() OVERRIDE;
58 virtual ~HidGetDevicesFunction();
60 scoped_ptr<core_api::hid::GetDevices::Params> parameters_;
62 private:
63 DISALLOW_COPY_AND_ASSIGN(HidGetDevicesFunction);
66 class HidConnectFunction : public HidAsyncApiFunction {
67 public:
68 DECLARE_EXTENSION_FUNCTION("hid.connect", HID_CONNECT);
70 HidConnectFunction();
72 protected:
73 virtual bool Prepare() OVERRIDE;
74 virtual void AsyncWorkStart() OVERRIDE;
76 private:
77 virtual ~HidConnectFunction();
79 scoped_ptr<core_api::hid::Connect::Params> parameters_;
81 DISALLOW_COPY_AND_ASSIGN(HidConnectFunction);
84 class HidDisconnectFunction : public HidAsyncApiFunction {
85 public:
86 DECLARE_EXTENSION_FUNCTION("hid.disconnect", HID_DISCONNECT);
88 HidDisconnectFunction();
90 protected:
91 virtual bool Prepare() OVERRIDE;
92 virtual void AsyncWorkStart() OVERRIDE;
94 private:
95 virtual ~HidDisconnectFunction();
97 scoped_ptr<core_api::hid::Disconnect::Params> parameters_;
99 DISALLOW_COPY_AND_ASSIGN(HidDisconnectFunction);
102 class HidReceiveFunction : public HidAsyncApiFunction {
103 public:
104 DECLARE_EXTENSION_FUNCTION("hid.receive", HID_RECEIVE);
106 HidReceiveFunction();
108 protected:
109 virtual bool Prepare() OVERRIDE;
110 virtual void AsyncWorkStart() OVERRIDE;
112 private:
113 virtual ~HidReceiveFunction();
115 void OnFinished(bool success,
116 scoped_refptr<net::IOBuffer> buffer,
117 size_t size);
119 scoped_ptr<core_api::hid::Receive::Params> parameters_;
121 DISALLOW_COPY_AND_ASSIGN(HidReceiveFunction);
124 class HidSendFunction : public HidAsyncApiFunction {
125 public:
126 DECLARE_EXTENSION_FUNCTION("hid.send", HID_SEND);
128 HidSendFunction();
130 protected:
131 virtual bool Prepare() OVERRIDE;
132 virtual void AsyncWorkStart() OVERRIDE;
134 private:
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 {
145 public:
146 DECLARE_EXTENSION_FUNCTION("hid.receiveFeatureReport",
147 HID_RECEIVEFEATUREREPORT);
149 HidReceiveFeatureReportFunction();
151 protected:
152 virtual bool Prepare() OVERRIDE;
153 virtual void AsyncWorkStart() OVERRIDE;
155 private:
156 virtual ~HidReceiveFeatureReportFunction();
158 void OnFinished(bool success,
159 scoped_refptr<net::IOBuffer> buffer,
160 size_t size);
162 scoped_ptr<core_api::hid::ReceiveFeatureReport::Params> parameters_;
164 DISALLOW_COPY_AND_ASSIGN(HidReceiveFeatureReportFunction);
167 class HidSendFeatureReportFunction : public HidAsyncApiFunction {
168 public:
169 DECLARE_EXTENSION_FUNCTION("hid.sendFeatureReport", HID_SENDFEATUREREPORT);
171 HidSendFeatureReportFunction();
173 protected:
174 virtual bool Prepare() OVERRIDE;
175 virtual void AsyncWorkStart() OVERRIDE;
177 private:
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_