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

#ifndef PExtensions_h
#define PExtensions_h

#include "mozilla/Attributes.h"
#include "IPCMessageStart.h"
#include "mozilla/RefPtr.h"
#include "nsString.h"
#include "nsTArray.h"
#include "nsTHashtable.h"
#include "mozilla/MozPromise.h"
#include "mozilla/OperatorNewExtensions.h"
#include "mozilla/UniquePtr.h"
#include "mozilla/ipc/ByteBuf.h"
#include "mozilla/ipc/FileDescriptor.h"
#include "mozilla/ipc/IPCForwards.h"
#include "mozilla/ipc/Shmem.h"

// Headers for typedefs
#include "mozilla/ipc/IPDLStructMember.h"
#include "mozilla/dom/DOMTypes.h"


//-----------------------------------------------------------------------------
// Declaration of the IPDL type |struct FrameTransitionData|
//
namespace mozilla {
namespace extensions {
class FrameTransitionData final
{
private:

public:
#ifdef __clang__
#  pragma clang diagnostic push
#  if __has_warning("-Wdefaulted-function-deleted")
#    pragma clang diagnostic ignored "-Wdefaulted-function-deleted"
#  endif
#endif
    FrameTransitionData() = default;
#ifdef __clang__
#  pragma clang diagnostic pop
#endif

    MOZ_IMPLICIT FrameTransitionData(
            const bool& _clientRedirect,
            const bool& _formSubmit,
            const bool& _forwardBack,
            const bool& _reload,
            const bool& _serverRedirect) :
        clientRedirect_(_clientRedirect),
        formSubmit_(_formSubmit),
        forwardBack_(_forwardBack),
        reload_(_reload),
        serverRedirect_(_serverRedirect)
    {
    }

    MOZ_IMPLICIT FrameTransitionData(
            bool&& _clientRedirect,
            bool&& _formSubmit,
            bool&& _forwardBack,
            bool&& _reload,
            bool&& _serverRedirect) :
        clientRedirect_(std::move(_clientRedirect)),
        formSubmit_(std::move(_formSubmit)),
        forwardBack_(std::move(_forwardBack)),
        reload_(std::move(_reload)),
        serverRedirect_(std::move(_serverRedirect))
    {
    }

    bool&
    clientRedirect()
    {
        return clientRedirect_;
    }
    const bool&
    clientRedirect() const
    {
        return clientRedirect_;
    }

    bool&
    formSubmit()
    {
        return formSubmit_;
    }
    const bool&
    formSubmit() const
    {
        return formSubmit_;
    }

    bool&
    forwardBack()
    {
        return forwardBack_;
    }
    const bool&
    forwardBack() const
    {
        return forwardBack_;
    }

    bool&
    reload()
    {
        return reload_;
    }
    const bool&
    reload() const
    {
        return reload_;
    }

    bool&
    serverRedirect()
    {
        return serverRedirect_;
    }
    const bool&
    serverRedirect() const
    {
        return serverRedirect_;
    }

private:
    ::mozilla::ipc::IPDLStructMember<bool> clientRedirect_;
    ::mozilla::ipc::IPDLStructMember<bool> formSubmit_;
    ::mozilla::ipc::IPDLStructMember<bool> forwardBack_;
    ::mozilla::ipc::IPDLStructMember<bool> reload_;
    ::mozilla::ipc::IPDLStructMember<bool> serverRedirect_;
};
} // namespace extensions
} // namespace mozilla

namespace IPC {
template<>
struct ParamTraits <::mozilla::extensions::FrameTransitionData>
{
    typedef ::mozilla::extensions::FrameTransitionData paramType;
    static void
    Write(
            IPC::MessageWriter* aWriter,
            const paramType& aVar);
    static IPC::ReadResult<paramType>
    Read(IPC::MessageReader* aReader);
};
} // namespace IPC

namespace mozilla {
namespace extensions {
class PExtensionsParent;
} // namespace extensions
} // namespace mozilla
namespace mozilla {
namespace extensions {
class PExtensionsChild;
} // namespace extensions
} // namespace mozilla

//-----------------------------------------------------------------------------
// Code common to PExtensionsChild and PExtensionsParent
//
namespace mozilla {
namespace extensions {
namespace PExtensions {

nsresult
CreateEndpoints(
        mozilla::ipc::EndpointProcInfo aParentDestInfo,
        mozilla::ipc::EndpointProcInfo aChildDestInfo,
        mozilla::ipc::Endpoint<::mozilla::extensions::PExtensionsParent>* aParent,
        mozilla::ipc::Endpoint<::mozilla::extensions::PExtensionsChild>* aChild);

nsresult
CreateEndpoints(
        mozilla::ipc::Endpoint<::mozilla::extensions::PExtensionsParent>* aParent,
        mozilla::ipc::Endpoint<::mozilla::extensions::PExtensionsChild>* aChild);

enum MessageType {
    PExtensionsStart = PExtensionsMsgStart << 16,
    Msg___delete____ID,
    Reply___delete____ID,
    Msg_DocumentChange__ID,
    Msg_HistoryChange__ID,
    Msg_StateChange__ID,
    Msg_CreatedNavigationTarget__ID,
    Msg_DOMContentLoaded__ID,
    PExtensionsEnd
};

mozilla::UniquePtr<IPC::Message>
Msg___delete__(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply___delete__(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_DocumentChange(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_HistoryChange(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_StateChange(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_CreatedNavigationTarget(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_DOMContentLoaded(IPC::Message::routeid_t routingId);



} // namespace PExtensions
} // namespace extensions
} // namespace mozilla

#endif // ifndef PExtensions_h
