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

#ifndef PContentPermission_h
#define PContentPermission_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"


//-----------------------------------------------------------------------------
// Declaration of the IPDL type |struct PermissionRequest|
//
namespace mozilla {
namespace dom {
class PermissionRequest final
{
private:
    typedef ::nsCString nsCString;
    typedef ::nsString nsString;

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

    MOZ_IMPLICIT PermissionRequest(
            const nsCString& _type,
            const nsTArray<nsString>& _options) :
        type_(_type),
        options_(_options)
    {
    }

    MOZ_IMPLICIT PermissionRequest(
            nsCString&& _type,
            nsTArray<nsString>&& _options) :
        type_(std::move(_type)),
        options_(std::move(_options))
    {
    }

    nsCString&
    type()
    {
        return type_;
    }
    const nsCString&
    type() const
    {
        return type_;
    }

    nsTArray<nsString>&
    options()
    {
        return options_;
    }
    const nsTArray<nsString>&
    options() const
    {
        return options_;
    }

private:
    ::mozilla::ipc::IPDLStructMember<nsCString> type_;
    ::mozilla::ipc::IPDLStructMember<CopyableTArray<nsString>> options_;
};
} // namespace dom
} // namespace mozilla

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


//-----------------------------------------------------------------------------
// Declaration of the IPDL type |struct PermissionChoice|
//
namespace mozilla {
namespace dom {
class PermissionChoice final
{
private:
    typedef ::nsCString nsCString;
    typedef ::nsString nsString;

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

    MOZ_IMPLICIT PermissionChoice(
            const nsCString& _type,
            const nsString& _choice) :
        type_(_type),
        choice_(_choice)
    {
    }

    MOZ_IMPLICIT PermissionChoice(
            nsCString&& _type,
            nsString&& _choice) :
        type_(std::move(_type)),
        choice_(std::move(_choice))
    {
    }

    nsCString&
    type()
    {
        return type_;
    }
    const nsCString&
    type() const
    {
        return type_;
    }

    nsString&
    choice()
    {
        return choice_;
    }
    const nsString&
    choice() const
    {
        return choice_;
    }

private:
    ::mozilla::ipc::IPDLStructMember<nsCString> type_;
    ::mozilla::ipc::IPDLStructMember<nsString> choice_;
};
} // namespace dom
} // namespace mozilla

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

#endif // ifndef PContentPermission_h
