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


#include "mozilla/ipc/PBackgroundParent.h"
#include "mozilla/ipc/PBackgroundChild.h"
#include "mozilla/dom/DomSecurityIPCUtils.h"
#include "mozilla/dom/DomSecurityIPCUtils.h"
#include "mozilla/dom/FetchIPCTypes.h"
#include "mozilla/dom/FeaturePolicyUtils.h"
#include "mozilla/dom/NavigationAPIIPCUtils.h"
#include "mozilla/dom/PropertyBagUtils.h"
#include "mozilla/dom/ReferrerInfoUtils.h"
#include "mozilla/ipc/URIUtils.h"
#include "mozilla/net/CacheInfoIPCTypes.h"
#include "mozilla/AntiTrackingIPCUtils.h"
#include "mozilla/net/ClassOfService.h"
#include "mozilla/dom/PCookieStore.h"
#include "mozilla/dom/PCookieStoreParent.h"
#include "mozilla/dom/PCookieStoreChild.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 PCookieStore {

nsresult
CreateEndpoints(
        mozilla::ipc::EndpointProcInfo aParentDestInfo,
        mozilla::ipc::EndpointProcInfo aChildDestInfo,
        mozilla::ipc::Endpoint<::mozilla::dom::PCookieStoreParent>* aParent,
        mozilla::ipc::Endpoint<::mozilla::dom::PCookieStoreChild>* aChild)
{
    return mozilla::ipc::CreateEndpoints(
        mozilla::ipc::PrivateIPDLInterface(),
        aParentDestInfo, aChildDestInfo, aParent, aChild);
}
mozilla::UniquePtr<IPC::Message>
Msg_GetRequest(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_GetRequest__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_GetRequest(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_GetRequest__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_SetRequest(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_SetRequest__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_SetRequest(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_SetRequest__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_DeleteRequest(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_DeleteRequest__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_DeleteRequest(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_DeleteRequest__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_GetSubscriptionsRequest(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_GetSubscriptionsRequest__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_GetSubscriptionsRequest(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_GetSubscriptionsRequest__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_SubscribeOrUnsubscribeRequest(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_SubscribeOrUnsubscribeRequest__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_SubscribeOrUnsubscribeRequest(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_SubscribeOrUnsubscribeRequest__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_Close(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_Close__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___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 PCookieStore
} // namespace dom
} // namespace mozilla

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |union MaybeCookieStruct|
//
namespace mozilla {
namespace dom {
auto MaybeCookieStruct::MaybeDestroy() -> void
{
    if ((mType) == (T__None)) {
        return;
    }
    switch (mType) {
    case TCookieStruct:
        {
            (ptr_CookieStruct())->~CookieStruct__tdef();
            break;
        }
    case Tvoid_t:
        {
            (ptr_void_t())->~void_t__tdef();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("not reached");
            break;
        }
    }
}

MOZ_IMPLICIT MaybeCookieStruct::MaybeCookieStruct(const CookieStruct& aOther)
{
    new (mozilla::KnownNotNull, ptr_CookieStruct()) CookieStruct(aOther);
    mType = TCookieStruct;
}

MOZ_IMPLICIT MaybeCookieStruct::MaybeCookieStruct(CookieStruct&& aOther)
{
    new (mozilla::KnownNotNull, ptr_CookieStruct()) CookieStruct(std::move(aOther));
    mType = TCookieStruct;
}

MOZ_IMPLICIT MaybeCookieStruct::MaybeCookieStruct(const void_t& aOther)
{
    new (mozilla::KnownNotNull, ptr_void_t()) void_t(aOther);
    mType = Tvoid_t;
}

MOZ_IMPLICIT MaybeCookieStruct::MaybeCookieStruct(void_t&& aOther)
{
    new (mozilla::KnownNotNull, ptr_void_t()) void_t(std::move(aOther));
    mType = Tvoid_t;
}

MOZ_IMPLICIT MaybeCookieStruct::MaybeCookieStruct(const MaybeCookieStruct& aOther)
{
    (aOther).AssertSanity();
    switch ((aOther).type()) {
    case TCookieStruct:
        {
            new (mozilla::KnownNotNull, ptr_CookieStruct()) CookieStruct((aOther).get_CookieStruct());
            break;
        }
    case Tvoid_t:
        {
            new (mozilla::KnownNotNull, ptr_void_t()) void_t((aOther).get_void_t());
            break;
        }
    case T__None:
        {
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            return;
        }
    }
    mType = (aOther).type();
}

MOZ_IMPLICIT MaybeCookieStruct::MaybeCookieStruct(MaybeCookieStruct&& aOther)
{
    (aOther).AssertSanity();
    Type t = (aOther).type();
    switch (t) {
    case TCookieStruct:
        {
            new (mozilla::KnownNotNull, ptr_CookieStruct()) CookieStruct(std::move((aOther).get_CookieStruct()));
            (aOther).MaybeDestroy();
            break;
        }
    case Tvoid_t:
        {
            new (mozilla::KnownNotNull, ptr_void_t()) void_t(std::move((aOther).get_void_t()));
            (aOther).MaybeDestroy();
            break;
        }
    case T__None:
        {
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            return;
        }
    }
    (aOther).mType = T__None;
    mType = t;
}

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

auto MaybeCookieStruct::operator=(const CookieStruct& aRhs) -> MaybeCookieStruct&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_CookieStruct()) CookieStruct(aRhs);
    mType = TCookieStruct;
    return (*(this));
}

auto MaybeCookieStruct::operator=(CookieStruct&& aRhs) -> MaybeCookieStruct&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_CookieStruct()) CookieStruct(std::move(aRhs));
    mType = TCookieStruct;
    return (*(this));
}

auto MaybeCookieStruct::operator=(const void_t& aRhs) -> MaybeCookieStruct&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_void_t()) void_t(aRhs);
    mType = Tvoid_t;
    return (*(this));
}

auto MaybeCookieStruct::operator=(void_t&& aRhs) -> MaybeCookieStruct&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_void_t()) void_t(std::move(aRhs));
    mType = Tvoid_t;
    return (*(this));
}

auto MaybeCookieStruct::operator=(const MaybeCookieStruct& aRhs) -> MaybeCookieStruct&
{
    (aRhs).AssertSanity();
    Type t = (aRhs).type();
    switch (t) {
    case TCookieStruct:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_CookieStruct()) CookieStruct((aRhs).get_CookieStruct());
            break;
        }
    case Tvoid_t:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_void_t()) void_t((aRhs).get_void_t());
            break;
        }
    case T__None:
        {
            MaybeDestroy();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            break;
        }
    }
    mType = t;
    return (*(this));
}

auto MaybeCookieStruct::operator=(MaybeCookieStruct&& aRhs) -> MaybeCookieStruct&
{
    (aRhs).AssertSanity();
    Type t = (aRhs).type();
    switch (t) {
    case TCookieStruct:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_CookieStruct()) CookieStruct(std::move((aRhs).get_CookieStruct()));
            (aRhs).MaybeDestroy();
            break;
        }
    case Tvoid_t:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_void_t()) void_t(std::move((aRhs).get_void_t()));
            (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::MaybeCookieStruct>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    typedef ::mozilla::dom::MaybeCookieStruct union__;
    int type = (aVar).type();
    IPC::WriteParam(aWriter, type);
    // Sentinel = 'MaybeCookieStruct'
    (aWriter)->WriteSentinel(997590734);

    switch (type) {
    case union__::TCookieStruct:
        {
            IPC::WriteParam(aWriter, (aVar).get_CookieStruct());
            // Sentinel = 'TCookieStruct'
            (aWriter)->WriteSentinel(586482996);
            return;
        }
    case union__::Tvoid_t:
        {
            IPC::WriteParam(aWriter, (aVar).get_void_t());
            // Sentinel = 'Tvoid_t'
            (aWriter)->WriteSentinel(189006554);
            return;
        }
    default:
        {
            aWriter->FatalError("unknown variant of union MaybeCookieStruct");
            return;
        }
    }
}

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

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

    switch (type) {
    case union__::TCookieStruct:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::net::CookieStruct>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TCookieStruct of union MaybeCookieStruct");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TCookieStruct'
            if ((!((aReader)->ReadSentinel(586482996)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TCookieStruct of union MaybeCookieStruct");
                return {};
            }
            return std::move(tmp);
        }
    case union__::Tvoid_t:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::void_t>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant Tvoid_t of union MaybeCookieStruct");
                return {};

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

} // namespace IPC

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

namespace IPC {
auto ParamTraits<::mozilla::dom::CookieSubscription>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).name());
    // Sentinel = 'name'
    (aWriter)->WriteSentinel(69075362);
    IPC::WriteParam(aWriter, (aVar).url());
    // Sentinel = 'url'
    (aWriter)->WriteSentinel(45220180);
}

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

    }
    auto& _name = *maybe___name;
    // Sentinel = 'name'
    if ((!((aReader)->ReadSentinel(69075362)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'name' (nsString?) member of 'CookieSubscription'");
        return {};
    }
    auto maybe___url = IPC::ReadParam<::nsString>(aReader);
    if (!maybe___url) {
        aReader->FatalError("Error deserializing 'url' (nsString) member of 'CookieSubscription'");
        return {};

    }
    auto& _url = *maybe___url;
    // Sentinel = 'url'
    if ((!((aReader)->ReadSentinel(45220180)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'url' (nsString) member of 'CookieSubscription'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_name),
            std::move(_url)};
    return result__;
}

} // namespace IPC

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

namespace IPC {
auto ParamTraits<::mozilla::dom::CookieStoreResult>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).success());
    // Sentinel = 'success'
    (aWriter)->WriteSentinel(200082170);
    IPC::WriteParam(aWriter, (aVar).waitForNotification());
    // Sentinel = 'waitForNotification'
    (aWriter)->WriteSentinel(1294731204);
}

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

    }
    auto& _success = *maybe___success;
    // Sentinel = 'success'
    if ((!((aReader)->ReadSentinel(200082170)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'success' (bool) member of 'CookieStoreResult'");
        return {};
    }
    auto maybe___waitForNotification = IPC::ReadParam<bool>(aReader);
    if (!maybe___waitForNotification) {
        aReader->FatalError("Error deserializing 'waitForNotification' (bool) member of 'CookieStoreResult'");
        return {};

    }
    auto& _waitForNotification = *maybe___waitForNotification;
    // Sentinel = 'waitForNotification'
    if ((!((aReader)->ReadSentinel(1294731204)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'waitForNotification' (bool) member of 'CookieStoreResult'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_success),
            std::move(_waitForNotification)};
    return result__;
}

} // namespace IPC
