//
// Automatically generated by ipdlc.
// Edit at your own risk
//


#include "mozilla/dom/IdentityCredentialSerializationHelpers.h"
#include "mozilla/dom/PWindowGlobalParent.h"
#include "mozilla/dom/PWindowGlobalChild.h"
#include "mozilla/dom/PWebIdentity.h"
#include "mozilla/dom/PWebIdentityParent.h"
#include "mozilla/dom/PWebIdentityChild.h"

#include "ipc/IPCMessageUtils.h"
#include "ipc/IPCMessageUtilsSpecializations.h"
#include "nsIFile.h"
#include "mozilla/ipc/Endpoint.h"
#include "mozilla/ipc/ProtocolMessageUtils.h"
#include "mozilla/ipc/ProtocolUtils.h"
#include "mozilla/ipc/ShmemMessageUtils.h"
#include "mozilla/ipc/TaintingIPCUtils.h"

namespace mozilla {
namespace dom {
namespace PWebIdentity {

nsresult
CreateEndpoints(
        mozilla::ipc::EndpointProcInfo aParentDestInfo,
        mozilla::ipc::EndpointProcInfo aChildDestInfo,
        mozilla::ipc::Endpoint<::mozilla::dom::PWebIdentityParent>* aParent,
        mozilla::ipc::Endpoint<::mozilla::dom::PWebIdentityChild>* aChild)
{
    return mozilla::ipc::CreateEndpoints(
        mozilla::ipc::PrivateIPDLInterface(),
        aParentDestInfo, aChildDestInfo, aParent, aChild);
}
nsresult
CreateEndpoints(
        mozilla::ipc::Endpoint<::mozilla::dom::PWebIdentityParent>* aParent,
        mozilla::ipc::Endpoint<::mozilla::dom::PWebIdentityChild>* aChild)
{
    return mozilla::ipc::CreateEndpoints(
        mozilla::ipc::PrivateIPDLInterface(),
        aParent, aChild);
}
mozilla::UniquePtr<IPC::Message>
Msg_RequestCancel(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_RequestCancel__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_GetIdentityCredential(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_GetIdentityCredential__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_GetIdentityCredential(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_GetIdentityCredential__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_DisconnectIdentityCredential(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_DisconnectIdentityCredential__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_DisconnectIdentityCredential(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_DisconnectIdentityCredential__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_PreventSilentAccess(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_PreventSilentAccess__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_PreventSilentAccess(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_PreventSilentAccess__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_SetLoginStatus(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_SetLoginStatus__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_SetLoginStatus(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_SetLoginStatus__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_ResolveContinuationWindow(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_ResolveContinuationWindow__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_ResolveContinuationWindow(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_ResolveContinuationWindow__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_IsActiveContinuationWindow(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_IsActiveContinuationWindow__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_IsActiveContinuationWindow(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_IsActiveContinuationWindow__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_OpenContinuationWindow(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_OpenContinuationWindow__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_OpenContinuationWindow(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_OpenContinuationWindow__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg___delete__(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg___delete____ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply___delete__(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply___delete____ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::REPLY));
}

} // namespace PWebIdentity
} // namespace dom
} // namespace mozilla

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct IPCIdentityCredential|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::IPCIdentityCredential>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).id());
    // Sentinel = 'id'
    (aWriter)->WriteSentinel(20447438);
    IPC::WriteParam(aWriter, (aVar).token());
    // Sentinel = 'token'
    (aWriter)->WriteSentinel(108921378);
    IPC::WriteParam(aWriter, (aVar).isAutoSelected());
    // Sentinel = 'isAutoSelected'
    (aWriter)->WriteSentinel(706151839);
    IPC::WriteParam(aWriter, (aVar).configURL());
    // Sentinel = 'configURL'
    (aWriter)->WriteSentinel(301597546);
}

auto ParamTraits<::mozilla::dom::IPCIdentityCredential>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    auto maybe___id = IPC::ReadParam<::nsString>(aReader);
    if (!maybe___id) {
        aReader->FatalError("Error deserializing 'id' (nsString) member of 'IPCIdentityCredential'");
        return {};

    }
    auto& _id = *maybe___id;
    // Sentinel = 'id'
    if ((!((aReader)->ReadSentinel(20447438)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'id' (nsString) member of 'IPCIdentityCredential'");
        return {};
    }
    auto maybe___token = IPC::ReadParam<mozilla::Maybe<::nsCString>>(aReader);
    if (!maybe___token) {
        aReader->FatalError("Error deserializing 'token' (nsCString?) member of 'IPCIdentityCredential'");
        return {};

    }
    auto& _token = *maybe___token;
    // Sentinel = 'token'
    if ((!((aReader)->ReadSentinel(108921378)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'token' (nsCString?) member of 'IPCIdentityCredential'");
        return {};
    }
    auto maybe___isAutoSelected = IPC::ReadParam<bool>(aReader);
    if (!maybe___isAutoSelected) {
        aReader->FatalError("Error deserializing 'isAutoSelected' (bool) member of 'IPCIdentityCredential'");
        return {};

    }
    auto& _isAutoSelected = *maybe___isAutoSelected;
    // Sentinel = 'isAutoSelected'
    if ((!((aReader)->ReadSentinel(706151839)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'isAutoSelected' (bool) member of 'IPCIdentityCredential'");
        return {};
    }
    auto maybe___configURL = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___configURL) {
        aReader->FatalError("Error deserializing 'configURL' (nsCString) member of 'IPCIdentityCredential'");
        return {};

    }
    auto& _configURL = *maybe___configURL;
    // Sentinel = 'configURL'
    if ((!((aReader)->ReadSentinel(301597546)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'configURL' (nsCString) member of 'IPCIdentityCredential'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_id),
            std::move(_token),
            std::move(_isAutoSelected),
            std::move(_configURL)};
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |union WebIdentityGetCredentialResponse|
//
namespace mozilla {
namespace dom {
auto WebIdentityGetCredentialResponse::MaybeDestroy() -> void
{
    if ((mType) == (T__None)) {
        return;
    }
    switch (mType) {
    case Tnsresult:
        {
            (ptr_nsresult())->~nsresult__tdef();
            break;
        }
    case TIPCIdentityCredential:
        {
            (ptr_IPCIdentityCredential())->~IPCIdentityCredential__tdef();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("not reached");
            break;
        }
    }
}

MOZ_IMPLICIT WebIdentityGetCredentialResponse::WebIdentityGetCredentialResponse(const nsresult& aOther)
{
    new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(aOther);
    mType = Tnsresult;
}

MOZ_IMPLICIT WebIdentityGetCredentialResponse::WebIdentityGetCredentialResponse(nsresult&& aOther)
{
    new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(std::move(aOther));
    mType = Tnsresult;
}

MOZ_IMPLICIT WebIdentityGetCredentialResponse::WebIdentityGetCredentialResponse(const IPCIdentityCredential& aOther)
{
    new (mozilla::KnownNotNull, ptr_IPCIdentityCredential()) IPCIdentityCredential(aOther);
    mType = TIPCIdentityCredential;
}

MOZ_IMPLICIT WebIdentityGetCredentialResponse::WebIdentityGetCredentialResponse(IPCIdentityCredential&& aOther)
{
    new (mozilla::KnownNotNull, ptr_IPCIdentityCredential()) IPCIdentityCredential(std::move(aOther));
    mType = TIPCIdentityCredential;
}

MOZ_IMPLICIT WebIdentityGetCredentialResponse::WebIdentityGetCredentialResponse(const WebIdentityGetCredentialResponse& aOther)
{
    (aOther).AssertSanity();
    switch ((aOther).type()) {
    case Tnsresult:
        {
            new (mozilla::KnownNotNull, ptr_nsresult()) nsresult((aOther).get_nsresult());
            break;
        }
    case TIPCIdentityCredential:
        {
            new (mozilla::KnownNotNull, ptr_IPCIdentityCredential()) IPCIdentityCredential((aOther).get_IPCIdentityCredential());
            break;
        }
    case T__None:
        {
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            return;
        }
    }
    mType = (aOther).type();
}

MOZ_IMPLICIT WebIdentityGetCredentialResponse::WebIdentityGetCredentialResponse(WebIdentityGetCredentialResponse&& aOther)
{
    (aOther).AssertSanity();
    Type t = (aOther).type();
    switch (t) {
    case Tnsresult:
        {
            new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(std::move((aOther).get_nsresult()));
            (aOther).MaybeDestroy();
            break;
        }
    case TIPCIdentityCredential:
        {
            new (mozilla::KnownNotNull, ptr_IPCIdentityCredential()) IPCIdentityCredential(std::move((aOther).get_IPCIdentityCredential()));
            (aOther).MaybeDestroy();
            break;
        }
    case T__None:
        {
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            return;
        }
    }
    (aOther).mType = T__None;
    mType = t;
}

WebIdentityGetCredentialResponse::~WebIdentityGetCredentialResponse()
{
    MaybeDestroy();
}

auto WebIdentityGetCredentialResponse::operator=(const nsresult& aRhs) -> WebIdentityGetCredentialResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(aRhs);
    mType = Tnsresult;
    return (*(this));
}

auto WebIdentityGetCredentialResponse::operator=(nsresult&& aRhs) -> WebIdentityGetCredentialResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(std::move(aRhs));
    mType = Tnsresult;
    return (*(this));
}

auto WebIdentityGetCredentialResponse::operator=(const IPCIdentityCredential& aRhs) -> WebIdentityGetCredentialResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_IPCIdentityCredential()) IPCIdentityCredential(aRhs);
    mType = TIPCIdentityCredential;
    return (*(this));
}

auto WebIdentityGetCredentialResponse::operator=(IPCIdentityCredential&& aRhs) -> WebIdentityGetCredentialResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_IPCIdentityCredential()) IPCIdentityCredential(std::move(aRhs));
    mType = TIPCIdentityCredential;
    return (*(this));
}

auto WebIdentityGetCredentialResponse::operator=(const WebIdentityGetCredentialResponse& aRhs) -> WebIdentityGetCredentialResponse&
{
    (aRhs).AssertSanity();
    Type t = (aRhs).type();
    switch (t) {
    case Tnsresult:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_nsresult()) nsresult((aRhs).get_nsresult());
            break;
        }
    case TIPCIdentityCredential:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_IPCIdentityCredential()) IPCIdentityCredential((aRhs).get_IPCIdentityCredential());
            break;
        }
    case T__None:
        {
            MaybeDestroy();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            break;
        }
    }
    mType = t;
    return (*(this));
}

auto WebIdentityGetCredentialResponse::operator=(WebIdentityGetCredentialResponse&& aRhs) -> WebIdentityGetCredentialResponse&
{
    (aRhs).AssertSanity();
    Type t = (aRhs).type();
    switch (t) {
    case Tnsresult:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(std::move((aRhs).get_nsresult()));
            (aRhs).MaybeDestroy();
            break;
        }
    case TIPCIdentityCredential:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_IPCIdentityCredential()) IPCIdentityCredential(std::move((aRhs).get_IPCIdentityCredential()));
            (aRhs).MaybeDestroy();
            break;
        }
    case T__None:
        {
            MaybeDestroy();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            break;
        }
    }
    (aRhs).mType = T__None;
    mType = t;
    return (*(this));
}

} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::WebIdentityGetCredentialResponse>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    typedef ::mozilla::dom::WebIdentityGetCredentialResponse union__;
    int type = (aVar).type();
    IPC::WriteParam(aWriter, type);
    // Sentinel = 'WebIdentityGetCredentialResponse'
    (aWriter)->WriteSentinel(3484355795);

    switch (type) {
    case union__::Tnsresult:
        {
            IPC::WriteParam(aWriter, (aVar).get_nsresult());
            // Sentinel = 'Tnsresult'
            (aWriter)->WriteSentinel(313394133);
            return;
        }
    case union__::TIPCIdentityCredential:
        {
            IPC::WriteParam(aWriter, (aVar).get_IPCIdentityCredential());
            // Sentinel = 'TIPCIdentityCredential'
            (aWriter)->WriteSentinel(1553795190);
            return;
        }
    default:
        {
            aWriter->FatalError("unknown variant of union WebIdentityGetCredentialResponse");
            return;
        }
    }
}

auto ParamTraits<::mozilla::dom::WebIdentityGetCredentialResponse>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    typedef ::mozilla::dom::WebIdentityGetCredentialResponse union__;
    auto maybe__type = IPC::ReadParam<int>(aReader);
    if (!maybe__type) {
        aReader->FatalError("Error deserializing type of union WebIdentityGetCredentialResponse");
        return {};

    }
    auto& type = *maybe__type;
    // Sentinel = 'WebIdentityGetCredentialResponse'
    if ((!((aReader)->ReadSentinel(3484355795)))) {
        mozilla::ipc::SentinelReadError("Error deserializing type of union WebIdentityGetCredentialResponse");
        return {};
    }

    switch (type) {
    case union__::Tnsresult:
        {
            auto maybe__tmp = IPC::ReadParam<::nsresult>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant Tnsresult of union WebIdentityGetCredentialResponse");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'Tnsresult'
            if ((!((aReader)->ReadSentinel(313394133)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant Tnsresult of union WebIdentityGetCredentialResponse");
                return {};
            }
            return std::move(tmp);
        }
    case union__::TIPCIdentityCredential:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::IPCIdentityCredential>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TIPCIdentityCredential of union WebIdentityGetCredentialResponse");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TIPCIdentityCredential'
            if ((!((aReader)->ReadSentinel(1553795190)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TIPCIdentityCredential of union WebIdentityGetCredentialResponse");
                return {};
            }
            return std::move(tmp);
        }
    default:
        {
            aReader->FatalError("unknown variant of union WebIdentityGetCredentialResponse");
            return {};
        }
    }
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |union OpenContinuationWindowResponse|
//
namespace mozilla {
namespace dom {
auto OpenContinuationWindowResponse::MaybeDestroy() -> void
{
    if ((mType) == (T__None)) {
        return;
    }
    switch (mType) {
    case Tnsresult:
        {
            (ptr_nsresult())->~nsresult__tdef();
            break;
        }
    case TMaybeDiscardedBrowsingContext:
        {
            (ptr_MaybeDiscardedBrowsingContext())->~MaybeDiscardedBrowsingContext__tdef();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("not reached");
            break;
        }
    }
}

MOZ_IMPLICIT OpenContinuationWindowResponse::OpenContinuationWindowResponse(const nsresult& aOther)
{
    new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(aOther);
    mType = Tnsresult;
}

MOZ_IMPLICIT OpenContinuationWindowResponse::OpenContinuationWindowResponse(nsresult&& aOther)
{
    new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(std::move(aOther));
    mType = Tnsresult;
}

MOZ_IMPLICIT OpenContinuationWindowResponse::OpenContinuationWindowResponse(const MaybeDiscardedBrowsingContext& aOther)
{
    new (mozilla::KnownNotNull, ptr_MaybeDiscardedBrowsingContext()) MaybeDiscardedBrowsingContext(aOther);
    mType = TMaybeDiscardedBrowsingContext;
}

MOZ_IMPLICIT OpenContinuationWindowResponse::OpenContinuationWindowResponse(MaybeDiscardedBrowsingContext&& aOther)
{
    new (mozilla::KnownNotNull, ptr_MaybeDiscardedBrowsingContext()) MaybeDiscardedBrowsingContext(std::move(aOther));
    mType = TMaybeDiscardedBrowsingContext;
}

MOZ_IMPLICIT OpenContinuationWindowResponse::OpenContinuationWindowResponse(const OpenContinuationWindowResponse& aOther)
{
    (aOther).AssertSanity();
    switch ((aOther).type()) {
    case Tnsresult:
        {
            new (mozilla::KnownNotNull, ptr_nsresult()) nsresult((aOther).get_nsresult());
            break;
        }
    case TMaybeDiscardedBrowsingContext:
        {
            new (mozilla::KnownNotNull, ptr_MaybeDiscardedBrowsingContext()) MaybeDiscardedBrowsingContext((aOther).get_MaybeDiscardedBrowsingContext());
            break;
        }
    case T__None:
        {
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            return;
        }
    }
    mType = (aOther).type();
}

MOZ_IMPLICIT OpenContinuationWindowResponse::OpenContinuationWindowResponse(OpenContinuationWindowResponse&& aOther)
{
    (aOther).AssertSanity();
    Type t = (aOther).type();
    switch (t) {
    case Tnsresult:
        {
            new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(std::move((aOther).get_nsresult()));
            (aOther).MaybeDestroy();
            break;
        }
    case TMaybeDiscardedBrowsingContext:
        {
            new (mozilla::KnownNotNull, ptr_MaybeDiscardedBrowsingContext()) MaybeDiscardedBrowsingContext(std::move((aOther).get_MaybeDiscardedBrowsingContext()));
            (aOther).MaybeDestroy();
            break;
        }
    case T__None:
        {
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            return;
        }
    }
    (aOther).mType = T__None;
    mType = t;
}

OpenContinuationWindowResponse::~OpenContinuationWindowResponse()
{
    MaybeDestroy();
}

auto OpenContinuationWindowResponse::operator=(const nsresult& aRhs) -> OpenContinuationWindowResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(aRhs);
    mType = Tnsresult;
    return (*(this));
}

auto OpenContinuationWindowResponse::operator=(nsresult&& aRhs) -> OpenContinuationWindowResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(std::move(aRhs));
    mType = Tnsresult;
    return (*(this));
}

auto OpenContinuationWindowResponse::operator=(const MaybeDiscardedBrowsingContext& aRhs) -> OpenContinuationWindowResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_MaybeDiscardedBrowsingContext()) MaybeDiscardedBrowsingContext(aRhs);
    mType = TMaybeDiscardedBrowsingContext;
    return (*(this));
}

auto OpenContinuationWindowResponse::operator=(MaybeDiscardedBrowsingContext&& aRhs) -> OpenContinuationWindowResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_MaybeDiscardedBrowsingContext()) MaybeDiscardedBrowsingContext(std::move(aRhs));
    mType = TMaybeDiscardedBrowsingContext;
    return (*(this));
}

auto OpenContinuationWindowResponse::operator=(const OpenContinuationWindowResponse& aRhs) -> OpenContinuationWindowResponse&
{
    (aRhs).AssertSanity();
    Type t = (aRhs).type();
    switch (t) {
    case Tnsresult:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_nsresult()) nsresult((aRhs).get_nsresult());
            break;
        }
    case TMaybeDiscardedBrowsingContext:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_MaybeDiscardedBrowsingContext()) MaybeDiscardedBrowsingContext((aRhs).get_MaybeDiscardedBrowsingContext());
            break;
        }
    case T__None:
        {
            MaybeDestroy();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            break;
        }
    }
    mType = t;
    return (*(this));
}

auto OpenContinuationWindowResponse::operator=(OpenContinuationWindowResponse&& aRhs) -> OpenContinuationWindowResponse&
{
    (aRhs).AssertSanity();
    Type t = (aRhs).type();
    switch (t) {
    case Tnsresult:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(std::move((aRhs).get_nsresult()));
            (aRhs).MaybeDestroy();
            break;
        }
    case TMaybeDiscardedBrowsingContext:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_MaybeDiscardedBrowsingContext()) MaybeDiscardedBrowsingContext(std::move((aRhs).get_MaybeDiscardedBrowsingContext()));
            (aRhs).MaybeDestroy();
            break;
        }
    case T__None:
        {
            MaybeDestroy();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            break;
        }
    }
    (aRhs).mType = T__None;
    mType = t;
    return (*(this));
}

} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::OpenContinuationWindowResponse>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    typedef ::mozilla::dom::OpenContinuationWindowResponse union__;
    int type = (aVar).type();
    IPC::WriteParam(aWriter, type);
    // Sentinel = 'OpenContinuationWindowResponse'
    (aWriter)->WriteSentinel(3163753557);

    switch (type) {
    case union__::Tnsresult:
        {
            IPC::WriteParam(aWriter, (aVar).get_nsresult());
            // Sentinel = 'Tnsresult'
            (aWriter)->WriteSentinel(313394133);
            return;
        }
    case union__::TMaybeDiscardedBrowsingContext:
        {
            IPC::WriteParam(aWriter, (aVar).get_MaybeDiscardedBrowsingContext());
            // Sentinel = 'TMaybeDiscardedBrowsingContext'
            (aWriter)->WriteSentinel(3021999094);
            return;
        }
    default:
        {
            aWriter->FatalError("unknown variant of union OpenContinuationWindowResponse");
            return;
        }
    }
}

auto ParamTraits<::mozilla::dom::OpenContinuationWindowResponse>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    typedef ::mozilla::dom::OpenContinuationWindowResponse union__;
    auto maybe__type = IPC::ReadParam<int>(aReader);
    if (!maybe__type) {
        aReader->FatalError("Error deserializing type of union OpenContinuationWindowResponse");
        return {};

    }
    auto& type = *maybe__type;
    // Sentinel = 'OpenContinuationWindowResponse'
    if ((!((aReader)->ReadSentinel(3163753557)))) {
        mozilla::ipc::SentinelReadError("Error deserializing type of union OpenContinuationWindowResponse");
        return {};
    }

    switch (type) {
    case union__::Tnsresult:
        {
            auto maybe__tmp = IPC::ReadParam<::nsresult>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant Tnsresult of union OpenContinuationWindowResponse");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'Tnsresult'
            if ((!((aReader)->ReadSentinel(313394133)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant Tnsresult of union OpenContinuationWindowResponse");
                return {};
            }
            return std::move(tmp);
        }
    case union__::TMaybeDiscardedBrowsingContext:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::MaybeDiscardedBrowsingContext>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TMaybeDiscardedBrowsingContext of union OpenContinuationWindowResponse");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TMaybeDiscardedBrowsingContext'
            if ((!((aReader)->ReadSentinel(3021999094)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TMaybeDiscardedBrowsingContext of union OpenContinuationWindowResponse");
                return {};
            }
            return std::move(tmp);
        }
    default:
        {
            aReader->FatalError("unknown variant of union OpenContinuationWindowResponse");
            return {};
        }
    }
}

} // namespace IPC
