/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim:set ts=2 sw=2 sts=2 et cindent: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef mozilla_dom_TestSerialPlatformService_h #define mozilla_dom_TestSerialPlatformService_h #include "mozilla/dom/SerialPlatformService.h" #include "nsTArray.h" namespace mozilla::dom { struct MockSerialPort { IPCSerialPortInfo mInfo; bool mIsOpen = false; IPCSerialOptions mOptions; IPCSerialOutputSignals mOutputSignals = {Some(false), Some(false), Some(false)}; nsTArray mBuffer; }; class TestSerialPlatformService final : public SerialPlatformService { public: TestSerialPlatformService(); void Shutdown() override; void AddMockDevice(const nsString& aId, const nsString& aPath, uint16_t aVendorId = 0, uint16_t aProductId = 0); void SimulateDeviceConnection(const nsString& aId, const nsString& aPath, uint16_t aVendorId = 0, uint16_t aProductId = 0); void SimulateDeviceDisconnection(const nsString& aId); void RemoveAllMockDevices(); void ResetToDefaultMockDevices(); virtual TestSerialPlatformService* AsTestService() override; private: ~TestSerialPlatformService() override = default; nsresult EnumeratePortsImpl(SerialPortList& aPorts) override; nsresult OpenImpl(const nsString& aPortId, const IPCSerialOptions& aOptions) override; nsresult CloseImpl(const nsString& aPortId) override; nsresult ReadImpl(const nsString& aPortId, Span aBuf, uint32_t& aBytesRead) override; nsresult WriteImpl(const nsString& aPortId, Span aData) override; nsresult DrainImpl(const nsString& aPortId) override; nsresult FlushImpl(const nsString& aPortId, bool aReceive) override; nsresult SetSignalsImpl(const nsString& aPortId, const IPCSerialOutputSignals& aSignals) override; nsresult GetSignalsImpl(const nsString& aPortId, IPCSerialInputSignals& aSignals) override; MockSerialPort* FindPort(const nsString& aPortId); void RemoveMockDevice(const nsString& aId); MockSerialPort CreateMockPort(const nsString& aId, const nsString& aPath, uint16_t aVendorId, uint16_t aProductId); void AddDefaultMockPorts(); nsTArray mMockPorts; }; } // namespace mozilla::dom #endif // mozilla_dom_TestSerialPlatformService_h