Copy as Markdown

Other Tools

/* THIS FILE IS AUTOGENERATED FROM RTCIceCandidate.webidl BY Codegen.py - DO NOT EDIT */
#ifndef DOM_RTCICECANDIDATEBINDING_H_
#define DOM_RTCICECANDIDATEBINDING_H_
#include "js/CallAndConstruct.h"
#include "js/RootingAPI.h"
#include "js/TypeDecls.h"
#include "mozilla/ArrayUtils.h"
#include "mozilla/EnumTypeTraits.h"
#include "mozilla/Span.h"
#include "mozilla/dom/BindingDeclarations.h"
#include "mozilla/dom/CallbackInterface.h"
#include "mozilla/dom/Nullable.h"
#include "mozilla/dom/PrototypeList.h"
#include "mozilla/dom/ToJSValue.h"
#include "nsWeakReference.h"
namespace mozilla {
namespace dom {
struct NativePropertyHooks;
class ProtoAndIfaceCache;
class RTCIceCandidate;
struct RTCIceCandidateAtoms;
struct RTCIceCandidateInit;
struct RTCIceCandidateInitAtoms;
} // namespace dom
} // namespace mozilla
namespace mozilla {
namespace dom {
enum class RTCIceComponent : uint8_t {
Rtp,
Rtcp,
};
namespace binding_detail {
template <> struct EnumStrings<RTCIceComponent> {
static const nsLiteralCString Values[2];
};
} // namespace binding_detail
bool
ToJSValue(JSContext* aCx, RTCIceComponent aArgument, JS::MutableHandle<JS::Value> aValue);
enum class RTCIceProtocol : uint8_t {
Udp,
Tcp,
};
namespace binding_detail {
template <> struct EnumStrings<RTCIceProtocol> {
static const nsLiteralCString Values[2];
};
} // namespace binding_detail
bool
ToJSValue(JSContext* aCx, RTCIceProtocol aArgument, JS::MutableHandle<JS::Value> aValue);
enum class RTCIceCandidateType : uint8_t {
Host,
Srflx,
Prflx,
Relay,
};
namespace binding_detail {
template <> struct EnumStrings<RTCIceCandidateType> {
static const nsLiteralCString Values[4];
};
} // namespace binding_detail
bool
ToJSValue(JSContext* aCx, RTCIceCandidateType aArgument, JS::MutableHandle<JS::Value> aValue);
enum class RTCIceTcpCandidateType : uint8_t {
Active,
Passive,
So,
};
namespace binding_detail {
template <> struct EnumStrings<RTCIceTcpCandidateType> {
static const nsLiteralCString Values[3];
};
} // namespace binding_detail
bool
ToJSValue(JSContext* aCx, RTCIceTcpCandidateType aArgument, JS::MutableHandle<JS::Value> aValue);
struct RTCIceCandidateInit : public DictionaryBase
{
MOZ_INIT_OUTSIDE_CTOR nsString mCandidate;
MOZ_INIT_OUTSIDE_CTOR Nullable<uint16_t> mSdpMLineIndex;
MOZ_INIT_OUTSIDE_CTOR nsString mSdpMid;
MOZ_INIT_OUTSIDE_CTOR nsString mUsernameFragment;
RTCIceCandidateInit();
explicit inline RTCIceCandidateInit(const FastDictionaryInitializer& )
{
// Do nothing here; this is used by our "Fast" subclass
}
RTCIceCandidateInit(RTCIceCandidateInit&& aOther) = default;
explicit inline RTCIceCandidateInit(const RTCIceCandidateInit& aOther)
{
*this = aOther;
}
bool
Init(BindingCallContext& cx, JS::Handle<JS::Value> val, const char* sourceDescription = "Value", bool passedToJSImpl = false);
bool
Init(JSContext* cx_, JS::Handle<JS::Value> val, const char* sourceDescription = "Value", bool passedToJSImpl = false);
bool
ToObjectInternal(JSContext* cx, JS::MutableHandle<JS::Value> rval) const;
void
TraceDictionary(JSTracer* trc);
RTCIceCandidateInit&
operator=(const RTCIceCandidateInit& aOther);
bool
operator==(const RTCIceCandidateInit& aOther) const;
private:
static bool
InitIds(JSContext* cx, RTCIceCandidateInitAtoms* atomsCache);
};
namespace binding_detail {
struct FastRTCIceCandidateInit : public RTCIceCandidateInit
{
inline FastRTCIceCandidateInit()
: RTCIceCandidateInit(FastDictionaryInitializer())
{
// Doesn't matter what int we pass to the parent constructor
}
};
} // namespace binding_detail
namespace RTCIceCandidate_Binding {
typedef mozilla::dom::RTCIceCandidate NativeType;
bool
ConstructorEnabled(JSContext* aCx, JS::Handle<JSObject*> aObj);
bool
Wrap(JSContext* aCx, mozilla::dom::RTCIceCandidate* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
template <class T>
inline JSObject* Wrap(JSContext* aCx, T* aObject, JS::Handle<JSObject*> aGivenProto)
{
JS::Rooted<JSObject*> reflector(aCx);
return Wrap(aCx, aObject, aObject, aGivenProto, &reflector) ? reflector.get() : nullptr;
}
void
CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal);
inline JS::Handle<JSObject*> GetProtoObjectHandle(JSContext* aCx)
{
/* Get the interface prototype object for this class. This will create the
object as needed. */
return GetPerInterfaceObjectHandle(aCx, prototypes::id::RTCIceCandidate,
&CreateInterfaceObjects,
/* aDefineOnGlobal = */ true);
}
inline JS::Handle<JSObject*> GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal = true)
{
/* Get the interface object for this class. This will create the object as
needed. */
return GetPerInterfaceObjectHandle(aCx, constructors::id::RTCIceCandidate,
&CreateInterfaceObjects,
aDefineOnGlobal);
}
JSObject*
GetConstructorObject(JSContext* aCx);
} // namespace RTCIceCandidate_Binding
class RTCIceCandidateJSImpl : public CallbackInterface
{
public:
explicit inline RTCIceCandidateJSImpl(JSContext* aCx, JS::Handle<JSObject*> aCallback, JS::Handle<JSObject*> aCallbackGlobal, nsIGlobalObject* aIncumbentGlobal)
: CallbackInterface(aCx, aCallback, aCallbackGlobal, aIncumbentGlobal)
{
}
explicit inline RTCIceCandidateJSImpl(JSObject* aCallback, JSObject* aCallbackGlobal, const FastCallbackConstructor& )
: CallbackInterface(aCallback, aCallbackGlobal, FastCallbackConstructor())
{
}
explicit inline RTCIceCandidateJSImpl(JSObject* aCallback, JSObject* aCallbackGlobal, JSObject* aAsyncStack, nsIGlobalObject* aIncumbentGlobal)
: CallbackInterface(aCallback, aCallbackGlobal, aAsyncStack, aIncumbentGlobal)
{
}
void ToJSON(RTCIceCandidateInit& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
void __Init(const RTCIceCandidateInit& candidateInitDict, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
inline bool
operator==(const RTCIceCandidateJSImpl& aOther) const
{
return CallbackInterface::operator==(aOther);
}
void GetCandidate(nsString& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
void GetSdpMid(nsString& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
Nullable<uint16_t> GetSdpMLineIndex(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
void GetFoundation(nsString& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
Nullable<RTCIceComponent> GetComponent(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
Nullable<uint32_t> GetPriority(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
void GetAddress(nsString& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
Nullable<RTCIceProtocol> GetProtocol(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
Nullable<uint16_t> GetPort(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
Nullable<RTCIceCandidateType> GetType(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
Nullable<RTCIceTcpCandidateType> GetTcpType(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
void GetRelatedAddress(nsString& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
Nullable<uint16_t> GetRelatedPort(ErrorResult& aRv, JS::Realm* aRealm = nullptr);
void GetUsernameFragment(nsString& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
private:
static bool
InitIds(JSContext* cx, RTCIceCandidateAtoms* atomsCache);
};
class RTCIceCandidate final : public nsSupportsWeakReference,
public nsWrapperCache
{
public:
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
NS_DECL_CYCLE_COLLECTION_WRAPPERCACHE_CLASS(RTCIceCandidate)
private:
RefPtr<RTCIceCandidateJSImpl> mImpl;
nsCOMPtr<nsIGlobalObject> mParent;
public:
RTCIceCandidate(JS::Handle<JSObject*> aJSImplObject, JS::Handle<JSObject*> aJSImplGlobal, nsIGlobalObject* aParent);
private:
~RTCIceCandidate();
public:
nsISupports* GetParentObject() const;
JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
static already_AddRefed<RTCIceCandidate> Constructor(const GlobalObject& global, JSContext* cx, const RTCIceCandidateInit& candidateInitDict, ErrorResult& aRv, JS::Handle<JSObject*> aGivenProto = nullptr);
void GetCandidate(nsString& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
void GetSdpMid(nsString& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
Nullable<uint16_t> GetSdpMLineIndex(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
void GetFoundation(nsString& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
Nullable<RTCIceComponent> GetComponent(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
Nullable<uint32_t> GetPriority(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
void GetAddress(nsString& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
Nullable<RTCIceProtocol> GetProtocol(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
Nullable<uint16_t> GetPort(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
Nullable<RTCIceCandidateType> GetType(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
Nullable<RTCIceTcpCandidateType> GetTcpType(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
void GetRelatedAddress(nsString& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
Nullable<uint16_t> GetRelatedPort(ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
void GetUsernameFragment(nsString& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr) const;
void ToJSON(RTCIceCandidateInit& aRetVal, ErrorResult& aRv, JS::Realm* aRealm = nullptr);
static bool
_Create(JSContext* cx, unsigned argc, JS::Value* vp);
};
} // namespace dom
template <>
struct MaxContiguousEnumValue<dom::RTCIceComponent>
{
static constexpr dom::RTCIceComponent value = dom::RTCIceComponent::Rtcp;
static_assert(static_cast<uint8_t>(dom::RTCIceComponent::Rtp) == 0,
"We rely on this in ContiguousEnumValues");
static_assert(mozilla::ArrayLength(dom::binding_detail::EnumStrings<dom::RTCIceComponent>::Values) - 1 == UnderlyingValue(value),
"Mismatch between enum strings and enum count");
};
template <>
struct MaxContiguousEnumValue<dom::RTCIceProtocol>
{
static constexpr dom::RTCIceProtocol value = dom::RTCIceProtocol::Tcp;
static_assert(static_cast<uint8_t>(dom::RTCIceProtocol::Udp) == 0,
"We rely on this in ContiguousEnumValues");
static_assert(mozilla::ArrayLength(dom::binding_detail::EnumStrings<dom::RTCIceProtocol>::Values) - 1 == UnderlyingValue(value),
"Mismatch between enum strings and enum count");
};
template <>
struct MaxContiguousEnumValue<dom::RTCIceCandidateType>
{
static constexpr dom::RTCIceCandidateType value = dom::RTCIceCandidateType::Relay;
static_assert(static_cast<uint8_t>(dom::RTCIceCandidateType::Host) == 0,
"We rely on this in ContiguousEnumValues");
static_assert(mozilla::ArrayLength(dom::binding_detail::EnumStrings<dom::RTCIceCandidateType>::Values) - 1 == UnderlyingValue(value),
"Mismatch between enum strings and enum count");
};
template <>
struct MaxContiguousEnumValue<dom::RTCIceTcpCandidateType>
{
static constexpr dom::RTCIceTcpCandidateType value = dom::RTCIceTcpCandidateType::So;
static_assert(static_cast<uint8_t>(dom::RTCIceTcpCandidateType::Active) == 0,
"We rely on this in ContiguousEnumValues");
static_assert(mozilla::ArrayLength(dom::binding_detail::EnumStrings<dom::RTCIceTcpCandidateType>::Values) - 1 == UnderlyingValue(value),
"Mismatch between enum strings and enum count");
};
} // namespace mozilla
#endif // DOM_RTCICECANDIDATEBINDING_H_