Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / extensions / browser / api / hid / hid_api.h
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.
4
5 #ifndef EXTENSIONS_BROWSER_API_HID_HID_API_H_
6 #define EXTENSIONS_BROWSER_API_HID_HID_API_H_
7
8 #include <string>
9
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"
17
18 namespace net {
19 class IOBuffer;
20 }  // namespace net
21
22 namespace extensions {
23
24 class HidAsyncApiFunction : public AsyncApiFunction {
25  public:
26   HidAsyncApiFunction();
27
28   virtual bool PrePrepare() OVERRIDE;
29   virtual bool Respond() OVERRIDE;
30
31  protected:
32   virtual ~HidAsyncApiFunction();
33
34   HidConnectionResource* GetHidConnectionResource(int api_resource_id);
35   void RemoveHidConnectionResource(int api_resource_id);
36
37   void CompleteWithError(const std::string& error);
38
39   HidDeviceManager* device_manager_;
40   ApiResourceManager<HidConnectionResource>* connection_manager_;
41
42  private:
43   DISALLOW_COPY_AND_ASSIGN(HidAsyncApiFunction);
44 };
45
46 class HidGetDevicesFunction : public HidAsyncApiFunction {
47  public:
48   DECLARE_EXTENSION_FUNCTION("hid.getDevices", HID_GETDEVICES);
49
50   HidGetDevicesFunction();
51
52  protected:
53   virtual bool Prepare() OVERRIDE;
54   virtual void AsyncWorkStart() OVERRIDE;
55
56   virtual ~HidGetDevicesFunction();
57
58   scoped_ptr<core_api::hid::GetDevices::Params> parameters_;
59
60  private:
61   DISALLOW_COPY_AND_ASSIGN(HidGetDevicesFunction);
62 };
63
64 class HidConnectFunction : public HidAsyncApiFunction {
65  public:
66   DECLARE_EXTENSION_FUNCTION("hid.connect", HID_CONNECT);
67
68   HidConnectFunction();
69
70  protected:
71   virtual bool Prepare() OVERRIDE;
72   virtual void AsyncWorkStart() OVERRIDE;
73
74  private:
75   virtual ~HidConnectFunction();
76
77   scoped_ptr<core_api::hid::Connect::Params> parameters_;
78
79   DISALLOW_COPY_AND_ASSIGN(HidConnectFunction);
80 };
81
82 class HidDisconnectFunction : public HidAsyncApiFunction {
83  public:
84   DECLARE_EXTENSION_FUNCTION("hid.disconnect", HID_DISCONNECT);
85
86   HidDisconnectFunction();
87
88  protected:
89   virtual bool Prepare() OVERRIDE;
90   virtual void AsyncWorkStart() OVERRIDE;
91
92  private:
93   virtual ~HidDisconnectFunction();
94
95   scoped_ptr<core_api::hid::Disconnect::Params> parameters_;
96
97   DISALLOW_COPY_AND_ASSIGN(HidDisconnectFunction);
98 };
99
100 class HidReceiveFunction : public HidAsyncApiFunction {
101  public:
102   DECLARE_EXTENSION_FUNCTION("hid.receive", HID_RECEIVE);
103
104   HidReceiveFunction();
105
106  protected:
107   virtual bool Prepare() OVERRIDE;
108   virtual void AsyncWorkStart() OVERRIDE;
109
110  private:
111   virtual ~HidReceiveFunction();
112
113   void OnFinished(bool success,
114                   scoped_refptr<net::IOBuffer> buffer,
115                   size_t size);
116
117   scoped_ptr<core_api::hid::Receive::Params> parameters_;
118
119   DISALLOW_COPY_AND_ASSIGN(HidReceiveFunction);
120 };
121
122 class HidSendFunction : public HidAsyncApiFunction {
123  public:
124   DECLARE_EXTENSION_FUNCTION("hid.send", HID_SEND);
125
126   HidSendFunction();
127
128  protected:
129   virtual bool Prepare() OVERRIDE;
130   virtual void AsyncWorkStart() OVERRIDE;
131
132  private:
133   virtual ~HidSendFunction();
134
135   void OnFinished(bool success);
136
137   scoped_ptr<core_api::hid::Send::Params> parameters_;
138
139   DISALLOW_COPY_AND_ASSIGN(HidSendFunction);
140 };
141
142 class HidReceiveFeatureReportFunction : public HidAsyncApiFunction {
143  public:
144   DECLARE_EXTENSION_FUNCTION("hid.receiveFeatureReport",
145                              HID_RECEIVEFEATUREREPORT);
146
147   HidReceiveFeatureReportFunction();
148
149  protected:
150   virtual bool Prepare() OVERRIDE;
151   virtual void AsyncWorkStart() OVERRIDE;
152
153  private:
154   virtual ~HidReceiveFeatureReportFunction();
155
156   void OnFinished(bool success,
157                   scoped_refptr<net::IOBuffer> buffer,
158                   size_t size);
159
160   scoped_ptr<core_api::hid::ReceiveFeatureReport::Params> parameters_;
161
162   DISALLOW_COPY_AND_ASSIGN(HidReceiveFeatureReportFunction);
163 };
164
165 class HidSendFeatureReportFunction : public HidAsyncApiFunction {
166  public:
167   DECLARE_EXTENSION_FUNCTION("hid.sendFeatureReport", HID_SENDFEATUREREPORT);
168
169   HidSendFeatureReportFunction();
170
171  protected:
172   virtual bool Prepare() OVERRIDE;
173   virtual void AsyncWorkStart() OVERRIDE;
174
175  private:
176   virtual ~HidSendFeatureReportFunction();
177
178   void OnFinished(bool success);
179
180   scoped_ptr<core_api::hid::SendFeatureReport::Params> parameters_;
181
182   DISALLOW_COPY_AND_ASSIGN(HidSendFeatureReportFunction);
183 };
184
185 }  // namespace extensions
186
187 #endif  // EXTENSIONS_BROWSER_API_HID_HID_API_H_