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

#ifndef PWebRenderBridgeParent_h
#define PWebRenderBridgeParent_h

#include "mozilla/layers/PWebRenderBridge.h"
#ifdef DEBUG
#include "prenv.h"
#endif  // DEBUG

#include "mozilla/Tainting.h"
#include "mozilla/ipc/MessageChannel.h"
#include "mozilla/ipc/ProtocolUtils.h"
// Headers for things that cannot be forward declared
#include "ImageContainer.h"
#include "ImageTypes.h"
#include "NonCustomCSSPropertyId.h"
#include "Units.h"
#include "gfxPoint.h"
#include "gfxTypes.h"
#include "mozilla/HalIPCUtils.h"
#include "mozilla/ServoStyleConsts.h"
#include "mozilla/TimeStamp.h"
#include "mozilla/VsyncDispatcher.h"
#include "mozilla/WidgetUtils.h"
#include "mozilla/gfx/2D.h"
#include "mozilla/gfx/FileHandleWrapper.h"
#include "mozilla/gfx/Matrix.h"
#include "mozilla/gfx/Point.h"
#include "mozilla/gfx/Rect.h"
#include "mozilla/gfx/Types.h"
#include "mozilla/ipc/CrossProcessSemaphore.h"
#include "mozilla/ipc/IPCTypes.h"
#include "mozilla/ipc/ProtocolUtils.h"
#include "mozilla/ipc/SharedMemoryHandle.h"
#include "mozilla/layers/APZTestData.h"
#include "mozilla/layers/CompositorTypes.h"
#include "mozilla/layers/FocusTarget.h"
#include "mozilla/layers/FrameUniformityData.h"
#include "mozilla/layers/GpuFence.h"
#include "mozilla/layers/LayersTypes.h"
#include "mozilla/layers/RenderRootTypes.h"
#include "mozilla/layers/ScrollableLayerGuid.h"
#include "mozilla/layers/VideoBridgeUtils.h"
#include "mozilla/webrender/WebRenderTypes.h"
#include "mozilla/webrender/webrender_ffi.h"
#include "nsColor.h"
#include "nsCoord.h"
#include "nsRegion.h"

namespace mozilla {
namespace layers {
class PCompositorBridgeParent;
} // namespace layers
} // namespace mozilla
namespace mozilla {
namespace layers {
class PCompositorBridgeChild;
} // namespace layers
} // namespace mozilla

namespace mozilla {
namespace layers {
class PTextureParent;
} // namespace layers
} // namespace mozilla
namespace mozilla {
namespace layers {
class PTextureChild;
} // namespace layers
} // namespace mozilla

namespace mozilla {
namespace layers {
class PCompositorBridgeParent;
} // namespace layers
} // namespace mozilla

namespace mozilla {
struct null_t;
} // namespace mozilla

namespace mozilla {
namespace gfx {
struct DeviceColor;
} // namespace gfx
} // namespace mozilla

struct nsRect;

struct nsPoint;

namespace mozilla {
class TimeStamp;
} // namespace mozilla

namespace mozilla {
namespace layers {
struct TextureInfo;
} // namespace layers
} // namespace mozilla

namespace mozilla {
struct void_t;
} // namespace mozilla

namespace mozilla {
struct void_t;
} // namespace mozilla

namespace mozilla {
namespace layers {
struct TextureFactoryIdentifier;
} // namespace layers
} // namespace mozilla

namespace mozilla {
namespace layers {
struct TextureInfo;
} // namespace layers
} // namespace mozilla

namespace mozilla {
namespace layers {


class PWebRenderBridgeParent :
    public mozilla::ipc::IProtocol
{
private:
    friend class ::mozilla::layers::PCompositorBridgeParent;
public:
    static constexpr ::mozilla::ipc::ProtocolId kProtocolId = PWebRenderBridgeMsgStart;
protected:
    typedef ::mozilla::layers::APZTestData APZTestData;
    typedef mozilla::ipc::ActorId ActorId;
    typedef ::mozilla::layers::Animatable Animatable;
    typedef ::mozilla::layers::Animation Animation;
    typedef ::mozilla::layers::AnimationSegment AnimationSegment;
    typedef ::mozilla::layers::AsyncParentMessageData AsyncParentMessageData;
    typedef ::mozilla::wr::BlobImageKey BlobImageKey;
    typedef ::mozilla::layers::BufferDescriptor BufferDescriptor;
    typedef ::mozilla::wr::BuiltDisplayListDescriptor BuiltDisplayListDescriptor;
    typedef ::mozilla::ipc::ByteBuf ByteBuf;
    typedef ::mozilla::CSSCoord CSSCoord;
    typedef ::mozilla::CSSPoint CSSPoint;
    typedef ::mozilla::CSSRect CSSRect;
    typedef ::mozilla::gfx::ChromaSubsampling ChromaSubsampling;
    typedef ::mozilla::layers::ClearImagesType ClearImagesType;
    typedef ::mozilla::gfx::ColorDepth ColorDepth;
    typedef ::mozilla::gfx::ColorRange ColorRange;
    typedef ::mozilla::gfx::ColorSpace2 ColorSpace2;
    typedef ::mozilla::layers::CompositableHandle CompositableHandle;
    typedef ::mozilla::layers::CompositableHandleOwner CompositableHandleOwner;
    typedef ::mozilla::layers::CompositableOperation CompositableOperation;
    typedef ::mozilla::layers::CompositableOperationDetail CompositableOperationDetail;
    typedef ::mozilla::layers::CompositeProcessFencesHolderId CompositeProcessFencesHolderId;
    typedef ::mozilla::layers::CompositionPayload CompositionPayload;
    typedef ::mozilla::layers::CompositorAnimations CompositorAnimations;
    typedef ::mozilla::layers::CrossProcessSemaphoreDescriptor CrossProcessSemaphoreDescriptor;
    typedef ::mozilla::CrossProcessSemaphoreHandle CrossProcessSemaphoreHandle;
    typedef ::mozilla::gfx::DeviceColor DeviceColor;
    typedef ::mozilla::layers::DiagnosticTypes DiagnosticTypes;
    typedef ::mozilla::layers::DisplayListData DisplayListData;
    typedef ::mozilla::layers::EGLImageDescriptor EGLImageDescriptor;
    template<class FooSide> using Endpoint = mozilla::ipc::Endpoint<FooSide>;
    typedef ::mozilla::layers::EventRegionsOverride EventRegionsOverride;
    typedef ::mozilla::wr::ExternalImageId ExternalImageId;
    typedef ::mozilla::wr::ExternalImageKeyPair ExternalImageKeyPair;
    typedef ::mozilla::wr::ExternalImageSource ExternalImageSource;
    typedef ::mozilla::ipc::FileDescriptor FileDescriptor;
    typedef ::mozilla::gfx::FileHandleWrapper FileHandleWrapper;
    typedef ::mozilla::layers::FocusTarget FocusTarget;
    typedef ::mozilla::wr::FontInstanceKey FontInstanceKey;
    typedef ::mozilla::wr::FontKey FontKey;
    typedef ::mozilla::layers::FrameUniformityData FrameUniformityData;
    typedef ::mozilla::gfx::Glyph Glyph;
    typedef ::mozilla::layers::GpuFence GpuFence;
    typedef ::mozilla::layers::GpuProcessTextureId GpuProcessTextureId;
    typedef ::mozilla::wr::IdNamespace IdNamespace;
    typedef ::mozilla::layers::ImageCompositeNotification ImageCompositeNotification;
    typedef ::mozilla::wr::ImageDescriptor ImageDescriptor;
    typedef ::mozilla::ImageIntRect ImageIntRect;
    typedef ::mozilla::wr::ImageKey ImageKey;
    typedef ::mozilla::wr::ImageRendering ImageRendering;
    typedef ::mozilla::gfx::IntPoint IntPoint;
    typedef ::mozilla::gfx::IntRect IntRect;
    typedef ::mozilla::gfx::IntSize IntSize;
    typedef ::mozilla::layers::LayerColor LayerColor;
    typedef ::mozilla::LayerCoord LayerCoord;
    typedef ::mozilla::layers::LayerHandle LayerHandle;
    typedef ::mozilla::LayerIntRect LayerIntRect;
    typedef ::mozilla::LayerIntRegion LayerIntRegion;
    typedef ::mozilla::LayerIntSize LayerIntSize;
    typedef ::mozilla::LayerMargin LayerMargin;
    typedef ::mozilla::LayerPoint LayerPoint;
    typedef ::mozilla::LayerRect LayerRect;
    typedef ::mozilla::LayerSize LayerSize;
    typedef ::mozilla::layers::LayersBackend LayersBackend;
    typedef ::mozilla::layers::LayersId LayersId;
    typedef ::mozilla::LayoutDeviceIntRect LayoutDeviceIntRect;
    typedef ::mozilla::LayoutDevicePoint LayoutDevicePoint;
    typedef ::mozilla::LayoutDeviceRect LayoutDeviceRect;
    typedef ::mozilla::LayoutDeviceSize LayoutDeviceSize;
    typedef ::mozilla::wr::LayoutSize LayoutSize;
    typedef ::mozilla::LengthPercentage LengthPercentage;
    template<class FooSide> using ManagedEndpoint = mozilla::ipc::ManagedEndpoint<FooSide>;
    typedef ::mozilla::gfx::Matrix4x4 Matrix4x4;
    typedef ::mozilla::wr::MaybeFontInstanceOptions MaybeFontInstanceOptions;
    typedef ::mozilla::wr::MaybeFontInstancePlatformOptions MaybeFontInstancePlatformOptions;
    typedef ::mozilla::wr::MaybeIdNamespace MaybeIdNamespace;
    typedef ::mozilla::layers::MaybeTransactionData MaybeTransactionData;
    typedef ::mozilla::layers::MaybeVideoBridgeSource MaybeVideoBridgeSource;
    typedef ::mozilla::layers::MemoryOrShmem MemoryOrShmem;
    typedef ::mozilla::wr::MixBlendMode MixBlendMode;
    typedef ::mozilla::layers::MotionPathData MotionPathData;
    typedef ::NonCustomCSSPropertyId NonCustomCSSPropertyId;
    typedef ::mozilla::layers::OMTAValue OMTAValue;
    typedef ::mozilla::layers::OffsetRange OffsetRange;
    typedef ::mozilla::layers::OpAddBlobImage OpAddBlobImage;
    typedef ::mozilla::layers::OpAddCompositorAnimations OpAddCompositorAnimations;
    typedef ::mozilla::layers::OpAddFontDescriptor OpAddFontDescriptor;
    typedef ::mozilla::layers::OpAddFontInstance OpAddFontInstance;
    typedef ::mozilla::layers::OpAddImage OpAddImage;
    typedef ::mozilla::layers::OpAddPipelineIdForCompositable OpAddPipelineIdForCompositable;
    typedef ::mozilla::layers::OpAddRawFont OpAddRawFont;
    typedef ::mozilla::layers::OpAddSharedExternalImage OpAddSharedExternalImage;
    typedef ::mozilla::layers::OpAddSnapshotImage OpAddSnapshotImage;
    typedef ::mozilla::layers::OpAttachAsyncCompositable OpAttachAsyncCompositable;
    typedef ::mozilla::layers::OpAttachCompositable OpAttachCompositable;
    typedef ::mozilla::layers::OpClearImages OpClearImages;
    typedef ::mozilla::layers::OpContentBufferSwap OpContentBufferSwap;
    typedef ::mozilla::layers::OpDeleteBlobImage OpDeleteBlobImage;
    typedef ::mozilla::layers::OpDeleteFont OpDeleteFont;
    typedef ::mozilla::layers::OpDeleteFontInstance OpDeleteFontInstance;
    typedef ::mozilla::layers::OpDeleteImage OpDeleteImage;
    typedef ::mozilla::layers::OpDeleteSnapshotImage OpDeleteSnapshotImage;
    typedef ::mozilla::layers::OpDestroy OpDestroy;
    typedef ::mozilla::layers::OpEnableRemoteTexturePushCallback OpEnableRemoteTexturePushCallback;
    typedef ::mozilla::layers::OpNotifyNotUsed OpNotifyNotUsed;
    typedef ::mozilla::layers::OpPushExternalImageForTexture OpPushExternalImageForTexture;
    typedef ::mozilla::layers::OpReleaseTextureOfImage OpReleaseTextureOfImage;
    typedef ::mozilla::layers::OpRemovePipelineIdForCompositable OpRemovePipelineIdForCompositable;
    typedef ::mozilla::layers::OpRemoveTexture OpRemoveTexture;
    typedef ::mozilla::layers::OpSetBlobImageVisibleArea OpSetBlobImageVisibleArea;
    typedef ::mozilla::layers::OpUpdateAsyncImagePipeline OpUpdateAsyncImagePipeline;
    typedef ::mozilla::layers::OpUpdateBlobImage OpUpdateBlobImage;
    typedef ::mozilla::layers::OpUpdateImage OpUpdateImage;
    typedef ::mozilla::layers::OpUpdateResource OpUpdateResource;
    typedef ::mozilla::layers::OpUpdateSharedExternalImage OpUpdateSharedExternalImage;
    typedef ::mozilla::layers::OpUpdatedAsyncImagePipeline OpUpdatedAsyncImagePipeline;
    typedef ::mozilla::layers::OpUseRemoteTexture OpUseRemoteTexture;
    typedef ::mozilla::layers::OpUseTexture OpUseTexture;
    typedef ::mozilla::layers::PCompositorBridgeChild PCompositorBridgeChild;
    typedef ::mozilla::layers::PCompositorBridgeParent PCompositorBridgeParent;
    typedef ::mozilla::layers::PTextureChild PTextureChild;
    typedef ::mozilla::layers::PTextureParent PTextureParent;
    typedef ::mozilla::ParentLayerIntRect ParentLayerIntRect;
    typedef ::mozilla::ParentLayerRect ParentLayerRect;
    typedef ::mozilla::layers::PartialPrerenderData PartialPrerenderData;
    typedef ::mozilla::wr::PipelineId PipelineId;
    typedef ::mozilla::gfx::Point Point;
    typedef ::mozilla::gfx::Point3D Point3D;
    typedef base::ProcessId ProcessId;
    typedef mozilla::ipc::ProtocolId ProtocolId;
    typedef ::mozilla::layers::RGBDescriptor RGBDescriptor;
    typedef ::mozilla::layers::ReadLockDescriptor ReadLockDescriptor;
    typedef ::mozilla::ipc::ReadOnlySharedMemoryHandle ReadOnlySharedMemoryHandle;
    typedef ::mozilla::gfx::Rect Rect;
    typedef ::mozilla::layers::RefCountedShmem RefCountedShmem;
    typedef ::mozilla::layers::RemoteDecoderVideoSubDescriptor RemoteDecoderVideoSubDescriptor;
    typedef ::mozilla::layers::RemoteTextureId RemoteTextureId;
    typedef ::mozilla::layers::RemoteTextureOwnerId RemoteTextureOwnerId;
    typedef ::mozilla::wr::RenderReasons RenderReasons;
    typedef mozilla::ipc::ResponseRejectReason ResponseRejectReason;
    typedef ::mozilla::gfx::SamplingFilter SamplingFilter;
    typedef ::mozilla::layers::ScaleMode ScaleMode;
    typedef ::mozilla::hal::ScreenOrientation ScreenOrientation;
    typedef ::mozilla::ScreenRotation ScreenRotation;
    typedef ::mozilla::layers::ScrollDirection ScrollDirection;
    typedef ::mozilla::layers::ScrollTimelineOptions ScrollTimelineOptions;
    typedef ::mozilla::layers::ScrollableLayerGuid ScrollableLayerGuid;
    typedef ::mozilla::ipc::Shmem Shmem;
    typedef ::mozilla::SideBits SideBits;
    typedef ::mozilla::wr::SnapshotImageKey SnapshotImageKey;
    typedef ::mozilla::StereoMode StereoMode;
    typedef ::mozilla::StyleComputedTimingFunction StyleComputedTimingFunction;
    typedef ::mozilla::StyleOffsetPath StyleOffsetPath;
    typedef ::mozilla::StyleOffsetPosition StyleOffsetPosition;
    typedef ::mozilla::StyleOffsetRotate StyleOffsetRotate;
    typedef ::mozilla::StylePositionOrAuto StylePositionOrAuto;
    typedef ::mozilla::StyleRotate StyleRotate;
    typedef ::mozilla::StyleScale StyleScale;
    typedef ::mozilla::StyleTransform StyleTransform;
    typedef ::mozilla::StyleTranslate StyleTranslate;
    typedef ::mozilla::layers::SurfaceDescriptor SurfaceDescriptor;
    typedef ::mozilla::layers::SurfaceDescriptorAndroidHardwareBuffer SurfaceDescriptorAndroidHardwareBuffer;
    typedef ::mozilla::layers::SurfaceDescriptorBuffer SurfaceDescriptorBuffer;
    typedef ::mozilla::layers::SurfaceDescriptorCanvasSurface SurfaceDescriptorCanvasSurface;
    typedef ::mozilla::layers::SurfaceDescriptorD3D10 SurfaceDescriptorD3D10;
    typedef ::mozilla::layers::SurfaceDescriptorDMABuf SurfaceDescriptorDMABuf;
    typedef ::mozilla::layers::SurfaceDescriptorDXGIYCbCr SurfaceDescriptorDXGIYCbCr;
    typedef ::mozilla::layers::SurfaceDescriptorDcompSurface SurfaceDescriptorDcompSurface;
    typedef ::mozilla::layers::SurfaceDescriptorExternalImage SurfaceDescriptorExternalImage;
    typedef ::mozilla::layers::SurfaceDescriptorGPUVideo SurfaceDescriptorGPUVideo;
    typedef ::mozilla::layers::SurfaceDescriptorMacIOSurface SurfaceDescriptorMacIOSurface;
    typedef ::mozilla::layers::SurfaceDescriptorRemoteDecoder SurfaceDescriptorRemoteDecoder;
    typedef ::mozilla::layers::SurfaceDescriptorRemoteDecoderId SurfaceDescriptorRemoteDecoderId;
    typedef ::mozilla::layers::SurfaceDescriptorRemoteTexture SurfaceDescriptorRemoteTexture;
    typedef ::mozilla::layers::SurfaceDescriptorShared SurfaceDescriptorShared;
    typedef ::mozilla::layers::SurfaceDescriptorSharedGLTexture SurfaceDescriptorSharedGLTexture;
    typedef ::mozilla::gfx::SurfaceFormat SurfaceFormat;
    typedef ::mozilla::layers::SurfaceTextureDescriptor SurfaceTextureDescriptor;
    typedef ::mozilla::layers::TargetConfig TargetConfig;
    typedef ::mozilla::layers::TextureFactoryIdentifier TextureFactoryIdentifier;
    typedef ::mozilla::layers::TextureFlags TextureFlags;
    typedef ::mozilla::layers::TextureInfo TextureInfo;
    typedef ::mozilla::TimeDuration TimeDuration;
    typedef ::mozilla::TimeStamp TimeStamp;
    typedef ::mozilla::layers::TimedTexture TimedTexture;
    typedef ::mozilla::layers::TransactionId TransactionId;
    typedef ::mozilla::gfx::TransferFunction TransferFunction;
    typedef ::mozilla::layers::TransformData TransformData;
    template<class T> using UniquePtr = mozilla::UniquePtr<T>;
    typedef ::mozilla::layers::UntrustedShmemSection UntrustedShmemSection;
    typedef ::mozilla::layers::ScrollableLayerGuid::ViewID ViewID;
    typedef ::mozilla::VsyncId VsyncId;
    typedef ::mozilla::layers::WebRenderParentCommand WebRenderParentCommand;
    typedef ::mozilla::WindowsHandle WindowsHandle;
    typedef ::mozilla::wr::WrRotation WrRotation;
    typedef ::mozilla::layers::YCbCrDescriptor YCbCrDescriptor;
    typedef ::mozilla::gfx::YUVColorSpace YUVColorSpace;
    typedef ::gfxImageFormat gfxImageFormat;
    typedef ::gfxPoint gfxPoint;
    typedef ::int16_t int16_t;
    typedef ::int32_t int32_t;
    typedef ::int64_t int64_t;
    typedef ::int8_t int8_t;
    typedef ::intptr_t intptr_t;
    typedef ::nsCString nsCString;
    typedef ::nsIntRegion nsIntRegion;
    typedef ::nsPoint nsPoint;
    typedef ::nsRect nsRect;
    typedef ::nsString nsString;
    typedef ::nscolor nscolor;
    typedef ::nscoord nscoord;
    typedef ::nsresult nsresult;
    typedef ::mozilla::null_t null_t;
    typedef ::uint16_t uint16_t;
    typedef ::uint32_t uint32_t;
    typedef ::uint64_t uint64_t;
    typedef ::uint8_t uint8_t;
    typedef ::uintptr_t uintptr_t;
    typedef ::mozilla::void_t void_t;

public:
    typedef std::function<void(const bool&)> EndWheelTransactionResolver;

protected:
    virtual mozilla::ipc::IPCResult
    RecvEnsureConnected(
            TextureFactoryIdentifier* textureFactoryIdentifier,
            MaybeIdNamespace* maybeIdNamespace,
            nsCString* error) = 0;
    virtual mozilla::ipc::IPCResult
    RecvNewCompositable(
            const CompositableHandle& handle,
            const TextureInfo& info) = 0;
    virtual mozilla::ipc::IPCResult
    RecvReleaseCompositable(const CompositableHandle& compositable) = 0;
    virtual mozilla::ipc::IPCResult
    RecvDeleteCompositorAnimations(nsTArray<uint64_t>&& aIds) = 0;
    virtual mozilla::ipc::IPCResult
    RecvSetDisplayList(
            DisplayListData&& displayList,
            nsTArray<OpDestroy>&& toDestroy,
            const uint64_t& fwdTransactionId,
            const TransactionId& transactionId,
            const bool& containsSVGGroup,
            const VsyncId& vsyncId,
            const TimeStamp& vsyncStartTime,
            const TimeStamp& refreshStartTime,
            const TimeStamp& txnStartTime,
            const nsACString& txnURL,
            const TimeStamp& fwdTime,
            nsTArray<CompositionPayload>&& payloads,
            const bool& renderOffscreen) = 0;
    virtual mozilla::ipc::IPCResult
    RecvEmptyTransaction(
            const FocusTarget& focusTarget,
            MaybeTransactionData&& transationData,
            nsTArray<OpDestroy>&& toDestroy,
            const uint64_t& fwdTransactionId,
            const TransactionId& transactionId,
            const VsyncId& vsyncId,
            const TimeStamp& vsyncStartTime,
            const TimeStamp& refreshStartTime,
            const TimeStamp& txnStartTime,
            const nsACString& txnURL,
            const TimeStamp& fwdTime,
            nsTArray<CompositionPayload>&& payloads) = 0;
    virtual mozilla::ipc::IPCResult
    RecvSetFocusTarget(const FocusTarget& focusTarget) = 0;
    virtual mozilla::ipc::IPCResult
    RecvUpdateResources(
            const IdNamespace& aIdNamespace,
            nsTArray<OpUpdateResource>&& aResourceUpdates,
            nsTArray<RefCountedShmem>&& aSmallShmems,
            nsTArray<Shmem>&& aLargeShmems) = 0;
    virtual mozilla::ipc::IPCResult
    RecvParentCommands(
            const IdNamespace& aIdNamespace,
            nsTArray<WebRenderParentCommand>&& commands) = 0;
    virtual mozilla::ipc::IPCResult
    RecvGetSnapshot(
            mozilla::NotNull<PTextureParent*> texture,
            bool* aNeedsYFlip) = 0;
    virtual mozilla::ipc::IPCResult
    RecvClearCachedResources() = 0;
    virtual mozilla::ipc::IPCResult
    RecvSetDefaultClearColor(const uint32_t& aColor) = 0;
    virtual mozilla::ipc::IPCResult
    RecvInvalidateRenderedFrame() = 0;
    virtual mozilla::ipc::IPCResult
    RecvScheduleComposite(const RenderReasons& aReasons) = 0;
    virtual mozilla::ipc::IPCResult
    RecvCapture() = 0;
    virtual mozilla::ipc::IPCResult
    RecvStartCaptureSequence(
            const nsACString& aPath,
            const uint32_t& aFlags) = 0;
    virtual mozilla::ipc::IPCResult
    RecvStopCaptureSequence() = 0;
    virtual mozilla::ipc::IPCResult
    RecvSyncWithCompositor() = 0;
    virtual mozilla::ipc::IPCResult
    RecvSetConfirmedTargetAPZC(
            const uint64_t& aInputBlockId,
            nsTArray<ScrollableLayerGuid>&& aTargets) = 0;
    virtual mozilla::ipc::IPCResult
    RecvSetTestSampleTime(const TimeStamp& sampleTime) = 0;
    virtual mozilla::ipc::IPCResult
    RecvLeaveTestMode() = 0;
    virtual mozilla::ipc::IPCResult
    RecvGetAnimationValue(
            const uint64_t& aCompositorAnimationsId,
            OMTAValue* value) = 0;
    virtual mozilla::ipc::IPCResult
    RecvSetAsyncScrollOffset(
            const ViewID& scrollId,
            const float& x,
            const float& y) = 0;
    virtual mozilla::ipc::IPCResult
    RecvSetAsyncZoom(
            const ViewID& scrollId,
            const float& zoom) = 0;
    virtual mozilla::ipc::IPCResult
    RecvFlushApzRepaints() = 0;
    virtual mozilla::ipc::IPCResult
    RecvGetAPZTestData(APZTestData* data) = 0;
    virtual mozilla::ipc::IPCResult
    RecvGetFrameUniformity(FrameUniformityData* data) = 0;
    virtual mozilla::ipc::IPCResult
    RecvEndWheelTransaction(EndWheelTransactionResolver&& aResolve) = 0;
    virtual mozilla::ipc::IPCResult
    RecvShutdown() = 0;
    virtual mozilla::ipc::IPCResult
    RecvShutdownSync() = 0;
public:
    typedef mozilla::ipc::IProtocol IProtocol;
    typedef IPC::Message Message;
    typedef base::ProcessHandle ProcessHandle;
    typedef mozilla::ipc::MessageChannel MessageChannel;

public:
    MOZ_IMPLICIT PWebRenderBridgeParent();

    virtual ~PWebRenderBridgeParent();

protected:
    void
    ActorAlloc() final;
    void
    ActorDealloc() final;
public:
    ::base::ProcessId
    OtherPid() const;
    ::GeckoChildID
    OtherChildID() const;
    ::mozilla::ipc::EndpointProcInfo
    OtherEndpointProcInfo() const;

    PCompositorBridgeParent*
    Manager() const;

    mozilla::Span<mozilla::ipc::ProtocolId const>
    ManagedProtocolIds() const final;

    UntypedManagedContainer*
    GetManagedActors(mozilla::ipc::ProtocolId aProtocol) final;

    void
    RejectPendingResponses(ResponseRejectReason aReason) final;

    [[nodiscard]] bool
    SendWrUpdated(
            const IdNamespace& aNewIdNamespace,
            const TextureFactoryIdentifier& textureFactoryIdentifier);

    [[nodiscard]] bool
    SendWrReleasedImages(mozilla::Span<ExternalImageKeyPair const> pairs);

    [[nodiscard]] static bool
    Send__delete__(PWebRenderBridgeParent* actor);

    void
    DeallocManagee(
            mozilla::ipc::ProtocolId aProtocolId,
            IProtocol* aListener) override;

    Result
    OnMessageReceived(const Message& msg__) override;

    Result
    OnMessageReceived(
            const Message& msg__,
            UniquePtr<Message>& reply__) override;

private:
    mozilla::ipc::IPDLAsyncReturnsCallbacks mAsyncCallbacks;

    bool mAwaitingManagedEndpointBind = false;

};


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

#endif // ifndef PWebRenderBridgeParent_h
