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 namespace extensions { | 11 namespace extensions { |
12 | 12 |
raymes
2014/09/02 04:59:32
Make a note somewhere in this file of what these t
Sam McNally
2014/09/02 07:41:12
Done.
| |
13 namespace { | 13 namespace { |
14 | 14 |
15 class FakeSerialDeviceEnumerator : public device::SerialDeviceEnumerator { | 15 class FakeSerialDeviceEnumerator : public device::SerialDeviceEnumerator { |
16 virtual mojo::Array<device::serial::DeviceInfoPtr> GetDevices() OVERRIDE { | 16 virtual mojo::Array<device::serial::DeviceInfoPtr> GetDevices() OVERRIDE { |
17 mojo::Array<device::serial::DeviceInfoPtr> result(3); | 17 mojo::Array<device::serial::DeviceInfoPtr> result(3); |
18 result[0] = device::serial::DeviceInfo::New(); | 18 result[0] = device::serial::DeviceInfo::New(); |
19 result[0]->path = "device"; | 19 result[0]->path = "device"; |
20 result[0]->vendor_id = 1234; | 20 result[0]->vendor_id = 1234; |
21 result[0]->has_vendor_id = true; | 21 result[0]->has_vendor_id = true; |
22 result[0]->product_id = 5678; | 22 result[0]->product_id = 5678; |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
291 } | 291 } |
292 | 292 |
293 private: | 293 private: |
294 virtual ~FailToGetInfoTestIoHandler() {} | 294 virtual ~FailToGetInfoTestIoHandler() {} |
295 | 295 |
296 mutable int times_to_succeed_; | 296 mutable int times_to_succeed_; |
297 | 297 |
298 DISALLOW_COPY_AND_ASSIGN(FailToGetInfoTestIoHandler); | 298 DISALLOW_COPY_AND_ASSIGN(FailToGetInfoTestIoHandler); |
299 }; | 299 }; |
300 | 300 |
301 class SendErrorTestIoHandler : public TestIoHandlerBase { | |
302 public: | |
303 explicit SendErrorTestIoHandler(device::serial::SendError error) | |
304 : error_(error) {} | |
305 | |
306 virtual void WriteImpl() OVERRIDE { QueueWriteCompleted(0, error_); } | |
307 | |
308 private: | |
309 virtual ~SendErrorTestIoHandler() {} | |
310 | |
311 device::serial::SendError error_; | |
312 | |
313 DISALLOW_COPY_AND_ASSIGN(SendErrorTestIoHandler); | |
314 }; | |
315 | |
316 class FixedDataReceiveTestIoHandler : public TestIoHandlerBase { | |
317 public: | |
318 explicit FixedDataReceiveTestIoHandler(const std::string& data) | |
319 : data_(data) {} | |
320 | |
321 virtual void ReadImpl() OVERRIDE { | |
322 if (pending_read_buffer_len() < data_.size()) | |
323 return; | |
324 memcpy(pending_read_buffer(), data_.c_str(), data_.size()); | |
325 QueueReadCompleted(static_cast<uint32_t>(data_.size()), | |
326 device::serial::RECEIVE_ERROR_NONE); | |
327 } | |
328 | |
329 private: | |
330 virtual ~FixedDataReceiveTestIoHandler() {} | |
331 | |
332 const std::string data_; | |
333 | |
334 DISALLOW_COPY_AND_ASSIGN(FixedDataReceiveTestIoHandler); | |
335 }; | |
336 | |
337 class ReceiveErrorTestIoHandler : public TestIoHandlerBase { | |
338 public: | |
339 explicit ReceiveErrorTestIoHandler(device::serial::ReceiveError error) | |
340 : error_(error) {} | |
341 | |
342 virtual void ReadImpl() OVERRIDE { QueueReadCompleted(0, error_); } | |
343 | |
344 private: | |
345 virtual ~ReceiveErrorTestIoHandler() {} | |
346 | |
347 device::serial::ReceiveError error_; | |
348 | |
349 DISALLOW_COPY_AND_ASSIGN(ReceiveErrorTestIoHandler); | |
350 }; | |
351 | |
352 class SendDataWithErrorIoHandler : public TestIoHandlerBase { | |
353 public: | |
354 SendDataWithErrorIoHandler() : sent_error_(false) {} | |
355 virtual void WriteImpl() OVERRIDE { | |
356 if (sent_error_) { | |
357 WriteCompleted(pending_write_buffer_len(), | |
358 device::serial::SEND_ERROR_NONE); | |
359 return; | |
360 } | |
361 sent_error_ = true; | |
362 // We expect the JS test code to send a 4 byte buffer. | |
363 ASSERT_LT(2u, pending_write_buffer_len()); | |
364 WriteCompleted(2, device::serial::SEND_ERROR_SYSTEM_ERROR); | |
365 } | |
366 | |
367 private: | |
368 virtual ~SendDataWithErrorIoHandler() {} | |
369 | |
370 bool sent_error_; | |
371 | |
372 DISALLOW_COPY_AND_ASSIGN(SendDataWithErrorIoHandler); | |
373 }; | |
374 | |
375 class BlockSendsForeverSendIoHandler : public TestIoHandlerBase { | |
376 public: | |
377 BlockSendsForeverSendIoHandler() {} | |
378 virtual void WriteImpl() OVERRIDE {} | |
379 | |
380 private: | |
381 virtual ~BlockSendsForeverSendIoHandler() {} | |
382 | |
383 DISALLOW_COPY_AND_ASSIGN(BlockSendsForeverSendIoHandler); | |
384 }; | |
385 | |
301 } // namespace | 386 } // namespace |
302 | 387 |
303 class SerialApiTest : public ApiTestBase { | 388 class SerialApiTest : public ApiTestBase { |
304 public: | 389 public: |
305 SerialApiTest() {} | 390 SerialApiTest() {} |
306 | 391 |
307 virtual void SetUp() OVERRIDE { | 392 virtual void SetUp() OVERRIDE { |
308 ApiTestBase::SetUp(); | 393 ApiTestBase::SetUp(); |
394 env()->RegisterModule("async_waiter", IDR_ASYNC_WAITER_JS); | |
395 env()->RegisterModule("data_receiver", IDR_DATA_RECEIVER_JS); | |
396 env()->RegisterModule("data_sender", IDR_DATA_SENDER_JS); | |
309 env()->RegisterModule("serial", IDR_SERIAL_CUSTOM_BINDINGS_JS); | 397 env()->RegisterModule("serial", IDR_SERIAL_CUSTOM_BINDINGS_JS); |
310 env()->RegisterModule("serial_service", IDR_SERIAL_SERVICE_JS); | 398 env()->RegisterModule("serial_service", IDR_SERIAL_SERVICE_JS); |
311 env()->RegisterModule("device/serial/data_stream.mojom", | 399 env()->RegisterModule("device/serial/data_stream.mojom", |
312 IDR_DATA_STREAM_MOJOM_JS); | 400 IDR_DATA_STREAM_MOJOM_JS); |
313 env()->RegisterModule("device/serial/serial.mojom", IDR_SERIAL_MOJOM_JS); | 401 env()->RegisterModule("device/serial/serial.mojom", IDR_SERIAL_MOJOM_JS); |
314 service_provider()->AddService<device::serial::SerialService>(base::Bind( | 402 service_provider()->AddService<device::serial::SerialService>(base::Bind( |
315 &SerialApiTest::CreateSerialService, base::Unretained(this))); | 403 &SerialApiTest::CreateSerialService, base::Unretained(this))); |
316 } | 404 } |
317 | 405 |
318 virtual void TearDown() OVERRIDE { | 406 virtual void TearDown() OVERRIDE { |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
411 TEST_F(SerialApiTest, Flush) { | 499 TEST_F(SerialApiTest, Flush) { |
412 io_handler_ = new FlushTestIoHandler; | 500 io_handler_ = new FlushTestIoHandler; |
413 RunTest("serial_unittest.js", "testFlush"); | 501 RunTest("serial_unittest.js", "testFlush"); |
414 EXPECT_EQ(1u, io_handler_->num_calls()); | 502 EXPECT_EQ(1u, io_handler_->num_calls()); |
415 } | 503 } |
416 | 504 |
417 TEST_F(SerialApiTest, SetPaused) { | 505 TEST_F(SerialApiTest, SetPaused) { |
418 RunTest("serial_unittest.js", "testSetPaused"); | 506 RunTest("serial_unittest.js", "testSetPaused"); |
419 } | 507 } |
420 | 508 |
509 TEST_F(SerialApiTest, Echo) { | |
510 RunTest("serial_unittest.js", "testEcho"); | |
511 } | |
512 | |
513 TEST_F(SerialApiTest, SendDuringExistingSend) { | |
514 RunTest("serial_unittest.js", "testSendDuringExistingSend"); | |
515 } | |
516 | |
517 TEST_F(SerialApiTest, SendAfterSuccessfulSend) { | |
518 RunTest("serial_unittest.js", "testSendAfterSuccessfulSend"); | |
519 } | |
520 | |
521 TEST_F(SerialApiTest, SendPartialSuccessWithError) { | |
522 io_handler_ = new SendDataWithErrorIoHandler(); | |
523 RunTest("serial_unittest.js", "testSendPartialSuccessWithError"); | |
524 } | |
525 | |
526 TEST_F(SerialApiTest, SendTimeout) { | |
527 io_handler_ = new BlockSendsForeverSendIoHandler(); | |
528 RunTest("serial_unittest.js", "testSendTimeout"); | |
529 } | |
530 | |
531 TEST_F(SerialApiTest, DisableSendTimeout) { | |
532 io_handler_ = new BlockSendsForeverSendIoHandler(); | |
533 RunTest("serial_unittest.js", "testDisableSendTimeout"); | |
534 } | |
535 | |
536 TEST_F(SerialApiTest, PausedReceive) { | |
537 io_handler_ = new FixedDataReceiveTestIoHandler("data"); | |
538 RunTest("serial_unittest.js", "testPausedReceive"); | |
539 } | |
540 | |
541 TEST_F(SerialApiTest, PausedReceiveError) { | |
542 io_handler_ = | |
543 new ReceiveErrorTestIoHandler(device::serial::RECEIVE_ERROR_DEVICE_LOST); | |
544 RunTest("serial_unittest.js", "testPausedReceiveError"); | |
545 } | |
546 | |
547 TEST_F(SerialApiTest, ReceiveTimeout) { | |
548 RunTest("serial_unittest.js", "testReceiveTimeout"); | |
549 } | |
550 | |
551 TEST_F(SerialApiTest, DisableReceiveTimeout) { | |
552 RunTest("serial_unittest.js", "testDisableReceiveTimeout"); | |
553 } | |
554 | |
555 TEST_F(SerialApiTest, ReceiveErrorDisconnected) { | |
556 io_handler_ = | |
557 new ReceiveErrorTestIoHandler(device::serial::RECEIVE_ERROR_DISCONNECTED); | |
558 RunTest("serial_unittest.js", "testReceiveErrorDisconnected"); | |
559 } | |
560 | |
561 TEST_F(SerialApiTest, ReceiveErrorTimeout) { | |
562 io_handler_ = | |
563 new ReceiveErrorTestIoHandler(device::serial::RECEIVE_ERROR_TIMEOUT); | |
564 RunTest("serial_unittest.js", "testReceiveErrorTimeout"); | |
565 } | |
566 | |
567 TEST_F(SerialApiTest, ReceiveErrorDeviceLost) { | |
568 io_handler_ = | |
569 new ReceiveErrorTestIoHandler(device::serial::RECEIVE_ERROR_DEVICE_LOST); | |
570 RunTest("serial_unittest.js", "testReceiveErrorDeviceLost"); | |
571 } | |
572 | |
573 TEST_F(SerialApiTest, ReceiveErrorSystemError) { | |
574 io_handler_ = | |
575 new ReceiveErrorTestIoHandler(device::serial::RECEIVE_ERROR_SYSTEM_ERROR); | |
576 RunTest("serial_unittest.js", "testReceiveErrorSystemError"); | |
577 } | |
578 | |
579 TEST_F(SerialApiTest, SendErrorDisconnected) { | |
580 io_handler_ = | |
581 new SendErrorTestIoHandler(device::serial::SEND_ERROR_DISCONNECTED); | |
582 RunTest("serial_unittest.js", "testSendErrorDisconnected"); | |
583 } | |
584 | |
585 TEST_F(SerialApiTest, SendErrorTimeout) { | |
586 io_handler_ = new SendErrorTestIoHandler(device::serial::SEND_ERROR_TIMEOUT); | |
587 RunTest("serial_unittest.js", "testSendErrorTimeout"); | |
588 } | |
589 | |
590 TEST_F(SerialApiTest, SendErrorSystemError) { | |
591 io_handler_ = | |
592 new SendErrorTestIoHandler(device::serial::SEND_ERROR_SYSTEM_ERROR); | |
593 RunTest("serial_unittest.js", "testSendErrorSystemError"); | |
594 } | |
595 | |
421 TEST_F(SerialApiTest, DisconnectUnknownConnectionId) { | 596 TEST_F(SerialApiTest, DisconnectUnknownConnectionId) { |
422 RunTest("serial_unittest.js", "testDisconnectUnknownConnectionId"); | 597 RunTest("serial_unittest.js", "testDisconnectUnknownConnectionId"); |
423 } | 598 } |
424 | 599 |
425 TEST_F(SerialApiTest, GetInfoUnknownConnectionId) { | 600 TEST_F(SerialApiTest, GetInfoUnknownConnectionId) { |
426 RunTest("serial_unittest.js", "testGetInfoUnknownConnectionId"); | 601 RunTest("serial_unittest.js", "testGetInfoUnknownConnectionId"); |
427 } | 602 } |
428 | 603 |
429 TEST_F(SerialApiTest, UpdateUnknownConnectionId) { | 604 TEST_F(SerialApiTest, UpdateUnknownConnectionId) { |
430 RunTest("serial_unittest.js", "testUpdateUnknownConnectionId"); | 605 RunTest("serial_unittest.js", "testUpdateUnknownConnectionId"); |
431 } | 606 } |
432 | 607 |
433 TEST_F(SerialApiTest, SetControlSignalsUnknownConnectionId) { | 608 TEST_F(SerialApiTest, SetControlSignalsUnknownConnectionId) { |
434 RunTest("serial_unittest.js", "testSetControlSignalsUnknownConnectionId"); | 609 RunTest("serial_unittest.js", "testSetControlSignalsUnknownConnectionId"); |
435 } | 610 } |
436 | 611 |
437 TEST_F(SerialApiTest, GetControlSignalsUnknownConnectionId) { | 612 TEST_F(SerialApiTest, GetControlSignalsUnknownConnectionId) { |
438 RunTest("serial_unittest.js", "testGetControlSignalsUnknownConnectionId"); | 613 RunTest("serial_unittest.js", "testGetControlSignalsUnknownConnectionId"); |
439 } | 614 } |
440 | 615 |
441 TEST_F(SerialApiTest, FlushUnknownConnectionId) { | 616 TEST_F(SerialApiTest, FlushUnknownConnectionId) { |
442 RunTest("serial_unittest.js", "testFlushUnknownConnectionId"); | 617 RunTest("serial_unittest.js", "testFlushUnknownConnectionId"); |
443 } | 618 } |
444 | 619 |
445 TEST_F(SerialApiTest, SetPausedUnknownConnectionId) { | 620 TEST_F(SerialApiTest, SetPausedUnknownConnectionId) { |
446 RunTest("serial_unittest.js", "testSetPausedUnknownConnectionId"); | 621 RunTest("serial_unittest.js", "testSetPausedUnknownConnectionId"); |
447 } | 622 } |
448 | 623 |
624 TEST_F(SerialApiTest, SendUnknownConnectionId) { | |
625 RunTest("serial_unittest.js", "testSendUnknownConnectionId"); | |
626 } | |
627 | |
449 } // namespace extensions | 628 } // namespace extensions |
OLD | NEW |