#include "device/serial/serial_device_enumerator.h"
#include "device/serial/serial_service_impl.h"
#include "device/serial/test_serial_io_handler.h"
+#include "extensions/common/mojo/keep_alive.mojom.h"
#include "extensions/renderer/api_test_base.h"
#include "grit/extensions_renderer_resources.h"
namespace {
class FakeSerialDeviceEnumerator : public device::SerialDeviceEnumerator {
- virtual mojo::Array<device::serial::DeviceInfoPtr> GetDevices() OVERRIDE {
+ mojo::Array<device::serial::DeviceInfoPtr> GetDevices() override {
mojo::Array<device::serial::DeviceInfoPtr> result(3);
result[0] = device::serial::DeviceInfo::New();
result[0]->path = "device";
size_t num_calls() const { return calls_; }
protected:
- virtual ~TestIoHandlerBase() {}
+ ~TestIoHandlerBase() override {}
void record_call() const { calls_++; }
private:
public:
SetControlSignalsTestIoHandler() {}
- virtual bool SetControlSignals(
- const device::serial::HostControlSignals& signals) OVERRIDE {
+ bool SetControlSignals(
+ const device::serial::HostControlSignals& signals) override {
static const device::serial::HostControlSignals expected_signals[] = {
GenerateControlSignals(OPTIONAL_VALUE_UNSET, OPTIONAL_VALUE_UNSET),
GenerateControlSignals(OPTIONAL_VALUE_FALSE, OPTIONAL_VALUE_UNSET),
}
private:
- virtual ~SetControlSignalsTestIoHandler() {}
+ ~SetControlSignalsTestIoHandler() override {}
DISALLOW_COPY_AND_ASSIGN(SetControlSignalsTestIoHandler);
};
public:
GetControlSignalsTestIoHandler() {}
- virtual device::serial::DeviceControlSignalsPtr GetControlSignals()
- const OVERRIDE {
+ device::serial::DeviceControlSignalsPtr GetControlSignals() const override {
device::serial::DeviceControlSignalsPtr signals(
device::serial::DeviceControlSignals::New());
signals->dcd = num_calls() & 1;
}
private:
- virtual ~GetControlSignalsTestIoHandler() {}
+ ~GetControlSignalsTestIoHandler() override {}
DISALLOW_COPY_AND_ASSIGN(GetControlSignalsTestIoHandler);
};
class ConfigurePortTestIoHandler : public TestIoHandlerBase {
public:
ConfigurePortTestIoHandler() {}
- virtual bool ConfigurePort(
- const device::serial::ConnectionOptions& options) OVERRIDE {
+ bool ConfigurePort(
+ const device::serial::ConnectionOptions& options) override {
static const device::serial::ConnectionOptions expected_options[] = {
GenerateConnectionOptions(9600,
device::serial::DATA_BITS_EIGHT,
}
private:
- virtual ~ConfigurePortTestIoHandler() {}
+ ~ConfigurePortTestIoHandler() override {}
DISALLOW_COPY_AND_ASSIGN(ConfigurePortTestIoHandler);
};
public:
FlushTestIoHandler() {}
- virtual bool Flush() const OVERRIDE {
+ bool Flush() const override {
record_call();
return true;
}
private:
- virtual ~FlushTestIoHandler() {}
+ ~FlushTestIoHandler() override {}
DISALLOW_COPY_AND_ASSIGN(FlushTestIoHandler);
};
class FailToConnectTestIoHandler : public TestIoHandlerBase {
public:
FailToConnectTestIoHandler() {}
- virtual void Open(const std::string& port,
- const OpenCompleteCallback& callback) OVERRIDE {
+ void Open(const std::string& port,
+ const OpenCompleteCallback& callback) override {
callback.Run(false);
return;
}
private:
- virtual ~FailToConnectTestIoHandler() {}
+ ~FailToConnectTestIoHandler() override {}
DISALLOW_COPY_AND_ASSIGN(FailToConnectTestIoHandler);
};
public:
explicit FailToGetInfoTestIoHandler(int times_to_succeed)
: times_to_succeed_(times_to_succeed) {}
- virtual device::serial::ConnectionInfoPtr GetPortInfo() const OVERRIDE {
+ device::serial::ConnectionInfoPtr GetPortInfo() const override {
if (times_to_succeed_-- > 0)
return device::TestSerialIoHandler::GetPortInfo();
return device::serial::ConnectionInfoPtr();
}
private:
- virtual ~FailToGetInfoTestIoHandler() {}
+ ~FailToGetInfoTestIoHandler() override {}
mutable int times_to_succeed_;
explicit SendErrorTestIoHandler(device::serial::SendError error)
: error_(error) {}
- virtual void WriteImpl() OVERRIDE { QueueWriteCompleted(0, error_); }
+ void WriteImpl() override { QueueWriteCompleted(0, error_); }
private:
- virtual ~SendErrorTestIoHandler() {}
+ ~SendErrorTestIoHandler() override {}
device::serial::SendError error_;
explicit FixedDataReceiveTestIoHandler(const std::string& data)
: data_(data) {}
- virtual void ReadImpl() OVERRIDE {
+ void ReadImpl() override {
if (pending_read_buffer_len() < data_.size())
return;
memcpy(pending_read_buffer(), data_.c_str(), data_.size());
}
private:
- virtual ~FixedDataReceiveTestIoHandler() {}
+ ~FixedDataReceiveTestIoHandler() override {}
const std::string data_;
explicit ReceiveErrorTestIoHandler(device::serial::ReceiveError error)
: error_(error) {}
- virtual void ReadImpl() OVERRIDE { QueueReadCompleted(0, error_); }
+ void ReadImpl() override { QueueReadCompleted(0, error_); }
private:
- virtual ~ReceiveErrorTestIoHandler() {}
+ ~ReceiveErrorTestIoHandler() override {}
device::serial::ReceiveError error_;
class SendDataWithErrorIoHandler : public TestIoHandlerBase {
public:
SendDataWithErrorIoHandler() : sent_error_(false) {}
- virtual void WriteImpl() OVERRIDE {
+ void WriteImpl() override {
if (sent_error_) {
WriteCompleted(pending_write_buffer_len(),
device::serial::SEND_ERROR_NONE);
}
private:
- virtual ~SendDataWithErrorIoHandler() {}
+ ~SendDataWithErrorIoHandler() override {}
bool sent_error_;
class BlockSendsForeverSendIoHandler : public TestIoHandlerBase {
public:
BlockSendsForeverSendIoHandler() {}
- virtual void WriteImpl() OVERRIDE {}
+ void WriteImpl() override {}
private:
- virtual ~BlockSendsForeverSendIoHandler() {}
+ ~BlockSendsForeverSendIoHandler() override {}
DISALLOW_COPY_AND_ASSIGN(BlockSendsForeverSendIoHandler);
};
public:
SerialApiTest() {}
- virtual void SetUp() OVERRIDE {
+ void SetUp() override {
ApiTestBase::SetUp();
- env()->RegisterModule("async_waiter", IDR_ASYNC_WAITER_JS);
- env()->RegisterModule("data_receiver", IDR_DATA_RECEIVER_JS);
- env()->RegisterModule("data_sender", IDR_DATA_SENDER_JS);
env()->RegisterModule("serial", IDR_SERIAL_CUSTOM_BINDINGS_JS);
- env()->RegisterModule("serial_service", IDR_SERIAL_SERVICE_JS);
- env()->RegisterModule("device/serial/data_stream.mojom",
- IDR_DATA_STREAM_MOJOM_JS);
- env()->RegisterModule("device/serial/data_stream_serialization.mojom",
- IDR_DATA_STREAM_SERIALIZATION_MOJOM_JS);
- env()->RegisterModule("device/serial/serial.mojom", IDR_SERIAL_MOJOM_JS);
service_provider()->AddService<device::serial::SerialService>(base::Bind(
&SerialApiTest::CreateSerialService, base::Unretained(this)));
+ service_provider()->IgnoreServiceRequests<KeepAlive>();
}
scoped_refptr<TestIoHandlerBase> io_handler_;
RunTest("serial_unittest.js", "testGetInfo");
}
+TEST_F(SerialApiTest, GetInfoAfterSerialization) {
+ RunTest("serial_unittest.js", "testGetInfoAfterSerialization");
+}
+
TEST_F(SerialApiTest, GetInfoFailToGetPortInfo) {
io_handler_ = new FailToGetInfoTestIoHandler(1);
RunTest("serial_unittest.js", "testGetInfoFailToGetPortInfo");
EXPECT_EQ(11u, io_handler_->num_calls());
}
+TEST_F(SerialApiTest, UpdateAcrossSerialization) {
+ io_handler_ = new ConfigurePortTestIoHandler;
+ RunTest("serial_unittest.js", "testUpdateAcrossSerialization");
+ EXPECT_EQ(11u, io_handler_->num_calls());
+}
+
TEST_F(SerialApiTest, UpdateInvalidBitrate) {
io_handler_ = new ConfigurePortTestIoHandler;
RunTest("serial_unittest.js", "testUpdateInvalidBitrate");
RunTest("serial_unittest.js", "testEcho");
}
+TEST_F(SerialApiTest, EchoAfterSerialization) {
+ RunTest("serial_unittest.js", "testEchoAfterSerialization");
+}
+
TEST_F(SerialApiTest, SendDuringExistingSend) {
RunTest("serial_unittest.js", "testSendDuringExistingSend");
}
RunTest("serial_unittest.js", "testSendTimeout");
}
+TEST_F(SerialApiTest, SendTimeoutAfterSerialization) {
+ io_handler_ = new BlockSendsForeverSendIoHandler();
+ RunTest("serial_unittest.js", "testSendTimeoutAfterSerialization");
+}
+
TEST_F(SerialApiTest, DisableSendTimeout) {
io_handler_ = new BlockSendsForeverSendIoHandler();
RunTest("serial_unittest.js", "testDisableSendTimeout");
RunTest("serial_unittest.js", "testReceiveTimeout");
}
+TEST_F(SerialApiTest, ReceiveTimeoutAfterSerialization) {
+ RunTest("serial_unittest.js", "testReceiveTimeoutAfterSerialization");
+}
+
TEST_F(SerialApiTest, DisableReceiveTimeout) {
RunTest("serial_unittest.js", "testDisableReceiveTimeout");
}