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


#include "mozilla/dom/ReferrerInfoUtils.h"
#include "mozilla/dom/PContentParent.h"
#include "mozilla/dom/PContentChild.h"
#include "mozilla/PWebBrowserPersistResourcesParent.h"
#include "mozilla/PWebBrowserPersistResourcesChild.h"
#include "mozilla/PWebBrowserPersistSerializeParent.h"
#include "mozilla/PWebBrowserPersistSerializeChild.h"
#include "mozilla/dom/DomSecurityIPCUtils.h"
#include "mozilla/dom/DomSecurityIPCUtils.h"
#include "mozilla/dom/FetchIPCTypes.h"
#include "mozilla/dom/PermissionsPolicyUtils.h"
#include "mozilla/dom/NavigationAPIIPCUtils.h"
#include "mozilla/dom/PropertyBagUtils.h"
#include "mozilla/dom/ReferrerInfoUtils.h"
#include "mozilla/ipc/URIUtils.h"
#include "mozilla/dom/ConsoleReportIPCUtils.h"
#include "mozilla/net/CacheInfoIPCTypes.h"
#include "mozilla/AntiTrackingIPCUtils.h"
#include "mozilla/net/ClassOfService.h"
#include "mozilla/PWebBrowserPersistDocument.h"
#include "mozilla/PWebBrowserPersistDocumentParent.h"
#include "mozilla/PWebBrowserPersistDocumentChild.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 PWebBrowserPersistDocument {

nsresult
CreateEndpoints(
        mozilla::ipc::EndpointProcInfo aParentDestInfo,
        mozilla::ipc::EndpointProcInfo aChildDestInfo,
        mozilla::ipc::Endpoint<::mozilla::PWebBrowserPersistDocumentParent>* aParent,
        mozilla::ipc::Endpoint<::mozilla::PWebBrowserPersistDocumentChild>* aChild)
{
    return mozilla::ipc::CreateEndpoints(
        mozilla::ipc::PrivateIPDLInterface(),
        aParentDestInfo, aChildDestInfo, aParent, aChild);
}
mozilla::UniquePtr<IPC::Message>
Msg_Attributes(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_Attributes__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_InitFailure(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_InitFailure__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_SetPersistFlags(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_SetPersistFlags__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_PWebBrowserPersistResourcesConstructor(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_PWebBrowserPersistResourcesConstructor__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_PWebBrowserPersistResourcesConstructor(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_PWebBrowserPersistResourcesConstructor__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_PWebBrowserPersistSerializeConstructor(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_PWebBrowserPersistSerializeConstructor__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_PWebBrowserPersistSerializeConstructor(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_PWebBrowserPersistSerializeConstructor__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::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 PWebBrowserPersistDocument
} // namespace mozilla

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct WebBrowserPersistDocumentAttrs|
//
namespace mozilla {
auto WebBrowserPersistDocumentAttrs::StaticAssertions() const -> void
{
    static_assert(
        (offsetof(WebBrowserPersistDocumentAttrs, persistFlags_) - offsetof(WebBrowserPersistDocumentAttrs, sessionHistoryCacheKey_)) == 4,
        "Bad assumptions about field layout!");
}

} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::WebBrowserPersistDocumentAttrs>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).isPrivate());
    // Sentinel = 'isPrivate'
    (aWriter)->WriteSentinel(310576056);
    IPC::WriteParam(aWriter, (aVar).documentURI());
    // Sentinel = 'documentURI'
    (aWriter)->WriteSentinel(453706832);
    IPC::WriteParam(aWriter, (aVar).baseURI());
    // Sentinel = 'baseURI'
    (aWriter)->WriteSentinel(179962508);
    IPC::WriteParam(aWriter, (aVar).contentType());
    // Sentinel = 'contentType'
    (aWriter)->WriteSentinel(465241246);
    IPC::WriteParam(aWriter, (aVar).characterSet());
    // Sentinel = 'characterSet'
    (aWriter)->WriteSentinel(526451930);
    IPC::WriteParam(aWriter, (aVar).title());
    // Sentinel = 'title'
    (aWriter)->WriteSentinel(109445667);
    IPC::WriteParam(aWriter, (aVar).referrerInfo());
    // Sentinel = 'referrerInfo'
    (aWriter)->WriteSentinel(540214506);
    IPC::WriteParam(aWriter, (aVar).cookieJarSettings());
    // Sentinel = 'cookieJarSettings'
    (aWriter)->WriteSentinel(1031800553);
    IPC::WriteParam(aWriter, (aVar).contentDisposition());
    // Sentinel = 'contentDisposition'
    (aWriter)->WriteSentinel(1196361617);
    (aWriter)->WriteBytes((&((aVar).sessionHistoryCacheKey())), 8);
    // Sentinel = 'sessionHistoryCacheKey | persistFlags'
    (aWriter)->WriteSentinel(440340135);
}

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

    }
    auto& _isPrivate = *maybe___isPrivate;
    // Sentinel = 'isPrivate'
    if ((!((aReader)->ReadSentinel(310576056)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'isPrivate' (bool) member of 'WebBrowserPersistDocumentAttrs'");
        return {};
    }
    auto maybe___documentURI = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___documentURI) {
        aReader->FatalError("Error deserializing 'documentURI' (nsCString) member of 'WebBrowserPersistDocumentAttrs'");
        return {};

    }
    auto& _documentURI = *maybe___documentURI;
    // Sentinel = 'documentURI'
    if ((!((aReader)->ReadSentinel(453706832)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'documentURI' (nsCString) member of 'WebBrowserPersistDocumentAttrs'");
        return {};
    }
    auto maybe___baseURI = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___baseURI) {
        aReader->FatalError("Error deserializing 'baseURI' (nsCString) member of 'WebBrowserPersistDocumentAttrs'");
        return {};

    }
    auto& _baseURI = *maybe___baseURI;
    // Sentinel = 'baseURI'
    if ((!((aReader)->ReadSentinel(179962508)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'baseURI' (nsCString) member of 'WebBrowserPersistDocumentAttrs'");
        return {};
    }
    auto maybe___contentType = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___contentType) {
        aReader->FatalError("Error deserializing 'contentType' (nsCString) member of 'WebBrowserPersistDocumentAttrs'");
        return {};

    }
    auto& _contentType = *maybe___contentType;
    // Sentinel = 'contentType'
    if ((!((aReader)->ReadSentinel(465241246)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'contentType' (nsCString) member of 'WebBrowserPersistDocumentAttrs'");
        return {};
    }
    auto maybe___characterSet = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___characterSet) {
        aReader->FatalError("Error deserializing 'characterSet' (nsCString) member of 'WebBrowserPersistDocumentAttrs'");
        return {};

    }
    auto& _characterSet = *maybe___characterSet;
    // Sentinel = 'characterSet'
    if ((!((aReader)->ReadSentinel(526451930)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'characterSet' (nsCString) member of 'WebBrowserPersistDocumentAttrs'");
        return {};
    }
    auto maybe___title = IPC::ReadParam<::nsString>(aReader);
    if (!maybe___title) {
        aReader->FatalError("Error deserializing 'title' (nsString) member of 'WebBrowserPersistDocumentAttrs'");
        return {};

    }
    auto& _title = *maybe___title;
    // Sentinel = 'title'
    if ((!((aReader)->ReadSentinel(109445667)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'title' (nsString) member of 'WebBrowserPersistDocumentAttrs'");
        return {};
    }
    auto maybe___referrerInfo = IPC::ReadParam<RefPtr<::nsIReferrerInfo>>(aReader);
    if (!maybe___referrerInfo) {
        aReader->FatalError("Error deserializing 'referrerInfo' (nsIReferrerInfo) member of 'WebBrowserPersistDocumentAttrs'");
        return {};

    }
    auto& _referrerInfo = *maybe___referrerInfo;
    // Sentinel = 'referrerInfo'
    if ((!((aReader)->ReadSentinel(540214506)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'referrerInfo' (nsIReferrerInfo) member of 'WebBrowserPersistDocumentAttrs'");
        return {};
    }
    auto maybe___cookieJarSettings = IPC::ReadParam<::mozilla::net::CookieJarSettingsArgs>(aReader);
    if (!maybe___cookieJarSettings) {
        aReader->FatalError("Error deserializing 'cookieJarSettings' (CookieJarSettingsArgs) member of 'WebBrowserPersistDocumentAttrs'");
        return {};

    }
    auto& _cookieJarSettings = *maybe___cookieJarSettings;
    // Sentinel = 'cookieJarSettings'
    if ((!((aReader)->ReadSentinel(1031800553)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'cookieJarSettings' (CookieJarSettingsArgs) member of 'WebBrowserPersistDocumentAttrs'");
        return {};
    }
    auto maybe___contentDisposition = IPC::ReadParam<::nsString>(aReader);
    if (!maybe___contentDisposition) {
        aReader->FatalError("Error deserializing 'contentDisposition' (nsString) member of 'WebBrowserPersistDocumentAttrs'");
        return {};

    }
    auto& _contentDisposition = *maybe___contentDisposition;
    // Sentinel = 'contentDisposition'
    if ((!((aReader)->ReadSentinel(1196361617)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'contentDisposition' (nsString) member of 'WebBrowserPersistDocumentAttrs'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_isPrivate),
            std::move(_documentURI),
            std::move(_baseURI),
            std::move(_contentType),
            std::move(_characterSet),
            std::move(_title),
            std::move(_referrerInfo),
            std::move(_cookieJarSettings),
            std::move(_contentDisposition),
            ::uint32_t{0},
            ::uint32_t{0}};
    if ((!((aReader)->ReadBytesInto((&((result__)->sessionHistoryCacheKey())), 8)))) {
        aReader->FatalError("Error bulk reading fields from uint32_t");
        return {};
    }
    // Sentinel = 'sessionHistoryCacheKey | persistFlags'
    if ((!((aReader)->ReadSentinel(440340135)))) {
        mozilla::ipc::SentinelReadError("Error bulk reading fields from uint32_t");
        return {};
    }
    return result__;
}

} // namespace IPC

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

namespace IPC {
auto ParamTraits<::mozilla::WebBrowserPersistURIMapEntry>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).mapFrom());
    // Sentinel = 'mapFrom'
    (aWriter)->WriteSentinel(187761363);
    IPC::WriteParam(aWriter, (aVar).mapTo());
    // Sentinel = 'mapTo'
    (aWriter)->WriteSentinel(101777922);
}

auto ParamTraits<::mozilla::WebBrowserPersistURIMapEntry>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    auto maybe___mapFrom = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___mapFrom) {
        aReader->FatalError("Error deserializing 'mapFrom' (nsCString) member of 'WebBrowserPersistURIMapEntry'");
        return {};

    }
    auto& _mapFrom = *maybe___mapFrom;
    // Sentinel = 'mapFrom'
    if ((!((aReader)->ReadSentinel(187761363)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'mapFrom' (nsCString) member of 'WebBrowserPersistURIMapEntry'");
        return {};
    }
    auto maybe___mapTo = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___mapTo) {
        aReader->FatalError("Error deserializing 'mapTo' (nsCString) member of 'WebBrowserPersistURIMapEntry'");
        return {};

    }
    auto& _mapTo = *maybe___mapTo;
    // Sentinel = 'mapTo'
    if ((!((aReader)->ReadSentinel(101777922)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'mapTo' (nsCString) member of 'WebBrowserPersistURIMapEntry'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_mapFrom),
            std::move(_mapTo)};
    return result__;
}

} // namespace IPC

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

namespace IPC {
auto ParamTraits<::mozilla::WebBrowserPersistURIMap>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).mapURIs());
    // Sentinel = 'mapURIs'
    (aWriter)->WriteSentinel(180814498);
    IPC::WriteParam(aWriter, (aVar).targetBaseURI());
    // Sentinel = 'targetBaseURI'
    (aWriter)->WriteSentinel(610862323);
}

auto ParamTraits<::mozilla::WebBrowserPersistURIMap>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    auto maybe___mapURIs = IPC::ReadParam<nsTArray<::mozilla::WebBrowserPersistURIMapEntry>>(aReader);
    if (!maybe___mapURIs) {
        aReader->FatalError("Error deserializing 'mapURIs' (WebBrowserPersistURIMapEntry[]) member of 'WebBrowserPersistURIMap'");
        return {};

    }
    auto& _mapURIs = *maybe___mapURIs;
    // Sentinel = 'mapURIs'
    if ((!((aReader)->ReadSentinel(180814498)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'mapURIs' (WebBrowserPersistURIMapEntry[]) member of 'WebBrowserPersistURIMap'");
        return {};
    }
    auto maybe___targetBaseURI = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___targetBaseURI) {
        aReader->FatalError("Error deserializing 'targetBaseURI' (nsCString) member of 'WebBrowserPersistURIMap'");
        return {};

    }
    auto& _targetBaseURI = *maybe___targetBaseURI;
    // Sentinel = 'targetBaseURI'
    if ((!((aReader)->ReadSentinel(610862323)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'targetBaseURI' (nsCString) member of 'WebBrowserPersistURIMap'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_mapURIs),
            std::move(_targetBaseURI)};
    return result__;
}

} // namespace IPC
