OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef EXTENSIONS_BROWSER_API_SERIAL_SERIAL_API_H_ | 5 #ifndef EXTENSIONS_BROWSER_API_SERIAL_SERIAL_API_H_ |
6 #define EXTENSIONS_BROWSER_API_SERIAL_SERIAL_API_H_ | 6 #define EXTENSIONS_BROWSER_API_SERIAL_SERIAL_API_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "device/serial/serial.mojom.h" | 10 #include "device/serial/serial.mojom.h" |
11 #include "extensions/browser/api/api_resource_manager.h" | 11 #include "extensions/browser/api/api_resource_manager.h" |
12 #include "extensions/browser/api/async_api_function.h" | 12 #include "extensions/browser/api/async_api_function.h" |
13 #include "extensions/common/api/serial.h" | 13 #include "extensions/common/api/serial.h" |
14 | 14 |
15 namespace extensions { | 15 namespace extensions { |
16 | 16 |
17 class SerialConnection; | 17 class SerialConnection; |
18 | 18 |
19 namespace core_api { | 19 namespace core_api { |
20 | 20 |
21 class SerialEventDispatcher; | 21 class SerialEventDispatcher; |
22 | 22 |
23 class SerialAsyncApiFunction : public AsyncApiFunction { | 23 class SerialAsyncApiFunction : public AsyncApiFunction { |
24 public: | 24 public: |
25 SerialAsyncApiFunction(); | 25 SerialAsyncApiFunction(); |
26 | 26 |
27 protected: | 27 protected: |
28 virtual ~SerialAsyncApiFunction(); | 28 ~SerialAsyncApiFunction() override; |
29 | 29 |
30 // AsyncApiFunction: | 30 // AsyncApiFunction: |
31 virtual bool PrePrepare() override; | 31 bool PrePrepare() override; |
32 virtual bool Respond() override; | 32 bool Respond() override; |
33 | 33 |
34 SerialConnection* GetSerialConnection(int api_resource_id); | 34 SerialConnection* GetSerialConnection(int api_resource_id); |
35 void RemoveSerialConnection(int api_resource_id); | 35 void RemoveSerialConnection(int api_resource_id); |
36 | 36 |
37 ApiResourceManager<SerialConnection>* manager_; | 37 ApiResourceManager<SerialConnection>* manager_; |
38 }; | 38 }; |
39 | 39 |
40 class SerialGetDevicesFunction : public SerialAsyncApiFunction { | 40 class SerialGetDevicesFunction : public SerialAsyncApiFunction { |
41 public: | 41 public: |
42 DECLARE_EXTENSION_FUNCTION("serial.getDevices", SERIAL_GETDEVICES) | 42 DECLARE_EXTENSION_FUNCTION("serial.getDevices", SERIAL_GETDEVICES) |
43 | 43 |
44 SerialGetDevicesFunction(); | 44 SerialGetDevicesFunction(); |
45 | 45 |
46 protected: | 46 protected: |
47 virtual ~SerialGetDevicesFunction() {} | 47 ~SerialGetDevicesFunction() override {} |
48 | 48 |
49 // AsyncApiFunction: | 49 // AsyncApiFunction: |
50 virtual bool Prepare() override; | 50 bool Prepare() override; |
51 virtual void Work() override; | 51 void Work() override; |
52 }; | 52 }; |
53 | 53 |
54 class SerialConnectFunction : public SerialAsyncApiFunction { | 54 class SerialConnectFunction : public SerialAsyncApiFunction { |
55 public: | 55 public: |
56 DECLARE_EXTENSION_FUNCTION("serial.connect", SERIAL_CONNECT) | 56 DECLARE_EXTENSION_FUNCTION("serial.connect", SERIAL_CONNECT) |
57 | 57 |
58 SerialConnectFunction(); | 58 SerialConnectFunction(); |
59 | 59 |
60 protected: | 60 protected: |
61 virtual ~SerialConnectFunction(); | 61 ~SerialConnectFunction() override; |
62 | 62 |
63 // AsyncApiFunction: | 63 // AsyncApiFunction: |
64 virtual bool Prepare() override; | 64 bool Prepare() override; |
65 virtual void AsyncWorkStart() override; | 65 void AsyncWorkStart() override; |
66 | 66 |
67 virtual SerialConnection* CreateSerialConnection( | 67 virtual SerialConnection* CreateSerialConnection( |
68 const std::string& port, | 68 const std::string& port, |
69 const std::string& extension_id) const; | 69 const std::string& extension_id) const; |
70 | 70 |
71 private: | 71 private: |
72 void OnConnected(bool success); | 72 void OnConnected(bool success); |
73 void FinishConnect(); | 73 void FinishConnect(); |
74 | 74 |
75 scoped_ptr<serial::Connect::Params> params_; | 75 scoped_ptr<serial::Connect::Params> params_; |
76 | 76 |
77 // SerialEventDispatcher is owned by a BrowserContext. | 77 // SerialEventDispatcher is owned by a BrowserContext. |
78 SerialEventDispatcher* serial_event_dispatcher_; | 78 SerialEventDispatcher* serial_event_dispatcher_; |
79 | 79 |
80 // This connection is created within SerialConnectFunction. | 80 // This connection is created within SerialConnectFunction. |
81 // From there it is either destroyed in OnConnected (upon failure) | 81 // From there it is either destroyed in OnConnected (upon failure) |
82 // or its ownership is transferred to the | 82 // or its ownership is transferred to the |
83 // ApiResourceManager<SerialConnection>. | 83 // ApiResourceManager<SerialConnection>. |
84 SerialConnection* connection_; | 84 SerialConnection* connection_; |
85 }; | 85 }; |
86 | 86 |
87 class SerialUpdateFunction : public SerialAsyncApiFunction { | 87 class SerialUpdateFunction : public SerialAsyncApiFunction { |
88 public: | 88 public: |
89 DECLARE_EXTENSION_FUNCTION("serial.update", SERIAL_UPDATE); | 89 DECLARE_EXTENSION_FUNCTION("serial.update", SERIAL_UPDATE); |
90 | 90 |
91 SerialUpdateFunction(); | 91 SerialUpdateFunction(); |
92 | 92 |
93 protected: | 93 protected: |
94 virtual ~SerialUpdateFunction(); | 94 ~SerialUpdateFunction() override; |
95 | 95 |
96 // AsyncApiFunction: | 96 // AsyncApiFunction: |
97 virtual bool Prepare() override; | 97 bool Prepare() override; |
98 virtual void Work() override; | 98 void Work() override; |
99 | 99 |
100 private: | 100 private: |
101 scoped_ptr<serial::Update::Params> params_; | 101 scoped_ptr<serial::Update::Params> params_; |
102 }; | 102 }; |
103 | 103 |
104 class SerialDisconnectFunction : public SerialAsyncApiFunction { | 104 class SerialDisconnectFunction : public SerialAsyncApiFunction { |
105 public: | 105 public: |
106 DECLARE_EXTENSION_FUNCTION("serial.disconnect", SERIAL_DISCONNECT) | 106 DECLARE_EXTENSION_FUNCTION("serial.disconnect", SERIAL_DISCONNECT) |
107 | 107 |
108 SerialDisconnectFunction(); | 108 SerialDisconnectFunction(); |
109 | 109 |
110 protected: | 110 protected: |
111 virtual ~SerialDisconnectFunction(); | 111 ~SerialDisconnectFunction() override; |
112 | 112 |
113 // AsyncApiFunction: | 113 // AsyncApiFunction: |
114 virtual bool Prepare() override; | 114 bool Prepare() override; |
115 virtual void Work() override; | 115 void Work() override; |
116 | 116 |
117 private: | 117 private: |
118 scoped_ptr<serial::Disconnect::Params> params_; | 118 scoped_ptr<serial::Disconnect::Params> params_; |
119 }; | 119 }; |
120 | 120 |
121 class SerialSetPausedFunction : public SerialAsyncApiFunction { | 121 class SerialSetPausedFunction : public SerialAsyncApiFunction { |
122 public: | 122 public: |
123 DECLARE_EXTENSION_FUNCTION("serial.setPaused", SERIAL_SETPAUSED) | 123 DECLARE_EXTENSION_FUNCTION("serial.setPaused", SERIAL_SETPAUSED) |
124 | 124 |
125 SerialSetPausedFunction(); | 125 SerialSetPausedFunction(); |
126 | 126 |
127 protected: | 127 protected: |
128 virtual ~SerialSetPausedFunction(); | 128 ~SerialSetPausedFunction() override; |
129 | 129 |
130 // AsyncApiFunction: | 130 // AsyncApiFunction: |
131 virtual bool Prepare() override; | 131 bool Prepare() override; |
132 virtual void Work() override; | 132 void Work() override; |
133 | 133 |
134 private: | 134 private: |
135 scoped_ptr<serial::SetPaused::Params> params_; | 135 scoped_ptr<serial::SetPaused::Params> params_; |
136 SerialEventDispatcher* serial_event_dispatcher_; | 136 SerialEventDispatcher* serial_event_dispatcher_; |
137 }; | 137 }; |
138 | 138 |
139 class SerialGetInfoFunction : public SerialAsyncApiFunction { | 139 class SerialGetInfoFunction : public SerialAsyncApiFunction { |
140 public: | 140 public: |
141 DECLARE_EXTENSION_FUNCTION("serial.getInfo", SERIAL_GETINFO) | 141 DECLARE_EXTENSION_FUNCTION("serial.getInfo", SERIAL_GETINFO) |
142 | 142 |
143 SerialGetInfoFunction(); | 143 SerialGetInfoFunction(); |
144 | 144 |
145 protected: | 145 protected: |
146 virtual ~SerialGetInfoFunction(); | 146 ~SerialGetInfoFunction() override; |
147 | 147 |
148 // AsyncApiFunction: | 148 // AsyncApiFunction: |
149 virtual bool Prepare() override; | 149 bool Prepare() override; |
150 virtual void Work() override; | 150 void Work() override; |
151 | 151 |
152 private: | 152 private: |
153 scoped_ptr<serial::GetInfo::Params> params_; | 153 scoped_ptr<serial::GetInfo::Params> params_; |
154 }; | 154 }; |
155 | 155 |
156 class SerialGetConnectionsFunction : public SerialAsyncApiFunction { | 156 class SerialGetConnectionsFunction : public SerialAsyncApiFunction { |
157 public: | 157 public: |
158 DECLARE_EXTENSION_FUNCTION("serial.getConnections", SERIAL_GETCONNECTIONS); | 158 DECLARE_EXTENSION_FUNCTION("serial.getConnections", SERIAL_GETCONNECTIONS); |
159 | 159 |
160 SerialGetConnectionsFunction(); | 160 SerialGetConnectionsFunction(); |
161 | 161 |
162 protected: | 162 protected: |
163 virtual ~SerialGetConnectionsFunction(); | 163 ~SerialGetConnectionsFunction() override; |
164 | 164 |
165 // AsyncApiFunction: | 165 // AsyncApiFunction: |
166 virtual bool Prepare() override; | 166 bool Prepare() override; |
167 virtual void Work() override; | 167 void Work() override; |
168 }; | 168 }; |
169 | 169 |
170 class SerialSendFunction : public SerialAsyncApiFunction { | 170 class SerialSendFunction : public SerialAsyncApiFunction { |
171 public: | 171 public: |
172 DECLARE_EXTENSION_FUNCTION("serial.send", SERIAL_SEND) | 172 DECLARE_EXTENSION_FUNCTION("serial.send", SERIAL_SEND) |
173 | 173 |
174 SerialSendFunction(); | 174 SerialSendFunction(); |
175 | 175 |
176 protected: | 176 protected: |
177 virtual ~SerialSendFunction(); | 177 ~SerialSendFunction() override; |
178 | 178 |
179 // AsyncApiFunction: | 179 // AsyncApiFunction: |
180 virtual bool Prepare() override; | 180 bool Prepare() override; |
181 virtual void AsyncWorkStart() override; | 181 void AsyncWorkStart() override; |
182 | 182 |
183 private: | 183 private: |
184 void OnSendComplete(int bytes_sent, serial::SendError error); | 184 void OnSendComplete(int bytes_sent, serial::SendError error); |
185 | 185 |
186 scoped_ptr<serial::Send::Params> params_; | 186 scoped_ptr<serial::Send::Params> params_; |
187 }; | 187 }; |
188 | 188 |
189 class SerialFlushFunction : public SerialAsyncApiFunction { | 189 class SerialFlushFunction : public SerialAsyncApiFunction { |
190 public: | 190 public: |
191 DECLARE_EXTENSION_FUNCTION("serial.flush", SERIAL_FLUSH) | 191 DECLARE_EXTENSION_FUNCTION("serial.flush", SERIAL_FLUSH) |
192 | 192 |
193 SerialFlushFunction(); | 193 SerialFlushFunction(); |
194 | 194 |
195 protected: | 195 protected: |
196 virtual ~SerialFlushFunction(); | 196 ~SerialFlushFunction() override; |
197 | 197 |
198 // AsyncApiFunction: | 198 // AsyncApiFunction: |
199 virtual bool Prepare() override; | 199 bool Prepare() override; |
200 virtual void Work() override; | 200 void Work() override; |
201 | 201 |
202 private: | 202 private: |
203 scoped_ptr<serial::Flush::Params> params_; | 203 scoped_ptr<serial::Flush::Params> params_; |
204 }; | 204 }; |
205 | 205 |
206 class SerialGetControlSignalsFunction : public SerialAsyncApiFunction { | 206 class SerialGetControlSignalsFunction : public SerialAsyncApiFunction { |
207 public: | 207 public: |
208 DECLARE_EXTENSION_FUNCTION("serial.getControlSignals", | 208 DECLARE_EXTENSION_FUNCTION("serial.getControlSignals", |
209 SERIAL_GETCONTROLSIGNALS) | 209 SERIAL_GETCONTROLSIGNALS) |
210 | 210 |
211 SerialGetControlSignalsFunction(); | 211 SerialGetControlSignalsFunction(); |
212 | 212 |
213 protected: | 213 protected: |
214 virtual ~SerialGetControlSignalsFunction(); | 214 ~SerialGetControlSignalsFunction() override; |
215 | 215 |
216 // AsyncApiFunction: | 216 // AsyncApiFunction: |
217 virtual bool Prepare() override; | 217 bool Prepare() override; |
218 virtual void Work() override; | 218 void Work() override; |
219 | 219 |
220 private: | 220 private: |
221 scoped_ptr<serial::GetControlSignals::Params> params_; | 221 scoped_ptr<serial::GetControlSignals::Params> params_; |
222 }; | 222 }; |
223 | 223 |
224 class SerialSetControlSignalsFunction : public SerialAsyncApiFunction { | 224 class SerialSetControlSignalsFunction : public SerialAsyncApiFunction { |
225 public: | 225 public: |
226 DECLARE_EXTENSION_FUNCTION("serial.setControlSignals", | 226 DECLARE_EXTENSION_FUNCTION("serial.setControlSignals", |
227 SERIAL_SETCONTROLSIGNALS) | 227 SERIAL_SETCONTROLSIGNALS) |
228 | 228 |
229 SerialSetControlSignalsFunction(); | 229 SerialSetControlSignalsFunction(); |
230 | 230 |
231 protected: | 231 protected: |
232 virtual ~SerialSetControlSignalsFunction(); | 232 ~SerialSetControlSignalsFunction() override; |
233 | 233 |
234 // AsyncApiFunction: | 234 // AsyncApiFunction: |
235 virtual bool Prepare() override; | 235 bool Prepare() override; |
236 virtual void Work() override; | 236 void Work() override; |
237 | 237 |
238 private: | 238 private: |
239 scoped_ptr<serial::SetControlSignals::Params> params_; | 239 scoped_ptr<serial::SetControlSignals::Params> params_; |
240 }; | 240 }; |
241 | 241 |
242 } // namespace core_api | 242 } // namespace core_api |
243 | 243 |
244 } // namespace extensions | 244 } // namespace extensions |
245 | 245 |
246 namespace mojo { | 246 namespace mojo { |
247 | 247 |
248 template <> | 248 template <> |
249 struct TypeConverter<linked_ptr<extensions::core_api::serial::DeviceInfo>, | 249 struct TypeConverter<linked_ptr<extensions::core_api::serial::DeviceInfo>, |
250 device::serial::DeviceInfoPtr> { | 250 device::serial::DeviceInfoPtr> { |
251 static linked_ptr<extensions::core_api::serial::DeviceInfo> Convert( | 251 static linked_ptr<extensions::core_api::serial::DeviceInfo> Convert( |
252 const device::serial::DeviceInfoPtr& input); | 252 const device::serial::DeviceInfoPtr& input); |
253 }; | 253 }; |
254 | 254 |
255 } // namespace mojo | 255 } // namespace mojo |
256 | 256 |
257 #endif // EXTENSIONS_BROWSER_API_SERIAL_SERIAL_API_H_ | 257 #endif // EXTENSIONS_BROWSER_API_SERIAL_SERIAL_API_H_ |
OLD | NEW |