Chromium Code Reviews| 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 |