blob: 0d942e3f260b0cd60bc0db14456de1d4a6064025 [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SERVICES_DEVICE_PUBLIC_INTERFACES_SERIAL_MOJOM_BLINK_H_
#define SERVICES_DEVICE_PUBLIC_INTERFACES_SERIAL_MOJOM_BLINK_H_
#include <stdint.h>
#include <limits>
#include <type_traits>
#include <utility>
#include "base/callback.h"
#include "base/macros.h"
#include "base/optional.h"
#include "mojo/public/cpp/bindings/mojo_features.h"
#if BUILDFLAG(MOJO_TRACE_ENABLED)
#include "base/trace_event/trace_event.h"
#endif
#include "mojo/public/cpp/bindings/clone_traits.h"
#include "mojo/public/cpp/bindings/equals_traits.h"
#include "mojo/public/cpp/bindings/lib/serialization.h"
#include "mojo/public/cpp/bindings/struct_ptr.h"
#include "mojo/public/cpp/bindings/struct_traits.h"
#include "mojo/public/cpp/bindings/union_traits.h"
#include "services/device/public/interfaces/serial.mojom-shared.h"
#include "mojo/public/cpp/bindings/lib/wtf_clone_equals_util.h"
#include "mojo/public/cpp/bindings/lib/wtf_hash_util.h"
#include "third_party/WebKit/Source/platform/mojo/RevocableInterfacePtr.h"
#include "third_party/WebKit/Source/platform/wtf/HashFunctions.h"
#include "third_party/WebKit/Source/platform/wtf/Optional.h"
#include "third_party/WebKit/Source/platform/wtf/text/WTFString.h"
#include "mojo/public/cpp/bindings/associated_interface_ptr.h"
#include "mojo/public/cpp/bindings/associated_interface_ptr_info.h"
#include "mojo/public/cpp/bindings/associated_interface_request.h"
#include "mojo/public/cpp/bindings/interface_ptr.h"
#include "mojo/public/cpp/bindings/interface_request.h"
#include "mojo/public/cpp/bindings/lib/control_message_handler.h"
#include "mojo/public/cpp/bindings/raw_ptr_impl_ref_traits.h"
#include "mojo/public/cpp/bindings/thread_safe_interface_ptr.h"
#include "third_party/WebKit/Source/platform/mojo/RevocableInterfacePtr.h"
#include "mojo/public/cpp/bindings/lib/native_enum_serialization.h"
#include "mojo/public/cpp/bindings/lib/native_struct_serialization.h"
#include "third_party/WebKit/public/platform/WebCommon.h"
namespace WTF {
struct device_mojom_internal_SerialSendError_DataHashFn {
static unsigned GetHash(const ::device::mojom::SerialSendError& value) {
using utype = std::underlying_type<::device::mojom::SerialSendError>::type;
return DefaultHash<utype>::Hash().GetHash(static_cast<utype>(value));
}
static bool Equal(const ::device::mojom::SerialSendError& left, const ::device::mojom::SerialSendError& right) {
return left == right;
}
static const bool safe_to_compare_to_empty_or_deleted = true;
};
template <>
struct DefaultHash<::device::mojom::SerialSendError> {
using Hash = device_mojom_internal_SerialSendError_DataHashFn;
};
template <>
struct HashTraits<::device::mojom::SerialSendError>
: public GenericHashTraits<::device::mojom::SerialSendError> {
static_assert(true,
"-1000000 is a reserved enum value");
static_assert(true,
"-1000001 is a reserved enum value");
static const bool hasIsEmptyValueFunction = true;
static bool IsEmptyValue(const ::device::mojom::SerialSendError& value) {
return value == static_cast<::device::mojom::SerialSendError>(-1000000);
}
static void ConstructDeletedValue(::device::mojom::SerialSendError& slot, bool) {
slot = static_cast<::device::mojom::SerialSendError>(-1000001);
}
static bool IsDeletedValue(const ::device::mojom::SerialSendError& value) {
return value == static_cast<::device::mojom::SerialSendError>(-1000001);
}
};
} // namespace WTF
namespace WTF {
struct device_mojom_internal_SerialReceiveError_DataHashFn {
static unsigned GetHash(const ::device::mojom::SerialReceiveError& value) {
using utype = std::underlying_type<::device::mojom::SerialReceiveError>::type;
return DefaultHash<utype>::Hash().GetHash(static_cast<utype>(value));
}
static bool Equal(const ::device::mojom::SerialReceiveError& left, const ::device::mojom::SerialReceiveError& right) {
return left == right;
}
static const bool safe_to_compare_to_empty_or_deleted = true;
};
template <>
struct DefaultHash<::device::mojom::SerialReceiveError> {
using Hash = device_mojom_internal_SerialReceiveError_DataHashFn;
};
template <>
struct HashTraits<::device::mojom::SerialReceiveError>
: public GenericHashTraits<::device::mojom::SerialReceiveError> {
static_assert(true,
"-1000000 is a reserved enum value");
static_assert(true,
"-1000001 is a reserved enum value");
static const bool hasIsEmptyValueFunction = true;
static bool IsEmptyValue(const ::device::mojom::SerialReceiveError& value) {
return value == static_cast<::device::mojom::SerialReceiveError>(-1000000);
}
static void ConstructDeletedValue(::device::mojom::SerialReceiveError& slot, bool) {
slot = static_cast<::device::mojom::SerialReceiveError>(-1000001);
}
static bool IsDeletedValue(const ::device::mojom::SerialReceiveError& value) {
return value == static_cast<::device::mojom::SerialReceiveError>(-1000001);
}
};
} // namespace WTF
namespace WTF {
struct device_mojom_internal_SerialDataBits_DataHashFn {
static unsigned GetHash(const ::device::mojom::SerialDataBits& value) {
using utype = std::underlying_type<::device::mojom::SerialDataBits>::type;
return DefaultHash<utype>::Hash().GetHash(static_cast<utype>(value));
}
static bool Equal(const ::device::mojom::SerialDataBits& left, const ::device::mojom::SerialDataBits& right) {
return left == right;
}
static const bool safe_to_compare_to_empty_or_deleted = true;
};
template <>
struct DefaultHash<::device::mojom::SerialDataBits> {
using Hash = device_mojom_internal_SerialDataBits_DataHashFn;
};
template <>
struct HashTraits<::device::mojom::SerialDataBits>
: public GenericHashTraits<::device::mojom::SerialDataBits> {
static_assert(true,
"-1000000 is a reserved enum value");
static_assert(true,
"-1000001 is a reserved enum value");
static const bool hasIsEmptyValueFunction = true;
static bool IsEmptyValue(const ::device::mojom::SerialDataBits& value) {
return value == static_cast<::device::mojom::SerialDataBits>(-1000000);
}
static void ConstructDeletedValue(::device::mojom::SerialDataBits& slot, bool) {
slot = static_cast<::device::mojom::SerialDataBits>(-1000001);
}
static bool IsDeletedValue(const ::device::mojom::SerialDataBits& value) {
return value == static_cast<::device::mojom::SerialDataBits>(-1000001);
}
};
} // namespace WTF
namespace WTF {
struct device_mojom_internal_SerialParityBit_DataHashFn {
static unsigned GetHash(const ::device::mojom::SerialParityBit& value) {
using utype = std::underlying_type<::device::mojom::SerialParityBit>::type;
return DefaultHash<utype>::Hash().GetHash(static_cast<utype>(value));
}
static bool Equal(const ::device::mojom::SerialParityBit& left, const ::device::mojom::SerialParityBit& right) {
return left == right;
}
static const bool safe_to_compare_to_empty_or_deleted = true;
};
template <>
struct DefaultHash<::device::mojom::SerialParityBit> {
using Hash = device_mojom_internal_SerialParityBit_DataHashFn;
};
template <>
struct HashTraits<::device::mojom::SerialParityBit>
: public GenericHashTraits<::device::mojom::SerialParityBit> {
static_assert(true,
"-1000000 is a reserved enum value");
static_assert(true,
"-1000001 is a reserved enum value");
static const bool hasIsEmptyValueFunction = true;
static bool IsEmptyValue(const ::device::mojom::SerialParityBit& value) {
return value == static_cast<::device::mojom::SerialParityBit>(-1000000);
}
static void ConstructDeletedValue(::device::mojom::SerialParityBit& slot, bool) {
slot = static_cast<::device::mojom::SerialParityBit>(-1000001);
}
static bool IsDeletedValue(const ::device::mojom::SerialParityBit& value) {
return value == static_cast<::device::mojom::SerialParityBit>(-1000001);
}
};
} // namespace WTF
namespace WTF {
struct device_mojom_internal_SerialStopBits_DataHashFn {
static unsigned GetHash(const ::device::mojom::SerialStopBits& value) {
using utype = std::underlying_type<::device::mojom::SerialStopBits>::type;
return DefaultHash<utype>::Hash().GetHash(static_cast<utype>(value));
}
static bool Equal(const ::device::mojom::SerialStopBits& left, const ::device::mojom::SerialStopBits& right) {
return left == right;
}
static const bool safe_to_compare_to_empty_or_deleted = true;
};
template <>
struct DefaultHash<::device::mojom::SerialStopBits> {
using Hash = device_mojom_internal_SerialStopBits_DataHashFn;
};
template <>
struct HashTraits<::device::mojom::SerialStopBits>
: public GenericHashTraits<::device::mojom::SerialStopBits> {
static_assert(true,
"-1000000 is a reserved enum value");
static_assert(true,
"-1000001 is a reserved enum value");
static const bool hasIsEmptyValueFunction = true;
static bool IsEmptyValue(const ::device::mojom::SerialStopBits& value) {
return value == static_cast<::device::mojom::SerialStopBits>(-1000000);
}
static void ConstructDeletedValue(::device::mojom::SerialStopBits& slot, bool) {
slot = static_cast<::device::mojom::SerialStopBits>(-1000001);
}
static bool IsDeletedValue(const ::device::mojom::SerialStopBits& value) {
return value == static_cast<::device::mojom::SerialStopBits>(-1000001);
}
};
} // namespace WTF
namespace device {
namespace mojom {
namespace blink {
using SerialSendError = SerialSendError; // Alias for definition in the parent namespace.
using SerialReceiveError = SerialReceiveError; // Alias for definition in the parent namespace.
using SerialDataBits = SerialDataBits; // Alias for definition in the parent namespace.
using SerialParityBit = SerialParityBit; // Alias for definition in the parent namespace.
using SerialStopBits = SerialStopBits; // Alias for definition in the parent namespace.
class SerialDeviceEnumerator;
using SerialDeviceEnumeratorPtr = mojo::InterfacePtr<SerialDeviceEnumerator>;
using RevocableSerialDeviceEnumeratorPtr = ::blink::RevocableInterfacePtr<SerialDeviceEnumerator>;
using SerialDeviceEnumeratorPtrInfo = mojo::InterfacePtrInfo<SerialDeviceEnumerator>;
using ThreadSafeSerialDeviceEnumeratorPtr =
mojo::ThreadSafeInterfacePtr<SerialDeviceEnumerator>;
using SerialDeviceEnumeratorRequest = mojo::InterfaceRequest<SerialDeviceEnumerator>;
using SerialDeviceEnumeratorAssociatedPtr =
mojo::AssociatedInterfacePtr<SerialDeviceEnumerator>;
using ThreadSafeSerialDeviceEnumeratorAssociatedPtr =
mojo::ThreadSafeAssociatedInterfacePtr<SerialDeviceEnumerator>;
using SerialDeviceEnumeratorAssociatedPtrInfo =
mojo::AssociatedInterfacePtrInfo<SerialDeviceEnumerator>;
using SerialDeviceEnumeratorAssociatedRequest =
mojo::AssociatedInterfaceRequest<SerialDeviceEnumerator>;
class SerialIoHandler;
using SerialIoHandlerPtr = mojo::InterfacePtr<SerialIoHandler>;
using RevocableSerialIoHandlerPtr = ::blink::RevocableInterfacePtr<SerialIoHandler>;
using SerialIoHandlerPtrInfo = mojo::InterfacePtrInfo<SerialIoHandler>;
using ThreadSafeSerialIoHandlerPtr =
mojo::ThreadSafeInterfacePtr<SerialIoHandler>;
using SerialIoHandlerRequest = mojo::InterfaceRequest<SerialIoHandler>;
using SerialIoHandlerAssociatedPtr =
mojo::AssociatedInterfacePtr<SerialIoHandler>;
using ThreadSafeSerialIoHandlerAssociatedPtr =
mojo::ThreadSafeAssociatedInterfacePtr<SerialIoHandler>;
using SerialIoHandlerAssociatedPtrInfo =
mojo::AssociatedInterfacePtrInfo<SerialIoHandler>;
using SerialIoHandlerAssociatedRequest =
mojo::AssociatedInterfaceRequest<SerialIoHandler>;
class SerialDeviceInfo;
using SerialDeviceInfoPtr = mojo::StructPtr<SerialDeviceInfo>;
class SerialConnectionOptions;
using SerialConnectionOptionsPtr = mojo::StructPtr<SerialConnectionOptions>;
class SerialConnectionInfo;
using SerialConnectionInfoPtr = mojo::StructPtr<SerialConnectionInfo>;
class SerialHostControlSignals;
using SerialHostControlSignalsPtr = mojo::InlinedStructPtr<SerialHostControlSignals>;
class SerialDeviceControlSignals;
using SerialDeviceControlSignalsPtr = mojo::InlinedStructPtr<SerialDeviceControlSignals>;
class SerialDeviceEnumeratorProxy;
template <typename ImplRefTraits>
class SerialDeviceEnumeratorStub;
class SerialDeviceEnumeratorRequestValidator;
class SerialDeviceEnumeratorResponseValidator;
class BLINK_PLATFORM_EXPORT SerialDeviceEnumerator
: public SerialDeviceEnumeratorInterfaceBase {
public:
static const char Name_[];
static constexpr uint32_t Version_ = 0;
static constexpr bool PassesAssociatedKinds_ = false;
static constexpr bool HasSyncMethods_ = false;
using Proxy_ = SerialDeviceEnumeratorProxy;
template <typename ImplRefTraits>
using Stub_ = SerialDeviceEnumeratorStub<ImplRefTraits>;
using RequestValidator_ = SerialDeviceEnumeratorRequestValidator;
using ResponseValidator_ = SerialDeviceEnumeratorResponseValidator;
enum MethodMinVersions : uint32_t {
kGetDevicesMinVersion = 0,
};
virtual ~SerialDeviceEnumerator() {}
using GetDevicesCallback = base::OnceCallback<void(WTF::Vector<SerialDeviceInfoPtr>)>;
virtual void GetDevices(GetDevicesCallback callback) = 0;
};
class BLINK_PLATFORM_EXPORT SerialDeviceEnumeratorInterceptorForTesting : public SerialDeviceEnumerator {
virtual SerialDeviceEnumerator* GetForwardingInterface() = 0;
void GetDevices(GetDevicesCallback callback) override;
};
class BLINK_PLATFORM_EXPORT SerialDeviceEnumeratorAsyncWaiter {
public:
explicit SerialDeviceEnumeratorAsyncWaiter(SerialDeviceEnumerator* proxy);
~SerialDeviceEnumeratorAsyncWaiter();
void GetDevices(
WTF::Vector<SerialDeviceInfoPtr>* out_devices);
private:
SerialDeviceEnumerator* const proxy_;
DISALLOW_COPY_AND_ASSIGN(SerialDeviceEnumeratorAsyncWaiter);
};
class SerialIoHandlerProxy;
template <typename ImplRefTraits>
class SerialIoHandlerStub;
class SerialIoHandlerRequestValidator;
class SerialIoHandlerResponseValidator;
class BLINK_PLATFORM_EXPORT SerialIoHandler
: public SerialIoHandlerInterfaceBase {
public:
static const char Name_[];
static constexpr uint32_t Version_ = 0;
static constexpr bool PassesAssociatedKinds_ = false;
static constexpr bool HasSyncMethods_ = false;
using Proxy_ = SerialIoHandlerProxy;
template <typename ImplRefTraits>
using Stub_ = SerialIoHandlerStub<ImplRefTraits>;
using RequestValidator_ = SerialIoHandlerRequestValidator;
using ResponseValidator_ = SerialIoHandlerResponseValidator;
enum MethodMinVersions : uint32_t {
kOpenMinVersion = 0,
kReadMinVersion = 0,
kWriteMinVersion = 0,
kCancelReadMinVersion = 0,
kCancelWriteMinVersion = 0,
kFlushMinVersion = 0,
kGetControlSignalsMinVersion = 0,
kSetControlSignalsMinVersion = 0,
kConfigurePortMinVersion = 0,
kGetPortInfoMinVersion = 0,
kSetBreakMinVersion = 0,
kClearBreakMinVersion = 0,
};
virtual ~SerialIoHandler() {}
using OpenCallback = base::OnceCallback<void(bool)>;
virtual void Open(const WTF::String& port, SerialConnectionOptionsPtr options, OpenCallback callback) = 0;
using ReadCallback = base::OnceCallback<void(const WTF::Vector<uint8_t>&, SerialReceiveError)>;
virtual void Read(uint32_t bytes, ReadCallback callback) = 0;
using WriteCallback = base::OnceCallback<void(uint32_t, SerialSendError)>;
virtual void Write(const WTF::Vector<uint8_t>& data, WriteCallback callback) = 0;
virtual void CancelRead(SerialReceiveError reason) = 0;
virtual void CancelWrite(SerialSendError reason) = 0;
using FlushCallback = base::OnceCallback<void(bool)>;
virtual void Flush(FlushCallback callback) = 0;
using GetControlSignalsCallback = base::OnceCallback<void(SerialDeviceControlSignalsPtr)>;
virtual void GetControlSignals(GetControlSignalsCallback callback) = 0;
using SetControlSignalsCallback = base::OnceCallback<void(bool)>;
virtual void SetControlSignals(SerialHostControlSignalsPtr signals, SetControlSignalsCallback callback) = 0;
using ConfigurePortCallback = base::OnceCallback<void(bool)>;
virtual void ConfigurePort(SerialConnectionOptionsPtr options, ConfigurePortCallback callback) = 0;
using GetPortInfoCallback = base::OnceCallback<void(SerialConnectionInfoPtr)>;
virtual void GetPortInfo(GetPortInfoCallback callback) = 0;
using SetBreakCallback = base::OnceCallback<void(bool)>;
virtual void SetBreak(SetBreakCallback callback) = 0;
using ClearBreakCallback = base::OnceCallback<void(bool)>;
virtual void ClearBreak(ClearBreakCallback callback) = 0;
};
class BLINK_PLATFORM_EXPORT SerialIoHandlerInterceptorForTesting : public SerialIoHandler {
virtual SerialIoHandler* GetForwardingInterface() = 0;
void Open(const WTF::String& port, SerialConnectionOptionsPtr options, OpenCallback callback) override;
void Read(uint32_t bytes, ReadCallback callback) override;
void Write(const WTF::Vector<uint8_t>& data, WriteCallback callback) override;
void CancelRead(SerialReceiveError reason) override;
void CancelWrite(SerialSendError reason) override;
void Flush(FlushCallback callback) override;
void GetControlSignals(GetControlSignalsCallback callback) override;
void SetControlSignals(SerialHostControlSignalsPtr signals, SetControlSignalsCallback callback) override;
void ConfigurePort(SerialConnectionOptionsPtr options, ConfigurePortCallback callback) override;
void GetPortInfo(GetPortInfoCallback callback) override;
void SetBreak(SetBreakCallback callback) override;
void ClearBreak(ClearBreakCallback callback) override;
};
class BLINK_PLATFORM_EXPORT SerialIoHandlerAsyncWaiter {
public:
explicit SerialIoHandlerAsyncWaiter(SerialIoHandler* proxy);
~SerialIoHandlerAsyncWaiter();
void Open(
const WTF::String& port, SerialConnectionOptionsPtr options, bool* out_success);
void Read(
uint32_t bytes, WTF::Vector<uint8_t>* out_data, SerialReceiveError* out_error);
void Write(
const WTF::Vector<uint8_t>& data, uint32_t* out_bytes_written, SerialSendError* out_error);
void Flush(
bool* out_success);
void GetControlSignals(
SerialDeviceControlSignalsPtr* out_signals);
void SetControlSignals(
SerialHostControlSignalsPtr signals, bool* out_success);
void ConfigurePort(
SerialConnectionOptionsPtr options, bool* out_success);
void GetPortInfo(
SerialConnectionInfoPtr* out_info);
void SetBreak(
bool* out_success);
void ClearBreak(
bool* out_success);
private:
SerialIoHandler* const proxy_;
DISALLOW_COPY_AND_ASSIGN(SerialIoHandlerAsyncWaiter);
};
class BLINK_PLATFORM_EXPORT SerialDeviceEnumeratorProxy
: public SerialDeviceEnumerator {
public:
explicit SerialDeviceEnumeratorProxy(mojo::MessageReceiverWithResponder* receiver);
void GetDevices(GetDevicesCallback callback) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
class BLINK_PLATFORM_EXPORT SerialIoHandlerProxy
: public SerialIoHandler {
public:
explicit SerialIoHandlerProxy(mojo::MessageReceiverWithResponder* receiver);
void Open(const WTF::String& port, SerialConnectionOptionsPtr options, OpenCallback callback) final;
void Read(uint32_t bytes, ReadCallback callback) final;
void Write(const WTF::Vector<uint8_t>& data, WriteCallback callback) final;
void CancelRead(SerialReceiveError reason) final;
void CancelWrite(SerialSendError reason) final;
void Flush(FlushCallback callback) final;
void GetControlSignals(GetControlSignalsCallback callback) final;
void SetControlSignals(SerialHostControlSignalsPtr signals, SetControlSignalsCallback callback) final;
void ConfigurePort(SerialConnectionOptionsPtr options, ConfigurePortCallback callback) final;
void GetPortInfo(GetPortInfoCallback callback) final;
void SetBreak(SetBreakCallback callback) final;
void ClearBreak(ClearBreakCallback callback) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
class BLINK_PLATFORM_EXPORT SerialDeviceEnumeratorStubDispatch {
public:
static bool Accept(SerialDeviceEnumerator* impl, mojo::Message* message);
static bool AcceptWithResponder(
SerialDeviceEnumerator* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<SerialDeviceEnumerator>>
class SerialDeviceEnumeratorStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
SerialDeviceEnumeratorStub() {}
~SerialDeviceEnumeratorStub() override {}
void set_sink(ImplPointerType sink) { sink_ = std::move(sink); }
ImplPointerType& sink() { return sink_; }
bool Accept(mojo::Message* message) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return SerialDeviceEnumeratorStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return SerialDeviceEnumeratorStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class BLINK_PLATFORM_EXPORT SerialIoHandlerStubDispatch {
public:
static bool Accept(SerialIoHandler* impl, mojo::Message* message);
static bool AcceptWithResponder(
SerialIoHandler* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<SerialIoHandler>>
class SerialIoHandlerStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
SerialIoHandlerStub() {}
~SerialIoHandlerStub() override {}
void set_sink(ImplPointerType sink) { sink_ = std::move(sink); }
ImplPointerType& sink() { return sink_; }
bool Accept(mojo::Message* message) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return SerialIoHandlerStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return SerialIoHandlerStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class BLINK_PLATFORM_EXPORT SerialDeviceEnumeratorRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class BLINK_PLATFORM_EXPORT SerialIoHandlerRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class BLINK_PLATFORM_EXPORT SerialDeviceEnumeratorResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class BLINK_PLATFORM_EXPORT SerialIoHandlerResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class BLINK_PLATFORM_EXPORT SerialHostControlSignals {
public:
using DataView = SerialHostControlSignalsDataView;
using Data_ = internal::SerialHostControlSignals_Data;
template <typename... Args>
static SerialHostControlSignalsPtr New(Args&&... args) {
return SerialHostControlSignalsPtr(
WTF::in_place,
std::forward<Args>(args)...);
}
template <typename U>
static SerialHostControlSignalsPtr From(const U& u) {
return mojo::TypeConverter<SerialHostControlSignalsPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, SerialHostControlSignals>::Convert(*this);
}
SerialHostControlSignals();
SerialHostControlSignals(
bool dtr,
bool has_dtr,
bool rts,
bool has_rts);
~SerialHostControlSignals();
// Clone() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Clone() or copy
// constructor/assignment are available for members.
template <typename StructPtrType = SerialHostControlSignalsPtr>
SerialHostControlSignalsPtr Clone() const;
// Equals() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Equals() or == operator
// are available for members.
template <typename T,
typename std::enable_if<std::is_same<
T, SerialHostControlSignals>::value>::type* = nullptr>
bool Equals(const T& other) const;
size_t Hash(size_t seed) const;
template <typename UserType>
static WTF::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
SerialHostControlSignals::DataView, WTF::Vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
SerialHostControlSignals::DataView>(input);
}
// The returned Message is serialized only if the message is moved
// cross-process or cross-language. Otherwise if the message is Deserialized
// as the same UserType |input| will just be moved to |output| in
// DeserializeFromMessage.
template <typename UserType>
static mojo::Message WrapAsMessage(UserType input) {
return mojo::Message(std::make_unique<
internal::SerialHostControlSignals_UnserializedMessageContext<
UserType, SerialHostControlSignals::DataView>>(0, 0, std::move(input)));
}
template <typename UserType>
static bool Deserialize(const void* data,
size_t data_num_bytes,
UserType* output) {
return mojo::internal::DeserializeImpl<SerialHostControlSignals::DataView>(
data, data_num_bytes, std::vector<mojo::ScopedHandle>(), output, Validate);
}
template <typename UserType>
static bool Deserialize(const WTF::Vector<uint8_t>& input,
UserType* output) {
return SerialHostControlSignals::Deserialize(
input.size() == 0 ? nullptr : &input.front(), input.size(), output);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
auto context = input.TakeUnserializedContext<
internal::SerialHostControlSignals_UnserializedMessageContext<
UserType, SerialHostControlSignals::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<SerialHostControlSignals::DataView>(
input.payload(), input.payload_num_bytes(),
std::move(*input.mutable_handles()), output, Validate);
}
bool dtr;
bool has_dtr;
bool rts;
bool has_rts;
private:
static bool Validate(const void* data,
mojo::internal::ValidationContext* validation_context);
};
class BLINK_PLATFORM_EXPORT SerialDeviceControlSignals {
public:
using DataView = SerialDeviceControlSignalsDataView;
using Data_ = internal::SerialDeviceControlSignals_Data;
template <typename... Args>
static SerialDeviceControlSignalsPtr New(Args&&... args) {
return SerialDeviceControlSignalsPtr(
WTF::in_place,
std::forward<Args>(args)...);
}
template <typename U>
static SerialDeviceControlSignalsPtr From(const U& u) {
return mojo::TypeConverter<SerialDeviceControlSignalsPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, SerialDeviceControlSignals>::Convert(*this);
}
SerialDeviceControlSignals();
SerialDeviceControlSignals(
bool dcd,
bool cts,
bool ri,
bool dsr);
~SerialDeviceControlSignals();
// Clone() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Clone() or copy
// constructor/assignment are available for members.
template <typename StructPtrType = SerialDeviceControlSignalsPtr>
SerialDeviceControlSignalsPtr Clone() const;
// Equals() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Equals() or == operator
// are available for members.
template <typename T,
typename std::enable_if<std::is_same<
T, SerialDeviceControlSignals>::value>::type* = nullptr>
bool Equals(const T& other) const;
size_t Hash(size_t seed) const;
template <typename UserType>
static WTF::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
SerialDeviceControlSignals::DataView, WTF::Vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
SerialDeviceControlSignals::DataView>(input);
}
// The returned Message is serialized only if the message is moved
// cross-process or cross-language. Otherwise if the message is Deserialized
// as the same UserType |input| will just be moved to |output| in
// DeserializeFromMessage.
template <typename UserType>
static mojo::Message WrapAsMessage(UserType input) {
return mojo::Message(std::make_unique<
internal::SerialDeviceControlSignals_UnserializedMessageContext<
UserType, SerialDeviceControlSignals::DataView>>(0, 0, std::move(input)));
}
template <typename UserType>
static bool Deserialize(const void* data,
size_t data_num_bytes,
UserType* output) {
return mojo::internal::DeserializeImpl<SerialDeviceControlSignals::DataView>(
data, data_num_bytes, std::vector<mojo::ScopedHandle>(), output, Validate);
}
template <typename UserType>
static bool Deserialize(const WTF::Vector<uint8_t>& input,
UserType* output) {
return SerialDeviceControlSignals::Deserialize(
input.size() == 0 ? nullptr : &input.front(), input.size(), output);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
auto context = input.TakeUnserializedContext<
internal::SerialDeviceControlSignals_UnserializedMessageContext<
UserType, SerialDeviceControlSignals::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<SerialDeviceControlSignals::DataView>(
input.payload(), input.payload_num_bytes(),
std::move(*input.mutable_handles()), output, Validate);
}
bool dcd;
bool cts;
bool ri;
bool dsr;
private:
static bool Validate(const void* data,
mojo::internal::ValidationContext* validation_context);
};
class BLINK_PLATFORM_EXPORT SerialDeviceInfo {
public:
using DataView = SerialDeviceInfoDataView;
using Data_ = internal::SerialDeviceInfo_Data;
template <typename... Args>
static SerialDeviceInfoPtr New(Args&&... args) {
return SerialDeviceInfoPtr(
WTF::in_place,
std::forward<Args>(args)...);
}
template <typename U>
static SerialDeviceInfoPtr From(const U& u) {
return mojo::TypeConverter<SerialDeviceInfoPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, SerialDeviceInfo>::Convert(*this);
}
SerialDeviceInfo();
SerialDeviceInfo(
const WTF::String& path,
uint16_t vendor_id,
bool has_vendor_id,
uint16_t product_id,
bool has_product_id,
const WTF::String& display_name);
~SerialDeviceInfo();
// Clone() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Clone() or copy
// constructor/assignment are available for members.
template <typename StructPtrType = SerialDeviceInfoPtr>
SerialDeviceInfoPtr Clone() const;
// Equals() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Equals() or == operator
// are available for members.
template <typename T,
typename std::enable_if<std::is_same<
T, SerialDeviceInfo>::value>::type* = nullptr>
bool Equals(const T& other) const;
template <typename UserType>
static WTF::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
SerialDeviceInfo::DataView, WTF::Vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
SerialDeviceInfo::DataView>(input);
}
// The returned Message is serialized only if the message is moved
// cross-process or cross-language. Otherwise if the message is Deserialized
// as the same UserType |input| will just be moved to |output| in
// DeserializeFromMessage.
template <typename UserType>
static mojo::Message WrapAsMessage(UserType input) {
return mojo::Message(std::make_unique<
internal::SerialDeviceInfo_UnserializedMessageContext<
UserType, SerialDeviceInfo::DataView>>(0, 0, std::move(input)));
}
template <typename UserType>
static bool Deserialize(const void* data,
size_t data_num_bytes,
UserType* output) {
return mojo::internal::DeserializeImpl<SerialDeviceInfo::DataView>(
data, data_num_bytes, std::vector<mojo::ScopedHandle>(), output, Validate);
}
template <typename UserType>
static bool Deserialize(const WTF::Vector<uint8_t>& input,
UserType* output) {
return SerialDeviceInfo::Deserialize(
input.size() == 0 ? nullptr : &input.front(), input.size(), output);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
auto context = input.TakeUnserializedContext<
internal::SerialDeviceInfo_UnserializedMessageContext<
UserType, SerialDeviceInfo::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<SerialDeviceInfo::DataView>(
input.payload(), input.payload_num_bytes(),
std::move(*input.mutable_handles()), output, Validate);
}
WTF::String path;
uint16_t vendor_id;
bool has_vendor_id;
uint16_t product_id;
bool has_product_id;
WTF::String display_name;
private:
static bool Validate(const void* data,
mojo::internal::ValidationContext* validation_context);
};
class BLINK_PLATFORM_EXPORT SerialConnectionOptions {
public:
using DataView = SerialConnectionOptionsDataView;
using Data_ = internal::SerialConnectionOptions_Data;
template <typename... Args>
static SerialConnectionOptionsPtr New(Args&&... args) {
return SerialConnectionOptionsPtr(
WTF::in_place,
std::forward<Args>(args)...);
}
template <typename U>
static SerialConnectionOptionsPtr From(const U& u) {
return mojo::TypeConverter<SerialConnectionOptionsPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, SerialConnectionOptions>::Convert(*this);
}
SerialConnectionOptions();
SerialConnectionOptions(
uint32_t bitrate,
SerialDataBits data_bits,
SerialParityBit parity_bit,
SerialStopBits stop_bits,
bool cts_flow_control,
bool has_cts_flow_control);
~SerialConnectionOptions();
// Clone() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Clone() or copy
// constructor/assignment are available for members.
template <typename StructPtrType = SerialConnectionOptionsPtr>
SerialConnectionOptionsPtr Clone() const;
// Equals() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Equals() or == operator
// are available for members.
template <typename T,
typename std::enable_if<std::is_same<
T, SerialConnectionOptions>::value>::type* = nullptr>
bool Equals(const T& other) const;
size_t Hash(size_t seed) const;
template <typename UserType>
static WTF::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
SerialConnectionOptions::DataView, WTF::Vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
SerialConnectionOptions::DataView>(input);
}
// The returned Message is serialized only if the message is moved
// cross-process or cross-language. Otherwise if the message is Deserialized
// as the same UserType |input| will just be moved to |output| in
// DeserializeFromMessage.
template <typename UserType>
static mojo::Message WrapAsMessage(UserType input) {
return mojo::Message(std::make_unique<
internal::SerialConnectionOptions_UnserializedMessageContext<
UserType, SerialConnectionOptions::DataView>>(0, 0, std::move(input)));
}
template <typename UserType>
static bool Deserialize(const void* data,
size_t data_num_bytes,
UserType* output) {
return mojo::internal::DeserializeImpl<SerialConnectionOptions::DataView>(
data, data_num_bytes, std::vector<mojo::ScopedHandle>(), output, Validate);
}
template <typename UserType>
static bool Deserialize(const WTF::Vector<uint8_t>& input,
UserType* output) {
return SerialConnectionOptions::Deserialize(
input.size() == 0 ? nullptr : &input.front(), input.size(), output);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
auto context = input.TakeUnserializedContext<
internal::SerialConnectionOptions_UnserializedMessageContext<
UserType, SerialConnectionOptions::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<SerialConnectionOptions::DataView>(
input.payload(), input.payload_num_bytes(),
std::move(*input.mutable_handles()), output, Validate);
}
uint32_t bitrate;
SerialDataBits data_bits;
SerialParityBit parity_bit;
SerialStopBits stop_bits;
bool cts_flow_control;
bool has_cts_flow_control;
private:
static bool Validate(const void* data,
mojo::internal::ValidationContext* validation_context);
};
class BLINK_PLATFORM_EXPORT SerialConnectionInfo {
public:
using DataView = SerialConnectionInfoDataView;
using Data_ = internal::SerialConnectionInfo_Data;
template <typename... Args>
static SerialConnectionInfoPtr New(Args&&... args) {
return SerialConnectionInfoPtr(
WTF::in_place,
std::forward<Args>(args)...);
}
template <typename U>
static SerialConnectionInfoPtr From(const U& u) {
return mojo::TypeConverter<SerialConnectionInfoPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, SerialConnectionInfo>::Convert(*this);
}
SerialConnectionInfo();
SerialConnectionInfo(
uint32_t bitrate,
SerialDataBits data_bits,
SerialParityBit parity_bit,
SerialStopBits stop_bits,
bool cts_flow_control);
~SerialConnectionInfo();
// Clone() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Clone() or copy
// constructor/assignment are available for members.
template <typename StructPtrType = SerialConnectionInfoPtr>
SerialConnectionInfoPtr Clone() const;
// Equals() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Equals() or == operator
// are available for members.
template <typename T,
typename std::enable_if<std::is_same<
T, SerialConnectionInfo>::value>::type* = nullptr>
bool Equals(const T& other) const;
size_t Hash(size_t seed) const;
template <typename UserType>
static WTF::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
SerialConnectionInfo::DataView, WTF::Vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
SerialConnectionInfo::DataView>(input);
}
// The returned Message is serialized only if the message is moved
// cross-process or cross-language. Otherwise if the message is Deserialized
// as the same UserType |input| will just be moved to |output| in
// DeserializeFromMessage.
template <typename UserType>
static mojo::Message WrapAsMessage(UserType input) {
return mojo::Message(std::make_unique<
internal::SerialConnectionInfo_UnserializedMessageContext<
UserType, SerialConnectionInfo::DataView>>(0, 0, std::move(input)));
}
template <typename UserType>
static bool Deserialize(const void* data,
size_t data_num_bytes,
UserType* output) {
return mojo::internal::DeserializeImpl<SerialConnectionInfo::DataView>(
data, data_num_bytes, std::vector<mojo::ScopedHandle>(), output, Validate);
}
template <typename UserType>
static bool Deserialize(const WTF::Vector<uint8_t>& input,
UserType* output) {
return SerialConnectionInfo::Deserialize(
input.size() == 0 ? nullptr : &input.front(), input.size(), output);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
auto context = input.TakeUnserializedContext<
internal::SerialConnectionInfo_UnserializedMessageContext<
UserType, SerialConnectionInfo::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<SerialConnectionInfo::DataView>(
input.payload(), input.payload_num_bytes(),
std::move(*input.mutable_handles()), output, Validate);
}
uint32_t bitrate;
SerialDataBits data_bits;
SerialParityBit parity_bit;
SerialStopBits stop_bits;
bool cts_flow_control;
private:
static bool Validate(const void* data,
mojo::internal::ValidationContext* validation_context);
};
template <typename StructPtrType>
SerialDeviceInfoPtr SerialDeviceInfo::Clone() const {
return New(
mojo::Clone(path),
mojo::Clone(vendor_id),
mojo::Clone(has_vendor_id),
mojo::Clone(product_id),
mojo::Clone(has_product_id),
mojo::Clone(display_name)
);
}
template <typename T,
typename std::enable_if<std::is_same<
T, SerialDeviceInfo>::value>::type*>
bool SerialDeviceInfo::Equals(const T& other_struct) const {
if (!mojo::Equals(this->path, other_struct.path))
return false;
if (!mojo::Equals(this->vendor_id, other_struct.vendor_id))
return false;
if (!mojo::Equals(this->has_vendor_id, other_struct.has_vendor_id))
return false;
if (!mojo::Equals(this->product_id, other_struct.product_id))
return false;
if (!mojo::Equals(this->has_product_id, other_struct.has_product_id))
return false;
if (!mojo::Equals(this->display_name, other_struct.display_name))
return false;
return true;
}
template <typename StructPtrType>
SerialConnectionOptionsPtr SerialConnectionOptions::Clone() const {
return New(
mojo::Clone(bitrate),
mojo::Clone(data_bits),
mojo::Clone(parity_bit),
mojo::Clone(stop_bits),
mojo::Clone(cts_flow_control),
mojo::Clone(has_cts_flow_control)
);
}
template <typename T,
typename std::enable_if<std::is_same<
T, SerialConnectionOptions>::value>::type*>
bool SerialConnectionOptions::Equals(const T& other_struct) const {
if (!mojo::Equals(this->bitrate, other_struct.bitrate))
return false;
if (!mojo::Equals(this->data_bits, other_struct.data_bits))
return false;
if (!mojo::Equals(this->parity_bit, other_struct.parity_bit))
return false;
if (!mojo::Equals(this->stop_bits, other_struct.stop_bits))
return false;
if (!mojo::Equals(this->cts_flow_control, other_struct.cts_flow_control))
return false;
if (!mojo::Equals(this->has_cts_flow_control, other_struct.has_cts_flow_control))
return false;
return true;
}
template <typename StructPtrType>
SerialConnectionInfoPtr SerialConnectionInfo::Clone() const {
return New(
mojo::Clone(bitrate),
mojo::Clone(data_bits),
mojo::Clone(parity_bit),
mojo::Clone(stop_bits),
mojo::Clone(cts_flow_control)
);
}
template <typename T,
typename std::enable_if<std::is_same<
T, SerialConnectionInfo>::value>::type*>
bool SerialConnectionInfo::Equals(const T& other_struct) const {
if (!mojo::Equals(this->bitrate, other_struct.bitrate))
return false;
if (!mojo::Equals(this->data_bits, other_struct.data_bits))
return false;
if (!mojo::Equals(this->parity_bit, other_struct.parity_bit))
return false;
if (!mojo::Equals(this->stop_bits, other_struct.stop_bits))
return false;
if (!mojo::Equals(this->cts_flow_control, other_struct.cts_flow_control))
return false;
return true;
}
template <typename StructPtrType>
SerialHostControlSignalsPtr SerialHostControlSignals::Clone() const {
return New(
mojo::Clone(dtr),
mojo::Clone(has_dtr),
mojo::Clone(rts),
mojo::Clone(has_rts)
);
}
template <typename T,
typename std::enable_if<std::is_same<
T, SerialHostControlSignals>::value>::type*>
bool SerialHostControlSignals::Equals(const T& other_struct) const {
if (!mojo::Equals(this->dtr, other_struct.dtr))
return false;
if (!mojo::Equals(this->has_dtr, other_struct.has_dtr))
return false;
if (!mojo::Equals(this->rts, other_struct.rts))
return false;
if (!mojo::Equals(this->has_rts, other_struct.has_rts))
return false;
return true;
}
template <typename StructPtrType>
SerialDeviceControlSignalsPtr SerialDeviceControlSignals::Clone() const {
return New(
mojo::Clone(dcd),
mojo::Clone(cts),
mojo::Clone(ri),
mojo::Clone(dsr)
);
}
template <typename T,
typename std::enable_if<std::is_same<
T, SerialDeviceControlSignals>::value>::type*>
bool SerialDeviceControlSignals::Equals(const T& other_struct) const {
if (!mojo::Equals(this->dcd, other_struct.dcd))
return false;
if (!mojo::Equals(this->cts, other_struct.cts))
return false;
if (!mojo::Equals(this->ri, other_struct.ri))
return false;
if (!mojo::Equals(this->dsr, other_struct.dsr))
return false;
return true;
}
} // namespace blink
} // namespace mojom
} // namespace device
namespace mojo {
template <>
struct BLINK_PLATFORM_EXPORT StructTraits<::device::mojom::blink::SerialDeviceInfo::DataView,
::device::mojom::blink::SerialDeviceInfoPtr> {
static bool IsNull(const ::device::mojom::blink::SerialDeviceInfoPtr& input) { return !input; }
static void SetToNull(::device::mojom::blink::SerialDeviceInfoPtr* output) { output->reset(); }
static const decltype(::device::mojom::blink::SerialDeviceInfo::path)& path(
const ::device::mojom::blink::SerialDeviceInfoPtr& input) {
return input->path;
}
static decltype(::device::mojom::blink::SerialDeviceInfo::vendor_id) vendor_id(
const ::device::mojom::blink::SerialDeviceInfoPtr& input) {
return input->vendor_id;
}
static decltype(::device::mojom::blink::SerialDeviceInfo::has_vendor_id) has_vendor_id(
const ::device::mojom::blink::SerialDeviceInfoPtr& input) {
return input->has_vendor_id;
}
static decltype(::device::mojom::blink::SerialDeviceInfo::product_id) product_id(
const ::device::mojom::blink::SerialDeviceInfoPtr& input) {
return input->product_id;
}
static decltype(::device::mojom::blink::SerialDeviceInfo::has_product_id) has_product_id(
const ::device::mojom::blink::SerialDeviceInfoPtr& input) {
return input->has_product_id;
}
static const decltype(::device::mojom::blink::SerialDeviceInfo::display_name)& display_name(
const ::device::mojom::blink::SerialDeviceInfoPtr& input) {
return input->display_name;
}
static bool Read(::device::mojom::blink::SerialDeviceInfo::DataView input, ::device::mojom::blink::SerialDeviceInfoPtr* output);
};
template <>
struct BLINK_PLATFORM_EXPORT StructTraits<::device::mojom::blink::SerialConnectionOptions::DataView,
::device::mojom::blink::SerialConnectionOptionsPtr> {
static bool IsNull(const ::device::mojom::blink::SerialConnectionOptionsPtr& input) { return !input; }
static void SetToNull(::device::mojom::blink::SerialConnectionOptionsPtr* output) { output->reset(); }
static decltype(::device::mojom::blink::SerialConnectionOptions::bitrate) bitrate(
const ::device::mojom::blink::SerialConnectionOptionsPtr& input) {
return input->bitrate;
}
static decltype(::device::mojom::blink::SerialConnectionOptions::data_bits) data_bits(
const ::device::mojom::blink::SerialConnectionOptionsPtr& input) {
return input->data_bits;
}
static decltype(::device::mojom::blink::SerialConnectionOptions::parity_bit) parity_bit(
const ::device::mojom::blink::SerialConnectionOptionsPtr& input) {
return input->parity_bit;
}
static decltype(::device::mojom::blink::SerialConnectionOptions::stop_bits) stop_bits(
const ::device::mojom::blink::SerialConnectionOptionsPtr& input) {
return input->stop_bits;
}
static decltype(::device::mojom::blink::SerialConnectionOptions::cts_flow_control) cts_flow_control(
const ::device::mojom::blink::SerialConnectionOptionsPtr& input) {
return input->cts_flow_control;
}
static decltype(::device::mojom::blink::SerialConnectionOptions::has_cts_flow_control) has_cts_flow_control(
const ::device::mojom::blink::SerialConnectionOptionsPtr& input) {
return input->has_cts_flow_control;
}
static bool Read(::device::mojom::blink::SerialConnectionOptions::DataView input, ::device::mojom::blink::SerialConnectionOptionsPtr* output);
};
template <>
struct BLINK_PLATFORM_EXPORT StructTraits<::device::mojom::blink::SerialConnectionInfo::DataView,
::device::mojom::blink::SerialConnectionInfoPtr> {
static bool IsNull(const ::device::mojom::blink::SerialConnectionInfoPtr& input) { return !input; }
static void SetToNull(::device::mojom::blink::SerialConnectionInfoPtr* output) { output->reset(); }
static decltype(::device::mojom::blink::SerialConnectionInfo::bitrate) bitrate(
const ::device::mojom::blink::SerialConnectionInfoPtr& input) {
return input->bitrate;
}
static decltype(::device::mojom::blink::SerialConnectionInfo::data_bits) data_bits(
const ::device::mojom::blink::SerialConnectionInfoPtr& input) {
return input->data_bits;
}
static decltype(::device::mojom::blink::SerialConnectionInfo::parity_bit) parity_bit(
const ::device::mojom::blink::SerialConnectionInfoPtr& input) {
return input->parity_bit;
}
static decltype(::device::mojom::blink::SerialConnectionInfo::stop_bits) stop_bits(
const ::device::mojom::blink::SerialConnectionInfoPtr& input) {
return input->stop_bits;
}
static decltype(::device::mojom::blink::SerialConnectionInfo::cts_flow_control) cts_flow_control(
const ::device::mojom::blink::SerialConnectionInfoPtr& input) {
return input->cts_flow_control;
}
static bool Read(::device::mojom::blink::SerialConnectionInfo::DataView input, ::device::mojom::blink::SerialConnectionInfoPtr* output);
};
template <>
struct BLINK_PLATFORM_EXPORT StructTraits<::device::mojom::blink::SerialHostControlSignals::DataView,
::device::mojom::blink::SerialHostControlSignalsPtr> {
static bool IsNull(const ::device::mojom::blink::SerialHostControlSignalsPtr& input) { return !input; }
static void SetToNull(::device::mojom::blink::SerialHostControlSignalsPtr* output) { output->reset(); }
static decltype(::device::mojom::blink::SerialHostControlSignals::dtr) dtr(
const ::device::mojom::blink::SerialHostControlSignalsPtr& input) {
return input->dtr;
}
static decltype(::device::mojom::blink::SerialHostControlSignals::has_dtr) has_dtr(
const ::device::mojom::blink::SerialHostControlSignalsPtr& input) {
return input->has_dtr;
}
static decltype(::device::mojom::blink::SerialHostControlSignals::rts) rts(
const ::device::mojom::blink::SerialHostControlSignalsPtr& input) {
return input->rts;
}
static decltype(::device::mojom::blink::SerialHostControlSignals::has_rts) has_rts(
const ::device::mojom::blink::SerialHostControlSignalsPtr& input) {
return input->has_rts;
}
static bool Read(::device::mojom::blink::SerialHostControlSignals::DataView input, ::device::mojom::blink::SerialHostControlSignalsPtr* output);
};
template <>
struct BLINK_PLATFORM_EXPORT StructTraits<::device::mojom::blink::SerialDeviceControlSignals::DataView,
::device::mojom::blink::SerialDeviceControlSignalsPtr> {
static bool IsNull(const ::device::mojom::blink::SerialDeviceControlSignalsPtr& input) { return !input; }
static void SetToNull(::device::mojom::blink::SerialDeviceControlSignalsPtr* output) { output->reset(); }
static decltype(::device::mojom::blink::SerialDeviceControlSignals::dcd) dcd(
const ::device::mojom::blink::SerialDeviceControlSignalsPtr& input) {
return input->dcd;
}
static decltype(::device::mojom::blink::SerialDeviceControlSignals::cts) cts(
const ::device::mojom::blink::SerialDeviceControlSignalsPtr& input) {
return input->cts;
}
static decltype(::device::mojom::blink::SerialDeviceControlSignals::ri) ri(
const ::device::mojom::blink::SerialDeviceControlSignalsPtr& input) {
return input->ri;
}
static decltype(::device::mojom::blink::SerialDeviceControlSignals::dsr) dsr(
const ::device::mojom::blink::SerialDeviceControlSignalsPtr& input) {
return input->dsr;
}
static bool Read(::device::mojom::blink::SerialDeviceControlSignals::DataView input, ::device::mojom::blink::SerialDeviceControlSignalsPtr* output);
};
} // namespace mojo
#endif // SERVICES_DEVICE_PUBLIC_INTERFACES_SERIAL_MOJOM_BLINK_H_