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 #include "device/serial/serial_device_enumerator.h" | 5 #include "device/serial/serial_device_enumerator.h" |
6 #include "device/serial/serial_service_impl.h" | 6 #include "device/serial/serial_service_impl.h" |
7 #include "device/serial/test_serial_io_handler.h" | 7 #include "device/serial/test_serial_io_handler.h" |
8 #include "extensions/renderer/api_test_base.h" | 8 #include "extensions/renderer/api_test_base.h" |
9 #include "grit/extensions_renderer_resources.h" | 9 #include "grit/extensions_renderer_resources.h" |
10 | 10 |
11 // A test launcher for tests for the serial API defined in | 11 // A test launcher for tests for the serial API defined in |
12 // extensions/test/data/serial_unittest.js. Each C++ test function sets up a | 12 // extensions/test/data/serial_unittest.js. Each C++ test function sets up a |
13 // fake DeviceEnumerator or SerialIoHandler expecting or returning particular | 13 // fake DeviceEnumerator or SerialIoHandler expecting or returning particular |
14 // values for that test. | 14 // values for that test. |
15 | 15 |
16 namespace extensions { | 16 namespace extensions { |
17 | 17 |
18 namespace { | 18 namespace { |
19 | 19 |
20 class FakeSerialDeviceEnumerator : public device::SerialDeviceEnumerator { | 20 class FakeSerialDeviceEnumerator : public device::SerialDeviceEnumerator { |
21 virtual mojo::Array<device::serial::DeviceInfoPtr> GetDevices() OVERRIDE { | 21 virtual mojo::Array<device::serial::DeviceInfoPtr> GetDevices() override { |
22 mojo::Array<device::serial::DeviceInfoPtr> result(3); | 22 mojo::Array<device::serial::DeviceInfoPtr> result(3); |
23 result[0] = device::serial::DeviceInfo::New(); | 23 result[0] = device::serial::DeviceInfo::New(); |
24 result[0]->path = "device"; | 24 result[0]->path = "device"; |
25 result[0]->vendor_id = 1234; | 25 result[0]->vendor_id = 1234; |
26 result[0]->has_vendor_id = true; | 26 result[0]->has_vendor_id = true; |
27 result[0]->product_id = 5678; | 27 result[0]->product_id = 5678; |
28 result[0]->has_product_id = true; | 28 result[0]->has_product_id = true; |
29 result[0]->display_name = "foo"; | 29 result[0]->display_name = "foo"; |
30 result[1] = device::serial::DeviceInfo::New(); | 30 result[1] = device::serial::DeviceInfo::New(); |
31 result[1]->path = "another_device"; | 31 result[1]->path = "another_device"; |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 mutable size_t calls_; | 115 mutable size_t calls_; |
116 | 116 |
117 DISALLOW_COPY_AND_ASSIGN(TestIoHandlerBase); | 117 DISALLOW_COPY_AND_ASSIGN(TestIoHandlerBase); |
118 }; | 118 }; |
119 | 119 |
120 class SetControlSignalsTestIoHandler : public TestIoHandlerBase { | 120 class SetControlSignalsTestIoHandler : public TestIoHandlerBase { |
121 public: | 121 public: |
122 SetControlSignalsTestIoHandler() {} | 122 SetControlSignalsTestIoHandler() {} |
123 | 123 |
124 virtual bool SetControlSignals( | 124 virtual bool SetControlSignals( |
125 const device::serial::HostControlSignals& signals) OVERRIDE { | 125 const device::serial::HostControlSignals& signals) override { |
126 static const device::serial::HostControlSignals expected_signals[] = { | 126 static const device::serial::HostControlSignals expected_signals[] = { |
127 GenerateControlSignals(OPTIONAL_VALUE_UNSET, OPTIONAL_VALUE_UNSET), | 127 GenerateControlSignals(OPTIONAL_VALUE_UNSET, OPTIONAL_VALUE_UNSET), |
128 GenerateControlSignals(OPTIONAL_VALUE_FALSE, OPTIONAL_VALUE_UNSET), | 128 GenerateControlSignals(OPTIONAL_VALUE_FALSE, OPTIONAL_VALUE_UNSET), |
129 GenerateControlSignals(OPTIONAL_VALUE_TRUE, OPTIONAL_VALUE_UNSET), | 129 GenerateControlSignals(OPTIONAL_VALUE_TRUE, OPTIONAL_VALUE_UNSET), |
130 GenerateControlSignals(OPTIONAL_VALUE_UNSET, OPTIONAL_VALUE_FALSE), | 130 GenerateControlSignals(OPTIONAL_VALUE_UNSET, OPTIONAL_VALUE_FALSE), |
131 GenerateControlSignals(OPTIONAL_VALUE_FALSE, OPTIONAL_VALUE_FALSE), | 131 GenerateControlSignals(OPTIONAL_VALUE_FALSE, OPTIONAL_VALUE_FALSE), |
132 GenerateControlSignals(OPTIONAL_VALUE_TRUE, OPTIONAL_VALUE_FALSE), | 132 GenerateControlSignals(OPTIONAL_VALUE_TRUE, OPTIONAL_VALUE_FALSE), |
133 GenerateControlSignals(OPTIONAL_VALUE_UNSET, OPTIONAL_VALUE_TRUE), | 133 GenerateControlSignals(OPTIONAL_VALUE_UNSET, OPTIONAL_VALUE_TRUE), |
134 GenerateControlSignals(OPTIONAL_VALUE_FALSE, OPTIONAL_VALUE_TRUE), | 134 GenerateControlSignals(OPTIONAL_VALUE_FALSE, OPTIONAL_VALUE_TRUE), |
135 GenerateControlSignals(OPTIONAL_VALUE_TRUE, OPTIONAL_VALUE_TRUE), | 135 GenerateControlSignals(OPTIONAL_VALUE_TRUE, OPTIONAL_VALUE_TRUE), |
(...skipping 13 matching lines...) Expand all Loading... |
149 virtual ~SetControlSignalsTestIoHandler() {} | 149 virtual ~SetControlSignalsTestIoHandler() {} |
150 | 150 |
151 DISALLOW_COPY_AND_ASSIGN(SetControlSignalsTestIoHandler); | 151 DISALLOW_COPY_AND_ASSIGN(SetControlSignalsTestIoHandler); |
152 }; | 152 }; |
153 | 153 |
154 class GetControlSignalsTestIoHandler : public TestIoHandlerBase { | 154 class GetControlSignalsTestIoHandler : public TestIoHandlerBase { |
155 public: | 155 public: |
156 GetControlSignalsTestIoHandler() {} | 156 GetControlSignalsTestIoHandler() {} |
157 | 157 |
158 virtual device::serial::DeviceControlSignalsPtr GetControlSignals() | 158 virtual device::serial::DeviceControlSignalsPtr GetControlSignals() |
159 const OVERRIDE { | 159 const override { |
160 device::serial::DeviceControlSignalsPtr signals( | 160 device::serial::DeviceControlSignalsPtr signals( |
161 device::serial::DeviceControlSignals::New()); | 161 device::serial::DeviceControlSignals::New()); |
162 signals->dcd = num_calls() & 1; | 162 signals->dcd = num_calls() & 1; |
163 signals->cts = num_calls() & 2; | 163 signals->cts = num_calls() & 2; |
164 signals->ri = num_calls() & 4; | 164 signals->ri = num_calls() & 4; |
165 signals->dsr = num_calls() & 8; | 165 signals->dsr = num_calls() & 8; |
166 record_call(); | 166 record_call(); |
167 return signals.Pass(); | 167 return signals.Pass(); |
168 } | 168 } |
169 | 169 |
170 private: | 170 private: |
171 virtual ~GetControlSignalsTestIoHandler() {} | 171 virtual ~GetControlSignalsTestIoHandler() {} |
172 | 172 |
173 DISALLOW_COPY_AND_ASSIGN(GetControlSignalsTestIoHandler); | 173 DISALLOW_COPY_AND_ASSIGN(GetControlSignalsTestIoHandler); |
174 }; | 174 }; |
175 | 175 |
176 class ConfigurePortTestIoHandler : public TestIoHandlerBase { | 176 class ConfigurePortTestIoHandler : public TestIoHandlerBase { |
177 public: | 177 public: |
178 ConfigurePortTestIoHandler() {} | 178 ConfigurePortTestIoHandler() {} |
179 virtual bool ConfigurePort( | 179 virtual bool ConfigurePort( |
180 const device::serial::ConnectionOptions& options) OVERRIDE { | 180 const device::serial::ConnectionOptions& options) override { |
181 static const device::serial::ConnectionOptions expected_options[] = { | 181 static const device::serial::ConnectionOptions expected_options[] = { |
182 GenerateConnectionOptions(9600, | 182 GenerateConnectionOptions(9600, |
183 device::serial::DATA_BITS_EIGHT, | 183 device::serial::DATA_BITS_EIGHT, |
184 device::serial::PARITY_BIT_NO, | 184 device::serial::PARITY_BIT_NO, |
185 device::serial::STOP_BITS_ONE, | 185 device::serial::STOP_BITS_ONE, |
186 OPTIONAL_VALUE_FALSE), | 186 OPTIONAL_VALUE_FALSE), |
187 GenerateConnectionOptions(57600, | 187 GenerateConnectionOptions(57600, |
188 device::serial::DATA_BITS_NONE, | 188 device::serial::DATA_BITS_NONE, |
189 device::serial::PARITY_BIT_NONE, | 189 device::serial::PARITY_BIT_NONE, |
190 device::serial::STOP_BITS_NONE, | 190 device::serial::STOP_BITS_NONE, |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 private: | 253 private: |
254 virtual ~ConfigurePortTestIoHandler() {} | 254 virtual ~ConfigurePortTestIoHandler() {} |
255 | 255 |
256 DISALLOW_COPY_AND_ASSIGN(ConfigurePortTestIoHandler); | 256 DISALLOW_COPY_AND_ASSIGN(ConfigurePortTestIoHandler); |
257 }; | 257 }; |
258 | 258 |
259 class FlushTestIoHandler : public TestIoHandlerBase { | 259 class FlushTestIoHandler : public TestIoHandlerBase { |
260 public: | 260 public: |
261 FlushTestIoHandler() {} | 261 FlushTestIoHandler() {} |
262 | 262 |
263 virtual bool Flush() const OVERRIDE { | 263 virtual bool Flush() const override { |
264 record_call(); | 264 record_call(); |
265 return true; | 265 return true; |
266 } | 266 } |
267 | 267 |
268 private: | 268 private: |
269 virtual ~FlushTestIoHandler() {} | 269 virtual ~FlushTestIoHandler() {} |
270 | 270 |
271 DISALLOW_COPY_AND_ASSIGN(FlushTestIoHandler); | 271 DISALLOW_COPY_AND_ASSIGN(FlushTestIoHandler); |
272 }; | 272 }; |
273 | 273 |
274 class FailToConnectTestIoHandler : public TestIoHandlerBase { | 274 class FailToConnectTestIoHandler : public TestIoHandlerBase { |
275 public: | 275 public: |
276 FailToConnectTestIoHandler() {} | 276 FailToConnectTestIoHandler() {} |
277 virtual void Open(const std::string& port, | 277 virtual void Open(const std::string& port, |
278 const OpenCompleteCallback& callback) OVERRIDE { | 278 const OpenCompleteCallback& callback) override { |
279 callback.Run(false); | 279 callback.Run(false); |
280 return; | 280 return; |
281 } | 281 } |
282 | 282 |
283 private: | 283 private: |
284 virtual ~FailToConnectTestIoHandler() {} | 284 virtual ~FailToConnectTestIoHandler() {} |
285 | 285 |
286 DISALLOW_COPY_AND_ASSIGN(FailToConnectTestIoHandler); | 286 DISALLOW_COPY_AND_ASSIGN(FailToConnectTestIoHandler); |
287 }; | 287 }; |
288 | 288 |
289 class FailToGetInfoTestIoHandler : public TestIoHandlerBase { | 289 class FailToGetInfoTestIoHandler : public TestIoHandlerBase { |
290 public: | 290 public: |
291 explicit FailToGetInfoTestIoHandler(int times_to_succeed) | 291 explicit FailToGetInfoTestIoHandler(int times_to_succeed) |
292 : times_to_succeed_(times_to_succeed) {} | 292 : times_to_succeed_(times_to_succeed) {} |
293 virtual device::serial::ConnectionInfoPtr GetPortInfo() const OVERRIDE { | 293 virtual device::serial::ConnectionInfoPtr GetPortInfo() const override { |
294 if (times_to_succeed_-- > 0) | 294 if (times_to_succeed_-- > 0) |
295 return device::TestSerialIoHandler::GetPortInfo(); | 295 return device::TestSerialIoHandler::GetPortInfo(); |
296 return device::serial::ConnectionInfoPtr(); | 296 return device::serial::ConnectionInfoPtr(); |
297 } | 297 } |
298 | 298 |
299 private: | 299 private: |
300 virtual ~FailToGetInfoTestIoHandler() {} | 300 virtual ~FailToGetInfoTestIoHandler() {} |
301 | 301 |
302 mutable int times_to_succeed_; | 302 mutable int times_to_succeed_; |
303 | 303 |
304 DISALLOW_COPY_AND_ASSIGN(FailToGetInfoTestIoHandler); | 304 DISALLOW_COPY_AND_ASSIGN(FailToGetInfoTestIoHandler); |
305 }; | 305 }; |
306 | 306 |
307 class SendErrorTestIoHandler : public TestIoHandlerBase { | 307 class SendErrorTestIoHandler : public TestIoHandlerBase { |
308 public: | 308 public: |
309 explicit SendErrorTestIoHandler(device::serial::SendError error) | 309 explicit SendErrorTestIoHandler(device::serial::SendError error) |
310 : error_(error) {} | 310 : error_(error) {} |
311 | 311 |
312 virtual void WriteImpl() OVERRIDE { QueueWriteCompleted(0, error_); } | 312 virtual void WriteImpl() override { QueueWriteCompleted(0, error_); } |
313 | 313 |
314 private: | 314 private: |
315 virtual ~SendErrorTestIoHandler() {} | 315 virtual ~SendErrorTestIoHandler() {} |
316 | 316 |
317 device::serial::SendError error_; | 317 device::serial::SendError error_; |
318 | 318 |
319 DISALLOW_COPY_AND_ASSIGN(SendErrorTestIoHandler); | 319 DISALLOW_COPY_AND_ASSIGN(SendErrorTestIoHandler); |
320 }; | 320 }; |
321 | 321 |
322 class FixedDataReceiveTestIoHandler : public TestIoHandlerBase { | 322 class FixedDataReceiveTestIoHandler : public TestIoHandlerBase { |
323 public: | 323 public: |
324 explicit FixedDataReceiveTestIoHandler(const std::string& data) | 324 explicit FixedDataReceiveTestIoHandler(const std::string& data) |
325 : data_(data) {} | 325 : data_(data) {} |
326 | 326 |
327 virtual void ReadImpl() OVERRIDE { | 327 virtual void ReadImpl() override { |
328 if (pending_read_buffer_len() < data_.size()) | 328 if (pending_read_buffer_len() < data_.size()) |
329 return; | 329 return; |
330 memcpy(pending_read_buffer(), data_.c_str(), data_.size()); | 330 memcpy(pending_read_buffer(), data_.c_str(), data_.size()); |
331 QueueReadCompleted(static_cast<uint32_t>(data_.size()), | 331 QueueReadCompleted(static_cast<uint32_t>(data_.size()), |
332 device::serial::RECEIVE_ERROR_NONE); | 332 device::serial::RECEIVE_ERROR_NONE); |
333 } | 333 } |
334 | 334 |
335 private: | 335 private: |
336 virtual ~FixedDataReceiveTestIoHandler() {} | 336 virtual ~FixedDataReceiveTestIoHandler() {} |
337 | 337 |
338 const std::string data_; | 338 const std::string data_; |
339 | 339 |
340 DISALLOW_COPY_AND_ASSIGN(FixedDataReceiveTestIoHandler); | 340 DISALLOW_COPY_AND_ASSIGN(FixedDataReceiveTestIoHandler); |
341 }; | 341 }; |
342 | 342 |
343 class ReceiveErrorTestIoHandler : public TestIoHandlerBase { | 343 class ReceiveErrorTestIoHandler : public TestIoHandlerBase { |
344 public: | 344 public: |
345 explicit ReceiveErrorTestIoHandler(device::serial::ReceiveError error) | 345 explicit ReceiveErrorTestIoHandler(device::serial::ReceiveError error) |
346 : error_(error) {} | 346 : error_(error) {} |
347 | 347 |
348 virtual void ReadImpl() OVERRIDE { QueueReadCompleted(0, error_); } | 348 virtual void ReadImpl() override { QueueReadCompleted(0, error_); } |
349 | 349 |
350 private: | 350 private: |
351 virtual ~ReceiveErrorTestIoHandler() {} | 351 virtual ~ReceiveErrorTestIoHandler() {} |
352 | 352 |
353 device::serial::ReceiveError error_; | 353 device::serial::ReceiveError error_; |
354 | 354 |
355 DISALLOW_COPY_AND_ASSIGN(ReceiveErrorTestIoHandler); | 355 DISALLOW_COPY_AND_ASSIGN(ReceiveErrorTestIoHandler); |
356 }; | 356 }; |
357 | 357 |
358 class SendDataWithErrorIoHandler : public TestIoHandlerBase { | 358 class SendDataWithErrorIoHandler : public TestIoHandlerBase { |
359 public: | 359 public: |
360 SendDataWithErrorIoHandler() : sent_error_(false) {} | 360 SendDataWithErrorIoHandler() : sent_error_(false) {} |
361 virtual void WriteImpl() OVERRIDE { | 361 virtual void WriteImpl() override { |
362 if (sent_error_) { | 362 if (sent_error_) { |
363 WriteCompleted(pending_write_buffer_len(), | 363 WriteCompleted(pending_write_buffer_len(), |
364 device::serial::SEND_ERROR_NONE); | 364 device::serial::SEND_ERROR_NONE); |
365 return; | 365 return; |
366 } | 366 } |
367 sent_error_ = true; | 367 sent_error_ = true; |
368 // We expect the JS test code to send a 4 byte buffer. | 368 // We expect the JS test code to send a 4 byte buffer. |
369 ASSERT_LT(2u, pending_write_buffer_len()); | 369 ASSERT_LT(2u, pending_write_buffer_len()); |
370 WriteCompleted(2, device::serial::SEND_ERROR_SYSTEM_ERROR); | 370 WriteCompleted(2, device::serial::SEND_ERROR_SYSTEM_ERROR); |
371 } | 371 } |
372 | 372 |
373 private: | 373 private: |
374 virtual ~SendDataWithErrorIoHandler() {} | 374 virtual ~SendDataWithErrorIoHandler() {} |
375 | 375 |
376 bool sent_error_; | 376 bool sent_error_; |
377 | 377 |
378 DISALLOW_COPY_AND_ASSIGN(SendDataWithErrorIoHandler); | 378 DISALLOW_COPY_AND_ASSIGN(SendDataWithErrorIoHandler); |
379 }; | 379 }; |
380 | 380 |
381 class BlockSendsForeverSendIoHandler : public TestIoHandlerBase { | 381 class BlockSendsForeverSendIoHandler : public TestIoHandlerBase { |
382 public: | 382 public: |
383 BlockSendsForeverSendIoHandler() {} | 383 BlockSendsForeverSendIoHandler() {} |
384 virtual void WriteImpl() OVERRIDE {} | 384 virtual void WriteImpl() override {} |
385 | 385 |
386 private: | 386 private: |
387 virtual ~BlockSendsForeverSendIoHandler() {} | 387 virtual ~BlockSendsForeverSendIoHandler() {} |
388 | 388 |
389 DISALLOW_COPY_AND_ASSIGN(BlockSendsForeverSendIoHandler); | 389 DISALLOW_COPY_AND_ASSIGN(BlockSendsForeverSendIoHandler); |
390 }; | 390 }; |
391 | 391 |
392 } // namespace | 392 } // namespace |
393 | 393 |
394 class SerialApiTest : public ApiTestBase { | 394 class SerialApiTest : public ApiTestBase { |
395 public: | 395 public: |
396 SerialApiTest() {} | 396 SerialApiTest() {} |
397 | 397 |
398 virtual void SetUp() OVERRIDE { | 398 virtual void SetUp() override { |
399 ApiTestBase::SetUp(); | 399 ApiTestBase::SetUp(); |
400 env()->RegisterModule("async_waiter", IDR_ASYNC_WAITER_JS); | 400 env()->RegisterModule("async_waiter", IDR_ASYNC_WAITER_JS); |
401 env()->RegisterModule("data_receiver", IDR_DATA_RECEIVER_JS); | 401 env()->RegisterModule("data_receiver", IDR_DATA_RECEIVER_JS); |
402 env()->RegisterModule("data_sender", IDR_DATA_SENDER_JS); | 402 env()->RegisterModule("data_sender", IDR_DATA_SENDER_JS); |
403 env()->RegisterModule("serial", IDR_SERIAL_CUSTOM_BINDINGS_JS); | 403 env()->RegisterModule("serial", IDR_SERIAL_CUSTOM_BINDINGS_JS); |
404 env()->RegisterModule("serial_service", IDR_SERIAL_SERVICE_JS); | 404 env()->RegisterModule("serial_service", IDR_SERIAL_SERVICE_JS); |
405 env()->RegisterModule("device/serial/data_stream.mojom", | 405 env()->RegisterModule("device/serial/data_stream.mojom", |
406 IDR_DATA_STREAM_MOJOM_JS); | 406 IDR_DATA_STREAM_MOJOM_JS); |
407 env()->RegisterModule("device/serial/data_stream_serialization.mojom", | 407 env()->RegisterModule("device/serial/data_stream_serialization.mojom", |
408 IDR_DATA_STREAM_SERIALIZATION_MOJOM_JS); | 408 IDR_DATA_STREAM_SERIALIZATION_MOJOM_JS); |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
610 | 610 |
611 TEST_F(SerialApiTest, SetPausedUnknownConnectionId) { | 611 TEST_F(SerialApiTest, SetPausedUnknownConnectionId) { |
612 RunTest("serial_unittest.js", "testSetPausedUnknownConnectionId"); | 612 RunTest("serial_unittest.js", "testSetPausedUnknownConnectionId"); |
613 } | 613 } |
614 | 614 |
615 TEST_F(SerialApiTest, SendUnknownConnectionId) { | 615 TEST_F(SerialApiTest, SendUnknownConnectionId) { |
616 RunTest("serial_unittest.js", "testSendUnknownConnectionId"); | 616 RunTest("serial_unittest.js", "testSendUnknownConnectionId"); |
617 } | 617 } |
618 | 618 |
619 } // namespace extensions | 619 } // namespace extensions |
OLD | NEW |