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

#ifndef PBrowserParent_h
#define PBrowserParent_h

#include "mozilla/dom/PBrowser.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 "Units.h"
#include "mozilla/AspectRatio.h"
#include "mozilla/ContentBlockingNotifier.h"
#include "mozilla/EventForwards.h"
#include "mozilla/HalIPCUtils.h"
#include "mozilla/NativeKeyBindingsType.h"
#include "mozilla/PresShellForwards.h"
#include "mozilla/ScrollbarPreferences.h"
#include "mozilla/ServoStyleConsts.h"
#include "mozilla/TimeStamp.h"
#include "mozilla/contentanalysis/ContentAnalysisIPCTypes.h"
#include "mozilla/dom/BindingDeclarations.h"
#include "mozilla/dom/BrowsingContext.h"
#include "mozilla/dom/EffectsInfo.h"
#include "mozilla/dom/FeaturePolicy.h"
#include "mozilla/dom/IntegrityPolicy.h"
#include "mozilla/dom/LoadURIOptionsBinding.h"
#include "mozilla/dom/NavigationBinding.h"
#include "mozilla/dom/NotificationBinding.h"
#include "mozilla/dom/RequestBinding.h"
#include "mozilla/dom/TabMessageTypes.h"
#include "mozilla/dom/UserNavigationInvolvement.h"
#include "mozilla/dom/WindowContext.h"
#include "mozilla/dom/ipc/IdType.h"
#include "mozilla/dom/ipc/StructuredCloneData.h"
#include "mozilla/gfx/Matrix.h"
#include "mozilla/gfx/Point.h"
#include "mozilla/gfx/Types.h"
#include "mozilla/ipc/BackgroundUtils.h"
#include "mozilla/ipc/IPCTypes.h"
#include "mozilla/layers/CompositorOptions.h"
#include "mozilla/layers/GeckoContentControllerTypes.h"
#include "mozilla/layers/LayersTypes.h"
#include "mozilla/layers/ScrollableLayerGuid.h"
#include "mozilla/net/ClassOfService.h"
#include "mozilla/net/PHttpChannelParams.h"
#include "nsICacheInfoChannel.h"
#include "nsIClassifiedChannel.h"
#include "nsIContentPolicy.h"
#include "nsIContentSecurityPolicy.h"
#include "nsIFilePicker.h"
#include "nsIFrame.h"
#include "nsILoadInfo.h"
#include "nsIWidget.h"
#include "nsIWidgetListener.h"
#include "nsNetUtil.h"
#include "nsRFPService.h"

namespace mozilla {
namespace dom {
class PColorPickerParent;
} // namespace dom
} // namespace mozilla
namespace mozilla {
namespace dom {
class PColorPickerChild;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
class PContentParent;
} // namespace dom
} // namespace mozilla
namespace mozilla {
namespace dom {
class PContentChild;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace a11y {
class PDocAccessibleParent;
} // namespace a11y
} // namespace mozilla
namespace mozilla {
namespace a11y {
class PDocAccessibleChild;
} // namespace a11y
} // namespace mozilla

namespace mozilla {
namespace dom {
class PFilePickerParent;
} // namespace dom
} // namespace mozilla
namespace mozilla {
namespace dom {
class PFilePickerChild;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace layout {
class PRemotePrintJobParent;
} // namespace layout
} // namespace mozilla
namespace mozilla {
namespace layout {
class PRemotePrintJobChild;
} // namespace layout
} // namespace mozilla

namespace mozilla {
namespace dom {
class PPaymentRequestParent;
} // namespace dom
} // namespace mozilla
namespace mozilla {
namespace dom {
class PPaymentRequestChild;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
class PSessionStoreParent;
} // namespace dom
} // namespace mozilla
namespace mozilla {
namespace dom {
class PSessionStoreChild;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
class PWindowGlobalParent;
} // namespace dom
} // namespace mozilla
namespace mozilla {
namespace dom {
class PWindowGlobalChild;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
class PBrowserBridgeParent;
} // namespace dom
} // namespace mozilla
namespace mozilla {
namespace dom {
class PBrowserBridgeChild;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
class PVsyncParent;
} // namespace dom
} // namespace mozilla
namespace mozilla {
namespace dom {
class PVsyncChild;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace a11y {
class PDocAccessibleParent;
} // namespace a11y
} // namespace mozilla

namespace mozilla {
namespace dom {
class PBrowserBridgeParent;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
class PColorPickerParent;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
class PContentParent;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
class PFilePickerParent;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
class PPaymentRequestParent;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
class PSessionStoreParent;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
class PVsyncParent;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
class PWindowGlobalParent;
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace hal_sandbox {
class PHalParent;
} // namespace hal_sandbox
} // namespace mozilla

namespace mozilla {
namespace net {
class PNeckoParent;
} // namespace net
} // namespace mozilla

namespace mozilla {
struct void_t;
} // namespace mozilla

namespace mozilla {
struct SerializedStructuredCloneBuffer;
} // namespace mozilla

namespace mozilla {
namespace dom {
struct LoadingSessionHistoryInfo;
} // namespace dom
} // namespace mozilla

class nsIPrincipal;

class nsIURI;

class nsIPolicyContainer;

class nsIInputStream;

class nsIReferrerInfo;

class nsIVariant;

namespace mozilla {
class RemoteLazyInputStream;
} // namespace mozilla

namespace mozilla {
namespace ipc {
class BigBuffer;
} // namespace ipc
} // namespace mozilla

struct nsHttpAtom;

namespace mozilla {
namespace net {
class nsHttpResponseHead;
} // namespace net
} // namespace mozilla

namespace mozilla {
class TimeStamp;
} // namespace mozilla

class nsIPropertyBag2;

class nsDOMNavigationTiming;

class nsDocShellLoadState;

namespace mozilla {
namespace dom {
struct LoadingSessionHistoryInfo;
} // namespace dom
} // namespace mozilla

class nsITransportSecurityInfo;

namespace mozilla {
struct void_t;
} // namespace mozilla

namespace mozilla {
class RemoteLazyInputStream;
} // namespace mozilla

class nsIPrincipal;

class nsIReferrerInfo;

namespace mozilla {
namespace ipc {
class BigBuffer;
} // namespace ipc
} // namespace mozilla

namespace mozilla {
struct void_t;
} // namespace mozilla

namespace mozilla {
struct void_t;
} // namespace mozilla

struct nsID;

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

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

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

namespace mozilla {
struct void_t;
} // namespace mozilla

namespace mozilla {
class WidgetCompositionEvent;
} // namespace mozilla

namespace mozilla {
namespace widget {
struct IMENotification;
} // namespace widget
} // namespace mozilla

namespace mozilla {
namespace widget {
struct IMENotificationRequests;
} // namespace widget
} // namespace mozilla

namespace mozilla {
namespace widget {
struct IMEState;
} // namespace widget
} // namespace mozilla

namespace mozilla {
namespace widget {
struct InputContext;
} // namespace widget
} // namespace mozilla

namespace mozilla {
namespace widget {
struct InputContextAction;
} // namespace widget
} // namespace mozilla

namespace mozilla {
class ContentCache;
} // namespace mozilla

namespace mozilla {
class WidgetKeyboardEvent;
} // namespace mozilla

namespace mozilla {
class WidgetMouseEvent;
} // namespace mozilla

namespace mozilla {
class WidgetWheelEvent;
} // namespace mozilla

namespace mozilla {
class WidgetDragEvent;
} // namespace mozilla

namespace mozilla {
class WidgetPointerEvent;
} // namespace mozilla

struct nsRect;

namespace mozilla {
class WidgetSelectionEvent;
} // namespace mozilla

namespace mozilla {
class WidgetTouchEvent;
} // namespace mozilla

namespace mozilla {
namespace dom {
struct RemoteDOMEvent;
} // namespace dom
} // namespace mozilla

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

struct LookAndFeelInt;

namespace mozilla {
struct DimensionRequest;
} // namespace mozilla

namespace mozilla {
namespace dom {
class MessagePort;
} // namespace dom
} // namespace mozilla

namespace mozilla {
struct FontRange;
} // namespace mozilla

struct InputFormData;

struct CollectedInputDataValue;

namespace mozilla {
namespace ipc {
class BigBuffer;
} // namespace ipc
} // namespace mozilla

namespace mozilla {
namespace dom {


class PBrowserParent :
    public mozilla::ipc::IRefCountedProtocol
{
private:
    friend class ::mozilla::a11y::PDocAccessibleParent;
    friend class ::mozilla::dom::PBrowserBridgeParent;
    friend class ::mozilla::dom::PColorPickerParent;
    friend class ::mozilla::dom::PContentParent;
    friend class ::mozilla::dom::PFilePickerParent;
    friend class ::mozilla::dom::PPaymentRequestParent;
    friend class ::mozilla::dom::PSessionStoreParent;
    friend class ::mozilla::dom::PVsyncParent;
    friend class ::mozilla::dom::PWindowGlobalParent;
    friend class ::mozilla::hal_sandbox::PHalParent;
    friend class ::mozilla::net::PNeckoParent;
public:
    static constexpr ::mozilla::ipc::ProtocolId kProtocolId = PBrowserMsgStart;
protected:
    typedef mozilla::ipc::ActorId ActorId;
    typedef ::mozilla::AspectRatio AspectRatio;
    typedef ::mozilla::ipc::BigBuffer BigBuffer;
    typedef ::mozilla::ipc::ByteBuf ByteBuf;
    typedef ::mozilla::ipc::CSPInfo CSPInfo;
    typedef ::mozilla::CSSRect CSSRect;
    typedef ::mozilla::CSSSize CSSSize;
    typedef ::mozilla::CSSToLayoutDeviceScale CSSToLayoutDeviceScale;
    typedef ::mozilla::CSSToScreenScale CSSToScreenScale;
    typedef ::mozilla::embedding::CStringKeyValue CStringKeyValue;
    typedef ::mozilla::dom::CallerType CallerType;
    typedef ::mozilla::ContentBlockingNotifier::CanvasFingerprinter CanvasFingerprinter;
    typedef ::mozilla::net::ChildLoadInfoForwarderArgs ChildLoadInfoForwarderArgs;
    typedef ::mozilla::net::ClassOfService ClassOfService;
    typedef ::mozilla::net::ClassificationFlags ClassificationFlags;
    typedef ::mozilla::dom::ClonedMessageData ClonedMessageData;
    typedef ::mozilla::dom::ClonedOrErrorMessageData ClonedOrErrorMessageData;
    typedef ::CollectedInputDataValue CollectedInputDataValue;
    typedef ::mozilla::CommandInt CommandInt;
    typedef ::mozilla::layers::CompositorOptions CompositorOptions;
    typedef ::mozilla::net::ConsoleReportCollected ConsoleReportCollected;
    typedef ::mozilla::ContentCache ContentCache;
    typedef ::mozilla::ipc::ContentPrincipalInfo ContentPrincipalInfo;
    typedef ::mozilla::ipc::ContentSecurityPolicy ContentSecurityPolicy;
    typedef ::mozilla::net::CookieChange CookieChange;
    typedef ::mozilla::net::CookieJarSettingsArgs CookieJarSettingsArgs;
    typedef ::mozilla::net::CookiePermissionData CookiePermissionData;
    typedef ::mozilla::net::CookieStruct CookieStruct;
    typedef ::mozilla::net::CookieStructTable CookieStructTable;
    typedef ::mozilla::net::CorsPreflightArgs CorsPreflightArgs;
    typedef ::mozilla::dom::CreatedWindowInfo CreatedWindowInfo;
    typedef ::nsILoadInfo::CrossOriginEmbedderPolicy CrossOriginEmbedderPolicy;
    typedef ::mozilla::ipc::DefaultURIParams DefaultURIParams;
    typedef ::mozilla::DesktopIntRect DesktopIntRect;
    typedef ::mozilla::DesktopToLayoutDeviceScale DesktopToLayoutDeviceScale;
    typedef ::mozilla::dom::IntegrityPolicy::Destinations Destinations;
    typedef ::mozilla::dom::DimensionInfo DimensionInfo;
    typedef ::mozilla::DimensionRequest DimensionRequest;
    typedef ::mozilla::dom::DocShellLoadStateInit DocShellLoadStateInit;
    typedef ::mozilla::net::DocumentChannelCreationArgs DocumentChannelCreationArgs;
    typedef ::mozilla::net::DocumentChannelElementCreationArgs DocumentChannelElementCreationArgs;
    typedef ::mozilla::net::DocumentCreationArgs DocumentCreationArgs;
    typedef ::mozilla::layers::DoubleTapToZoomMetrics DoubleTapToZoomMetrics;
    typedef ::mozilla::net::EarlyHintConnectArgs EarlyHintConnectArgs;
    typedef ::mozilla::dom::EffectsInfo EffectsInfo;
    typedef ::mozilla::dom::EmbedderElementEventType EmbedderElementEventType;
    template<class FooSide> using Endpoint = mozilla::ipc::Endpoint<FooSide>;
    typedef ::mozilla::dom::ErrorMessageData ErrorMessageData;
    typedef ::mozilla::EventMessage EventMessage;
    typedef ::mozilla::ipc::ExpandedPrincipalInfo ExpandedPrincipalInfo;
    typedef ::mozilla::dom::FeaturePolicyInfo FeaturePolicyInfo;
    typedef ::mozilla::net::FileChannelInfo FileChannelInfo;
    typedef ::mozilla::ipc::FileDescriptor FileDescriptor;
    typedef ::mozilla::FontRange FontRange;
    typedef ::mozilla::dom::ForceMediaDocument ForceMediaDocument;
    typedef ::mozilla::dom::FrameIPCTabContext FrameIPCTabContext;
    typedef ::mozilla::dom::FrameScriptInfo FrameScriptInfo;
    typedef ::mozilla::net::GIOChannelConnectArgs GIOChannelConnectArgs;
    typedef ::mozilla::net::GIOChannelCreationArgs GIOChannelCreationArgs;
    typedef ::mozilla::net::GIOChannelOpenArgs GIOChannelOpenArgs;
    typedef ::mozilla::layers::GeckoContentController_TapType GeckoContentController_TapType;
    typedef ::mozilla::net::GeckoViewContentChannelArgs GeckoViewContentChannelArgs;
    typedef ::mozilla::net::GeckoViewContentChannelConnectArgs GeckoViewContentChannelConnectArgs;
    typedef ::mozilla::net::GeckoViewContentChannelOpenArgs GeckoViewContentChannelOpenArgs;
    typedef ::nsILoadInfo::HTTPSUpgradeTelemetryType HTTPSUpgradeTelemetryType;
    typedef ::mozilla::ipc::HostObjectURIParams HostObjectURIParams;
    typedef ::mozilla::net::HttpActivity HttpActivity;
    typedef ::mozilla::net::HttpActivityArgs HttpActivityArgs;
    typedef ::mozilla::net::HttpChannelConnectArgs HttpChannelConnectArgs;
    typedef ::mozilla::net::HttpChannelCreationArgs HttpChannelCreationArgs;
    typedef ::mozilla::net::HttpChannelOpenArgs HttpChannelOpenArgs;
    typedef ::mozilla::net::HttpConnectionActivity HttpConnectionActivity;
    typedef ::mozilla::net::HttpConnectionInfoCloneArgs HttpConnectionInfoCloneArgs;
    typedef ::mozilla::dom::IDPLVariant IDPLVariant;
    typedef ::mozilla::widget::IMENotification IMENotification;
    typedef ::mozilla::widget::IMENotificationRequests IMENotificationRequests;
    typedef ::mozilla::widget::IMEState IMEState;
    typedef ::nsILoadInfo::IPAddressSpace IPAddressSpace;
    typedef ::mozilla::dom::IPCBlob IPCBlob;
    typedef ::mozilla::dom::IPCFile IPCFile;
    typedef ::mozilla::dom::IPCImage IPCImage;
    typedef ::mozilla::dom::IPCNotification IPCNotification;
    typedef ::mozilla::dom::IPCNotificationAction IPCNotificationAction;
    typedef ::mozilla::dom::IPCNotificationOptions IPCNotificationOptions;
    typedef ::mozilla::dom::IPCNotificationsOrError IPCNotificationsOrError;
    typedef ::mozilla::ipc::IPCStream IPCStream;
    typedef ::mozilla::dom::IPCTabContext IPCTabContext;
    typedef ::mozilla::dom::IPCTransferable IPCTransferable;
    typedef ::mozilla::dom::IPCTransferableData IPCTransferableData;
    typedef ::mozilla::dom::IPCTransferableDataBlob IPCTransferableDataBlob;
    typedef ::mozilla::dom::IPCTransferableDataCString IPCTransferableDataCString;
    typedef ::mozilla::dom::IPCTransferableDataImageContainer IPCTransferableDataImageContainer;
    typedef ::mozilla::dom::IPCTransferableDataInputStream IPCTransferableDataInputStream;
    typedef ::mozilla::dom::IPCTransferableDataItem IPCTransferableDataItem;
    typedef ::mozilla::dom::IPCTransferableDataOrError IPCTransferableDataOrError;
    typedef ::mozilla::dom::IPCTransferableDataString IPCTransferableDataString;
    typedef ::mozilla::dom::IPCTransferableDataType IPCTransferableDataType;
    typedef ::mozilla::dom::IPDLProperty IPDLProperty;
    typedef ::mozilla::dom::IPDLVariantValue IPDLVariantValue;
    typedef ::mozilla::ipc::IconURIParams IconURIParams;
    typedef ::mozilla::ImageIntSize ImageIntSize;
    typedef ::mozilla::widget::InputContext InputContext;
    typedef ::mozilla::widget::InputContextAction InputContextAction;
    typedef ::InputFormData InputFormData;
    typedef ::mozilla::gfx::IntPoint IntPoint;
    typedef ::mozilla::gfx::IntSize IntSize;
    typedef ::mozilla::ipc::IntegrityPolicyArgs IntegrityPolicyArgs;
    typedef ::mozilla::ipc::IntegrityPolicyEntry IntegrityPolicyEntry;
    typedef ::mozilla::net::InterceptionInfoArg InterceptionInfoArg;
    typedef ::mozilla::IntrinsicSize IntrinsicSize;
    typedef ::mozilla::ipc::JARURIParams JARURIParams;
    typedef ::mozilla::ipc::JSURIParams JSURIParams;
    typedef ::mozilla::layers::LayersId LayersId;
    typedef ::mozilla::LayoutDeviceIntMargin LayoutDeviceIntMargin;
    typedef ::mozilla::LayoutDeviceIntPoint LayoutDeviceIntPoint;
    typedef ::mozilla::LayoutDeviceIntRect LayoutDeviceIntRect;
    typedef ::mozilla::LayoutDeviceIntSize LayoutDeviceIntSize;
    typedef ::mozilla::LayoutDevicePoint LayoutDevicePoint;
    typedef ::mozilla::net::LinkHeader LinkHeader;
    typedef ::mozilla::net::LoadInfoArgs LoadInfoArgs;
    typedef ::mozilla::dom::LoadingSessionHistoryInfo LoadingSessionHistoryInfo;
    typedef ::LookAndFeelInt LookAndFeelInt;
    template<class FooSide> using ManagedEndpoint = mozilla::ipc::ManagedEndpoint<FooSide>;
    typedef ::mozilla::gfx::Matrix4x4 Matrix4x4;
    typedef ::mozilla::dom::MaybeDiscardedBrowsingContext MaybeDiscardedBrowsingContext;
    typedef ::mozilla::dom::MaybeDiscardedWindowContext MaybeDiscardedWindowContext;
    typedef ::mozilla::dom::MessageData MessageData;
    typedef ::mozilla::dom::MessageDataType MessageDataType;
    typedef ::mozilla::dom::MessagePort MessagePort;
    typedef ::mozilla::dom::MessagePortIdentifier MessagePortIdentifier;
    typedef ::nsIFilePicker::Mode Mode;
    typedef ::mozilla::Modifiers Modifiers;
    typedef ::mozilla::NativeKeyBindingsType NativeKeyBindingsType;
    typedef ::mozilla::dom::NavigationHistoryBehavior NavigationHistoryBehavior;
    typedef ::mozilla::ipc::NestedAboutURIParams NestedAboutURIParams;
    typedef ::mozilla::dom::NotificationDirection NotificationDirection;
    typedef ::mozilla::ipc::NullPrincipalInfo NullPrincipalInfo;
    typedef ::mozilla::net::ObjectCreationArgs ObjectCreationArgs;
    typedef ::mozilla::OriginAttributes OriginAttributes;
    typedef ::mozilla::dom::OwnerShowInfo OwnerShowInfo;
    typedef ::mozilla::dom::PBrowserBridgeChild PBrowserBridgeChild;
    typedef ::mozilla::dom::PBrowserBridgeParent PBrowserBridgeParent;
    typedef ::mozilla::dom::PColorPickerChild PColorPickerChild;
    typedef ::mozilla::dom::PColorPickerParent PColorPickerParent;
    typedef ::mozilla::dom::PContentChild PContentChild;
    typedef ::mozilla::dom::PContentParent PContentParent;
    typedef ::mozilla::a11y::PDocAccessibleChild PDocAccessibleChild;
    typedef ::mozilla::a11y::PDocAccessibleParent PDocAccessibleParent;
    typedef ::mozilla::dom::PFilePickerChild PFilePickerChild;
    typedef ::mozilla::dom::PFilePickerParent PFilePickerParent;
    typedef ::mozilla::dom::PPaymentRequestChild PPaymentRequestChild;
    typedef ::mozilla::dom::PPaymentRequestParent PPaymentRequestParent;
    typedef ::mozilla::layout::PRemotePrintJobChild PRemotePrintJobChild;
    typedef ::mozilla::layout::PRemotePrintJobParent PRemotePrintJobParent;
    typedef ::mozilla::dom::PSessionStoreChild PSessionStoreChild;
    typedef ::mozilla::dom::PSessionStoreParent PSessionStoreParent;
    typedef ::mozilla::dom::PVsyncChild PVsyncChild;
    typedef ::mozilla::dom::PVsyncParent PVsyncParent;
    typedef ::mozilla::dom::PWindowGlobalChild PWindowGlobalChild;
    typedef ::mozilla::dom::PWindowGlobalParent PWindowGlobalParent;
    typedef ::mozilla::net::ParentLoadInfoForwarderArgs ParentLoadInfoForwarderArgs;
    typedef ::mozilla::dom::ParentShowInfo ParentShowInfo;
    typedef ::mozilla::ipc::PolicyContainerArgs PolicyContainerArgs;
    typedef ::mozilla::dom::PopupIPCTabContext PopupIPCTabContext;
    typedef ::mozilla::net::PreferredAlternativeDataDeliveryTypeIPC PreferredAlternativeDataDeliveryTypeIPC;
    typedef ::mozilla::net::PreferredAlternativeDataTypeParams PreferredAlternativeDataTypeParams;
    typedef ::mozilla::ipc::PrincipalInfo PrincipalInfo;
    typedef ::mozilla::embedding::PrintData PrintData;
    typedef ::mozilla::dom::PrintPreviewResultInfo PrintPreviewResultInfo;
    typedef base::ProcessId ProcessId;
    typedef mozilla::ipc::ProtocolId ProtocolId;
    typedef ::mozilla::net::ProxyInfoCloneArgs ProxyInfoCloneArgs;
    typedef ::mozilla::RFPTargetSet RFPTargetSet;
    typedef ::mozilla::net::RedirectHistoryEntryInfo RedirectHistoryEntryInfo;
    typedef ::mozilla::net::RedirectToRealChannelArgs RedirectToRealChannelArgs;
    typedef ::mozilla::dom::RefMessageData RefMessageData;
    typedef ::mozilla::dom::RemoteDOMEvent RemoteDOMEvent;
    typedef ::mozilla::RemoteLazyInputStream RemoteLazyInputStream;
    typedef ::mozilla::RemoteLazyStream RemoteLazyStream;
    typedef ::mozilla::net::RemoteStreamInfo RemoteStreamInfo;
    typedef ::mozilla::dom::ReplacementChannelConfigInit ReplacementChannelConfigInit;
    typedef ::mozilla::dom::RequestData RequestData;
    typedef ::mozilla::net::RequestHeaderTuples RequestHeaderTuples;
    typedef ::mozilla::dom::RequestMode RequestMode;
    typedef ::nsIContentSecurityPolicy::RequireTrustedTypesForDirectiveState RequireTrustedTypesForDirectiveState;
    typedef ::mozilla::net::ResourceTimingStructArgs ResourceTimingStructArgs;
    typedef mozilla::ipc::ResponseRejectReason ResponseRejectReason;
    typedef ::nsILoadInfo::SchemelessInputType SchemelessInputType;
    typedef ::mozilla::dom::ScreenDetails ScreenDetails;
    typedef ::mozilla::ScreenIntCoord ScreenIntCoord;
    typedef ::mozilla::hal::ScreenOrientation ScreenOrientation;
    typedef ::mozilla::ScreenRect ScreenRect;
    typedef ::mozilla::ScrollAxis ScrollAxis;
    typedef ::mozilla::ScrollFlags ScrollFlags;
    typedef ::mozilla::layers::ScrollableLayerGuid ScrollableLayerGuid;
    typedef ::mozilla::ScrollbarPreference ScrollbarPreference;
    typedef ::mozilla::SerializedStructuredCloneBuffer SerializedStructuredCloneBuffer;
    typedef ::mozilla::ipc::Shmem Shmem;
    typedef ::mozilla::ipc::SimpleNestedURIParams SimpleNestedURIParams;
    typedef ::mozilla::ipc::SimpleURIParams SimpleURIParams;
    typedef ::mozilla::dom::IntegrityPolicy::Sources Sources;
    typedef ::mozilla::net::SpeculativeConnectionOverriderArgs SpeculativeConnectionOverriderArgs;
    typedef ::mozilla::ipc::StandardURLParams StandardURLParams;
    typedef ::mozilla::ipc::StandardURLSegment StandardURLSegment;
    typedef ::mozilla::ContentBlockingNotifier::StorageAccessPermissionGrantedReason StorageAccessPermissionGrantedReason;
    typedef ::nsILoadInfo::StoragePermissionState StoragePermissionState;
    typedef ::mozilla::contentanalysis::StringHashSet StringHashSet;
    typedef ::mozilla::dom::ipc::StructuredCloneData StructuredCloneData;
    typedef ::mozilla::StyleImageRendering StyleImageRendering;
    typedef ::mozilla::ipc::SubstitutingJARURIParams SubstitutingJARURIParams;
    typedef ::mozilla::gfx::SurfaceFormat SurfaceFormat;
    typedef ::mozilla::ipc::SystemPrincipalInfo SystemPrincipalInfo;
    typedef ::mozilla::dom::TabId TabId;
    typedef ::mozilla::layers::TextureFactoryIdentifier TextureFactoryIdentifier;
    typedef ::mozilla::TimeStamp TimeStamp;
    typedef ::mozilla::dom::TimedChannelInfo TimedChannelInfo;
    typedef ::mozilla::net::TimingStructArgs TimingStructArgs;
    typedef ::nsIWidget::TouchPointerState TouchPointerState;
    typedef ::nsIWidget::TouchpadGesturePhase TouchpadGesturePhase;
    typedef ::mozilla::net::TransactionObserverResult TransactionObserverResult;
    typedef ::mozilla::ipc::URIParams URIParams;
    template<class T> using UniquePtr = mozilla::UniquePtr<T>;
    typedef ::mozilla::dom::UserNavigationInvolvement UserNavigationInvolvement;
    typedef ::mozilla::layers::ScrollableLayerGuid::ViewID ViewID;
    typedef ::mozilla::dom::WebProgressData WebProgressData;
    typedef ::mozilla::dom::WebProgressLocationChangeData WebProgressLocationChangeData;
    typedef ::mozilla::dom::WebProgressStateChangeData WebProgressStateChangeData;
    typedef ::mozilla::ipc::WebTransportHash WebTransportHash;
    typedef ::mozilla::WidgetCompositionEvent WidgetCompositionEvent;
    typedef ::mozilla::WidgetDragEvent WidgetDragEvent;
    typedef ::mozilla::WidgetKeyboardEvent WidgetKeyboardEvent;
    typedef ::mozilla::WidgetMouseEvent WidgetMouseEvent;
    typedef ::mozilla::WidgetPointerEvent WidgetPointerEvent;
    typedef ::mozilla::WidgetSelectionEvent WidgetSelectionEvent;
    typedef ::mozilla::WidgetTouchEvent WidgetTouchEvent;
    typedef ::mozilla::WidgetWheelEvent WidgetWheelEvent;
    typedef ::mozilla::dom::WindowContextInitializer WindowContextInitializer;
    typedef ::mozilla::dom::WindowGlobalInit WindowGlobalInit;
    typedef ::mozilla::WindowsHandle WindowsHandle;
    typedef ::mozilla::layers::ZoomConstraints ZoomConstraints;
    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 ::nsContentPolicyType nsContentPolicyType;
    typedef ::nsCursor nsCursor;
    typedef ::nsDOMNavigationTiming nsDOMNavigationTiming;
    typedef ::nsDocShellLoadState nsDocShellLoadState;
    typedef ::nsEventStatus nsEventStatus;
    typedef ::nsHttpAtom nsHttpAtom;
    typedef ::mozilla::net::nsHttpResponseHead nsHttpResponseHead;
    typedef ::nsID nsID;
    typedef ::nsIInputStream nsIInputStream;
    typedef ::nsIPolicyContainer nsIPolicyContainer;
    typedef ::nsIPrincipal nsIPrincipal;
    typedef ::nsIPropertyBag2 nsIPropertyBag2;
    typedef ::nsIReferrerInfo nsIReferrerInfo;
    typedef ::nsITransportSecurityInfo nsITransportSecurityInfo;
    typedef ::nsIURI nsIURI;
    typedef ::nsIVariant nsIVariant;
    typedef ::nsRect nsRect;
    typedef ::nsSizeMode nsSizeMode;
    typedef ::nsString nsString;
    typedef ::nsresult nsresult;
    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 IMENotificationRequests&)> NotifyIMEFocusResolver;
    typedef std::function<void(const bool&)> RequestPointerCaptureResolver;
    typedef std::function<void(const nsACString&)> RequestPointerLockResolver;
    typedef MozPromise<bool, ResponseRejectReason, true> CloneDocumentTreeIntoSelfPromise;
    typedef MozPromise<PrintPreviewResultInfo, ResponseRejectReason, true> PrintPreviewPromise;
    typedef MozPromise<MaybeDiscardedBrowsingContext, ResponseRejectReason, true> PrintPromise;
    typedef std::function<void(const bool&)> IsWindowSupportingProtectedMediaResolver;
    typedef std::function<void(const bool&)> IsWindowSupportingWebVRResolver;

protected:
    virtual mozilla::ipc::IPCResult
    RecvPDocAccessibleConstructor(
            PDocAccessibleParent* actor,
            PDocAccessibleParent* aParentDoc,
            const uint64_t& aParentAcc,
            const MaybeDiscardedBrowsingContext& aBrowsingContext);
    virtual mozilla::ipc::IPCResult
    RecvPPaymentRequestConstructor(PPaymentRequestParent* actor);
    virtual mozilla::ipc::IPCResult
    RecvPVsyncConstructor(PVsyncParent* actor);
    virtual mozilla::ipc::IPCResult
    RecvPColorPickerConstructor(
            PColorPickerParent* actor,
            const MaybeDiscardedBrowsingContext& aBrowsingContext,
            const nsAString& title,
            const nsAString& initialColor,
            nsTArray<nsString>&& defaultColors);
    virtual mozilla::ipc::IPCResult
    RecvPFilePickerConstructor(
            PFilePickerParent* actor,
            const nsAString& aTitle,
            const Mode& aMode,
            const MaybeDiscardedBrowsingContext& aBrowsingContext);
    virtual mozilla::ipc::IPCResult
    Recv__delete__();
    virtual mozilla::ipc::IPCResult
    RecvPSessionStoreConstructor(PSessionStoreParent* actor);
public:
    typedef mozilla::ipc::IProtocol IProtocol;
    typedef IPC::Message Message;
    typedef base::ProcessHandle ProcessHandle;
    typedef mozilla::ipc::MessageChannel MessageChannel;

public:
    MOZ_IMPLICIT PBrowserParent();

    virtual ~PBrowserParent();

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

    PContentParent*
    Manager() const;

    void
    ManagedPColorPickerParent(nsTArray<PColorPickerParent*>& aArr) const;
    const ManagedContainer<PColorPickerParent>&
    ManagedPColorPickerParent() const;

    void
    ManagedPDocAccessibleParent(nsTArray<PDocAccessibleParent*>& aArr) const;
    const ManagedContainer<PDocAccessibleParent>&
    ManagedPDocAccessibleParent() const;

    void
    ManagedPFilePickerParent(nsTArray<PFilePickerParent*>& aArr) const;
    const ManagedContainer<PFilePickerParent>&
    ManagedPFilePickerParent() const;

    void
    ManagedPPaymentRequestParent(nsTArray<PPaymentRequestParent*>& aArr) const;
    const ManagedContainer<PPaymentRequestParent>&
    ManagedPPaymentRequestParent() const;

    void
    ManagedPSessionStoreParent(nsTArray<PSessionStoreParent*>& aArr) const;
    const ManagedContainer<PSessionStoreParent>&
    ManagedPSessionStoreParent() const;

    void
    ManagedPWindowGlobalParent(nsTArray<PWindowGlobalParent*>& aArr) const;
    const ManagedContainer<PWindowGlobalParent>&
    ManagedPWindowGlobalParent() const;

    void
    ManagedPBrowserBridgeParent(nsTArray<PBrowserBridgeParent*>& aArr) const;
    const ManagedContainer<PBrowserBridgeParent>&
    ManagedPBrowserBridgeParent() const;

    void
    ManagedPVsyncParent(nsTArray<PVsyncParent*>& aArr) const;
    const ManagedContainer<PVsyncParent>&
    ManagedPVsyncParent() const;

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

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

    void
    RejectPendingResponses(ResponseRejectReason aReason) final;

    ManagedEndpoint<PColorPickerChild>
    OpenPColorPickerEndpoint(PColorPickerParent* aActor);
    bool
    BindPColorPickerEndpoint(
            ManagedEndpoint<PColorPickerParent> aEndpoint,
            PColorPickerParent* aActor);

    ManagedEndpoint<PDocAccessibleChild>
    OpenPDocAccessibleEndpoint(PDocAccessibleParent* aActor);
    bool
    BindPDocAccessibleEndpoint(
            ManagedEndpoint<PDocAccessibleParent> aEndpoint,
            PDocAccessibleParent* aActor);

    ManagedEndpoint<PFilePickerChild>
    OpenPFilePickerEndpoint(PFilePickerParent* aActor);
    bool
    BindPFilePickerEndpoint(
            ManagedEndpoint<PFilePickerParent> aEndpoint,
            PFilePickerParent* aActor);

    ManagedEndpoint<PPaymentRequestChild>
    OpenPPaymentRequestEndpoint(PPaymentRequestParent* aActor);
    bool
    BindPPaymentRequestEndpoint(
            ManagedEndpoint<PPaymentRequestParent> aEndpoint,
            PPaymentRequestParent* aActor);

    ManagedEndpoint<PSessionStoreChild>
    OpenPSessionStoreEndpoint(PSessionStoreParent* aActor);
    bool
    BindPSessionStoreEndpoint(
            ManagedEndpoint<PSessionStoreParent> aEndpoint,
            PSessionStoreParent* aActor);

    ManagedEndpoint<PWindowGlobalChild>
    OpenPWindowGlobalEndpoint(PWindowGlobalParent* aActor);
    bool
    BindPWindowGlobalEndpoint(
            ManagedEndpoint<PWindowGlobalParent> aEndpoint,
            PWindowGlobalParent* aActor);

    ManagedEndpoint<PBrowserBridgeChild>
    OpenPBrowserBridgeEndpoint(PBrowserBridgeParent* aActor);
    bool
    BindPBrowserBridgeEndpoint(
            ManagedEndpoint<PBrowserBridgeParent> aEndpoint,
            PBrowserBridgeParent* aActor);

    ManagedEndpoint<PVsyncChild>
    OpenPVsyncEndpoint(PVsyncParent* aActor);
    bool
    BindPVsyncEndpoint(
            ManagedEndpoint<PVsyncParent> aEndpoint,
            PVsyncParent* aActor);

    [[nodiscard]] bool
    SendAsyncMessage(
            const nsAString& aMessage,
            const ClonedMessageData& aData);

    [[nodiscard]] bool
    SendReleasePointerLock();

    [[nodiscard]] bool
    SendUpdateSHistory();

    void
    SendCloneDocumentTreeIntoSelf(
            const MaybeDiscardedBrowsingContext& aBc,
            const PrintData& aPrintData,
            mozilla::ipc::ResolveCallback<bool>&& aResolve,
            mozilla::ipc::RejectCallback&& aReject);

    [[nodiscard]] RefPtr<CloneDocumentTreeIntoSelfPromise>
    SendCloneDocumentTreeIntoSelf(
            const MaybeDiscardedBrowsingContext& aBc,
            const PrintData& aPrintData);

    [[nodiscard]] bool
    SendUpdateRemotePrintSettings(const PrintData& aPrintData);

    [[nodiscard]] bool
    SendReleaseAllPointerCapture();

    [[nodiscard]] bool
    SendUpdateEffects(const EffectsInfo& aEffects);

    [[nodiscard]] bool
    SendShow(
            const ParentShowInfo& parentInfo,
            const OwnerShowInfo& childInfo);

    [[nodiscard]] bool
    SendActivate(const uint64_t& aActionId);

    [[nodiscard]] bool
    SendDeactivate(const uint64_t& aActionId);

    [[nodiscard]] bool
    SendScrollbarPreferenceChanged(const ScrollbarPreference& pref);

    [[nodiscard]] bool
    SendInitRendering(
            const TextureFactoryIdentifier& textureFactoryIdentifier,
            const LayersId& layersId,
            const CompositorOptions& compositorOptions,
            const bool& layersConnected);

    [[nodiscard]] bool
    SendCompositorOptionsChanged(const CompositorOptions& newOptions);

    [[nodiscard]] bool
    SendLoadURL(
            mozilla::NotNull<nsDocShellLoadState*> loadState,
            const ParentShowInfo& info);

    [[nodiscard]] bool
    SendCreateAboutBlankDocumentViewer(
            nsIPrincipal* principal,
            nsIPrincipal* partitionedPrincipal);

    [[nodiscard]] bool
    SendResumeLoad(
            const uint64_t& pendingSwitchID,
            const ParentShowInfo& info);

    [[nodiscard]] bool
    SendUpdateDimensions(const DimensionInfo& dimensions);

    [[nodiscard]] bool
    SendSizeModeChanged(const nsSizeMode& sizeMode);

    [[nodiscard]] bool
    SendChildToParentMatrix(
            const mozilla::Maybe<Matrix4x4>& aMatrix,
            const ScreenRect& aRemoteDocumentRect);

    [[nodiscard]] bool
    SendUpdateRemoteStyle(const StyleImageRendering& aImageRendering);

    [[nodiscard]] bool
    SendDynamicToolbarMaxHeightChanged(const ScreenIntCoord& height);

    [[nodiscard]] bool
    SendDynamicToolbarOffsetChanged(const ScreenIntCoord& offset);

    [[nodiscard]] bool
    SendKeyboardHeightChanged(const ScreenIntCoord& height);

    [[nodiscard]] bool
    SendAndroidPipModeChanged(const bool& aPipMode);

    [[nodiscard]] bool
    SendStopIMEStateManagement();

    [[nodiscard]] bool
    SendRealMouseMoveEvent(
            const WidgetMouseEvent& event,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId);

    [[nodiscard]] bool
    SendNormalPriorityRealMouseMoveEvent(
            const WidgetMouseEvent& event,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId);

    [[nodiscard]] bool
    SendRealMouseMoveEventForTests(
            const WidgetMouseEvent& event,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId);

    [[nodiscard]] bool
    SendNormalPriorityRealMouseMoveEventForTests(
            const WidgetMouseEvent& event,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId);

    [[nodiscard]] bool
    SendSynthMouseMoveEvent(
            const WidgetMouseEvent& event,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId);

    [[nodiscard]] bool
    SendNormalPrioritySynthMouseMoveEvent(
            const WidgetMouseEvent& event,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId);

    [[nodiscard]] bool
    SendRealMouseButtonEvent(
            const WidgetMouseEvent& event,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId);

    [[nodiscard]] bool
    SendNormalPriorityRealMouseButtonEvent(
            const WidgetMouseEvent& event,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId);

    [[nodiscard]] bool
    SendRealPointerButtonEvent(
            const WidgetPointerEvent& event,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId);

    [[nodiscard]] bool
    SendNormalPriorityRealPointerButtonEvent(
            const WidgetPointerEvent& event,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId);

    [[nodiscard]] bool
    SendRealMouseEnterExitWidgetEvent(
            const WidgetMouseEvent& event,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId);

    [[nodiscard]] bool
    SendNormalPriorityRealMouseEnterExitWidgetEvent(
            const WidgetMouseEvent& event,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId);

    [[nodiscard]] bool
    SendRealKeyEvent(
            const WidgetKeyboardEvent& aEvent,
            const nsID& aUUID);

    [[nodiscard]] bool
    SendNormalPriorityRealKeyEvent(
            const WidgetKeyboardEvent& aEvent,
            const nsID& aUUID);

    [[nodiscard]] bool
    SendMouseWheelEvent(
            const WidgetWheelEvent& event,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId);

    [[nodiscard]] bool
    SendNormalPriorityMouseWheelEvent(
            const WidgetWheelEvent& event,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId);

    [[nodiscard]] bool
    SendRealTouchEvent(
            const WidgetTouchEvent& aEvent,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId,
            const nsEventStatus& aApzResponse);

    [[nodiscard]] bool
    SendNormalPriorityRealTouchEvent(
            const WidgetTouchEvent& aEvent,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId,
            const nsEventStatus& aApzResponse);

    [[nodiscard]] bool
    SendHandleTap(
            const GeckoContentController_TapType& aType,
            const LayoutDevicePoint& point,
            const Modifiers& aModifiers,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId,
            const mozilla::Maybe<DoubleTapToZoomMetrics>& aMetrics);

    [[nodiscard]] bool
    SendNormalPriorityHandleTap(
            const GeckoContentController_TapType& aType,
            const LayoutDevicePoint& point,
            const Modifiers& aModifiers,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId,
            const mozilla::Maybe<DoubleTapToZoomMetrics>& aMetrics);

    [[nodiscard]] bool
    SendRealTouchMoveEvent(
            const WidgetTouchEvent& aEvent,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId,
            const nsEventStatus& aApzResponse);

    [[nodiscard]] bool
    SendNormalPriorityRealTouchMoveEvent(
            const WidgetTouchEvent& aEvent,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId,
            const nsEventStatus& aApzResponse);

    [[nodiscard]] bool
    SendRealTouchMoveEvent2(
            const WidgetTouchEvent& aEvent,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId,
            const nsEventStatus& aApzResponse);

    [[nodiscard]] bool
    SendNormalPriorityRealTouchMoveEvent2(
            const WidgetTouchEvent& aEvent,
            const ScrollableLayerGuid& aGuid,
            const uint64_t& aInputBlockId,
            const nsEventStatus& aApzResponse);

    [[nodiscard]] bool
    SendRealDragEvent(
            const WidgetDragEvent& aEvent,
            const uint32_t& aDragAction,
            const uint32_t& aDropEffect,
            nsIPrincipal* aPrincipal,
            nsIPolicyContainer* policyContainer);

    [[nodiscard]] bool
    SendSynthesizedEventResponse(const uint64_t& aCallbackId);

    [[nodiscard]] bool
    SendCompositionEvent(const WidgetCompositionEvent& event);

    [[nodiscard]] bool
    SendNormalPriorityCompositionEvent(const WidgetCompositionEvent& event);

    [[nodiscard]] bool
    SendSelectionEvent(const WidgetSelectionEvent& event);

    [[nodiscard]] bool
    SendNormalPrioritySelectionEvent(const WidgetSelectionEvent& event);

    [[nodiscard]] bool
    SendSimpleContentCommandEvent(const EventMessage& message);

    [[nodiscard]] bool
    SendNormalPrioritySimpleContentCommandEvent(const EventMessage& message);

    [[nodiscard]] bool
    SendInsertText(const nsAString& aStringToInsert);

    [[nodiscard]] bool
    SendNormalPriorityInsertText(const nsAString& aStringToInsert);

    [[nodiscard]] bool
    SendReplaceText(
            const nsAString& aReplacementString,
            const nsAString& aStringToInsert,
            const uint32_t& aOffset,
            const bool& aPreventSetSelection);

    [[nodiscard]] bool
    SendNormalPriorityReplaceText(
            const nsAString& aReplacementString,
            const nsAString& aStringToInsert,
            const uint32_t& aOffset,
            const bool& aPreventSetSelection);

    [[nodiscard]] bool
    SendPasteTransferable(IPCTransferable&& aTransferable);

    [[nodiscard]] bool
    SendLoadRemoteScript(
            const nsAString& aURL,
            const bool& aRunInGlobalScope);

    [[nodiscard]] bool
    SendDestroy();

    [[nodiscard]] bool
    SendRenderLayers(const bool& aEnabled);

    [[nodiscard]] bool
    SendPreserveLayers(const bool& aPreserve);

    [[nodiscard]] bool
    SendSuppressDisplayport(const bool& aEnabled);

    [[nodiscard]] bool
    SendNavigateByKey(
            const bool& aForward,
            const bool& aForDocumentNavigation);

    [[nodiscard]] bool
    SendUIResolutionChanged(
            const float& dpi,
            const int32_t& rounding,
            const double& scale);

    [[nodiscard]] bool
    SendSafeAreaInsetsChanged(const LayoutDeviceIntMargin& aSafeAreaInsets);

    [[nodiscard]] bool
    SendSwappedWithOtherRemoteLoader(const IPCTabContext& context);

    [[nodiscard]] bool
    SendHandleAccessKey(
            const WidgetKeyboardEvent& event,
            mozilla::Span<uint32_t const> charCodes);

    void
    SendPrintPreview(
            const PrintData& aPrintData,
            const MaybeDiscardedBrowsingContext& aSourceBrowsingContext,
            mozilla::ipc::ResolveCallback<PrintPreviewResultInfo>&& aResolve,
            mozilla::ipc::RejectCallback&& aReject);

    [[nodiscard]] RefPtr<PrintPreviewPromise>
    SendPrintPreview(
            const PrintData& aPrintData,
            const MaybeDiscardedBrowsingContext& aSourceBrowsingContext);

    [[nodiscard]] bool
    SendExitPrintPreview();

    void
    SendPrint(
            const MaybeDiscardedBrowsingContext& aBC,
            const PrintData& aPrintData,
            const bool& aReturnStaticClone,
            mozilla::ipc::ResolveCallback<MaybeDiscardedBrowsingContext>&& aResolve,
            mozilla::ipc::RejectCallback&& aReject);

    [[nodiscard]] RefPtr<PrintPromise>
    SendPrint(
            const MaybeDiscardedBrowsingContext& aBC,
            const PrintData& aPrintData,
            const bool& aReturnStaticClone);

    [[nodiscard]] bool
    SendPrintClonedPage(
            const MaybeDiscardedBrowsingContext& aBC,
            const PrintData& aPrintData,
            const MaybeDiscardedBrowsingContext& aStaticCloneBrowsingContext);

    [[nodiscard]] bool
    SendDestroyPrintClone(const MaybeDiscardedBrowsingContext& aStaticCloneBrowsingContext);

    [[nodiscard]] bool
    SendUpdateNativeWindowHandle(const uintptr_t& aNewHandle);

    [[nodiscard]] bool
    SendAllowScriptsToClose();

    [[nodiscard]] bool
    SendWillChangeProcess();

    [[nodiscard]] bool
    SendInvokeChildDragSession(
            const MaybeDiscardedWindowContext& aSourceWindowContext,
            const MaybeDiscardedWindowContext& aSourceTopWindowContext,
            nsIPrincipal* aPrincipal,
            nsTArray<IPCTransferableData>&& transfers,
            const uint32_t& action);

    [[nodiscard]] bool
    SendUpdateDragSession(
            nsIPrincipal* aPrincipal,
            nsTArray<IPCTransferableData>&& transfers,
            const EventMessage& message);

    [[nodiscard]] bool
    SendEndDragSession(
            const bool& aDoneDrag,
            const bool& aUserCancelled,
            const LayoutDeviceIntPoint& aDragEndPoint,
            const uint32_t& aKeyModifiers,
            const uint32_t& aDropEffect);

    [[nodiscard]] bool
    SendStoreDropTargetAndDelayEndDragSession(
            const LayoutDeviceIntPoint& aPt,
            const uint32_t& aDropEffect,
            const uint32_t& aDragAction,
            nsIPrincipal* aPrincipal,
            nsIPolicyContainer* aPolicyContainer);

    [[nodiscard]] bool
    SendDispatchToDropTargetAndResumeEndDragSession(
            const bool& aShouldDrop,
            const StringHashSet& aAllowedFilePaths);

    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;

    ManagedContainer<PColorPickerParent> mManagedPColorPickerParent;
    ManagedContainer<PDocAccessibleParent> mManagedPDocAccessibleParent;
    ManagedContainer<PFilePickerParent> mManagedPFilePickerParent;
    ManagedContainer<PPaymentRequestParent> mManagedPPaymentRequestParent;
    ManagedContainer<PSessionStoreParent> mManagedPSessionStoreParent;
    ManagedContainer<PWindowGlobalParent> mManagedPWindowGlobalParent;
    ManagedContainer<PBrowserBridgeParent> mManagedPBrowserBridgeParent;
    ManagedContainer<PVsyncParent> mManagedPVsyncParent;
};


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

#endif // ifndef PBrowserParent_h
