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

#ifndef PBrowserChild_h
#define PBrowserChild_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 PColorPickerChild;
} // namespace dom
} // namespace mozilla
namespace mozilla {
namespace dom {
class PColorPickerParent;
} // namespace dom
} // namespace mozilla

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

namespace mozilla {
namespace net {
class PNeckoChild;
} // 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 PBrowserChild :
    public mozilla::ipc::IRefCountedProtocol
{
private:
    friend class ::mozilla::a11y::PDocAccessibleChild;
    friend class ::mozilla::dom::PBrowserBridgeChild;
    friend class ::mozilla::dom::PColorPickerChild;
    friend class ::mozilla::dom::PContentChild;
    friend class ::mozilla::dom::PFilePickerChild;
    friend class ::mozilla::dom::PPaymentRequestChild;
    friend class ::mozilla::dom::PSessionStoreChild;
    friend class ::mozilla::dom::PVsyncChild;
    friend class ::mozilla::dom::PWindowGlobalChild;
    friend class ::mozilla::hal_sandbox::PHalChild;
    friend class ::mozilla::net::PNeckoChild;
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 MozPromise<IMENotificationRequests, ResponseRejectReason, true> NotifyIMEFocusPromise;
    typedef MozPromise<bool, ResponseRejectReason, true> RequestPointerCapturePromise;
    typedef MozPromise<nsCString, ResponseRejectReason, true> RequestPointerLockPromise;
    typedef std::function<void(const bool&)> CloneDocumentTreeIntoSelfResolver;
    typedef std::function<void(const PrintPreviewResultInfo&)> PrintPreviewResolver;
    typedef std::function<void(const MaybeDiscardedBrowsingContext&)> PrintResolver;
    typedef MozPromise<bool, ResponseRejectReason, true> IsWindowSupportingProtectedMediaPromise;
    typedef MozPromise<bool, ResponseRejectReason, true> IsWindowSupportingWebVRPromise;

protected:
public:
    typedef mozilla::ipc::IProtocol IProtocol;
    typedef IPC::Message Message;
    typedef base::ProcessHandle ProcessHandle;
    typedef mozilla::ipc::MessageChannel MessageChannel;

public:
    MOZ_IMPLICIT PBrowserChild();

    virtual ~PBrowserChild();

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

    PContentChild*
    Manager() const;

    void
    ManagedPColorPickerChild(nsTArray<PColorPickerChild*>& aArr) const;
    const ManagedContainer<PColorPickerChild>&
    ManagedPColorPickerChild() const;

    void
    ManagedPDocAccessibleChild(nsTArray<PDocAccessibleChild*>& aArr) const;
    const ManagedContainer<PDocAccessibleChild>&
    ManagedPDocAccessibleChild() const;

    void
    ManagedPFilePickerChild(nsTArray<PFilePickerChild*>& aArr) const;
    const ManagedContainer<PFilePickerChild>&
    ManagedPFilePickerChild() const;

    void
    ManagedPPaymentRequestChild(nsTArray<PPaymentRequestChild*>& aArr) const;
    const ManagedContainer<PPaymentRequestChild>&
    ManagedPPaymentRequestChild() const;

    void
    ManagedPSessionStoreChild(nsTArray<PSessionStoreChild*>& aArr) const;
    const ManagedContainer<PSessionStoreChild>&
    ManagedPSessionStoreChild() const;

    void
    ManagedPWindowGlobalChild(nsTArray<PWindowGlobalChild*>& aArr) const;
    const ManagedContainer<PWindowGlobalChild>&
    ManagedPWindowGlobalChild() const;

    void
    ManagedPBrowserBridgeChild(nsTArray<PBrowserBridgeChild*>& aArr) const;
    const ManagedContainer<PBrowserBridgeChild>&
    ManagedPBrowserBridgeChild() const;

    void
    ManagedPVsyncChild(nsTArray<PVsyncChild*>& aArr) const;
    const ManagedContainer<PVsyncChild>&
    ManagedPVsyncChild() const;

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

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

    void
    RejectPendingResponses(ResponseRejectReason aReason) final;

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

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

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

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

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

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

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

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

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

    PDocAccessibleChild*
    SendPDocAccessibleConstructor(
            PDocAccessibleChild* aParentDoc,
            const uint64_t& aParentAcc,
            const MaybeDiscardedBrowsingContext& aBrowsingContext);

    PDocAccessibleChild*
    SendPDocAccessibleConstructor(
            PDocAccessibleChild* actor,
            PDocAccessibleChild* aParentDoc,
            const uint64_t& aParentAcc,
            const MaybeDiscardedBrowsingContext& aBrowsingContext);

    PPaymentRequestChild*
    SendPPaymentRequestConstructor();

    PPaymentRequestChild*
    SendPPaymentRequestConstructor(PPaymentRequestChild* actor);

    PVsyncChild*
    SendPVsyncConstructor(PVsyncChild* actor);

    bool
    SendDidUnsuppressPainting();

    bool
    SendDidUnsuppressPaintingNormalPriority();

    bool
    SendMoveFocus(
            const bool& forward,
            const bool& forDocumentNavigation);

    bool
    SendDropLinks(mozilla::Span<nsString const> aLinks);

    bool
    SendSyncMessage(
            const nsAString& aMessage,
            const ClonedMessageData& aData,
            nsTArray<UniquePtr<StructuredCloneData>>* retval);

    void
    SendNotifyIMEFocus(
            const ContentCache& contentCache,
            const IMENotification& notification,
            mozilla::ipc::ResolveCallback<IMENotificationRequests>&& aResolve,
            mozilla::ipc::RejectCallback&& aReject);

    RefPtr<NotifyIMEFocusPromise>
    SendNotifyIMEFocus(
            const ContentCache& contentCache,
            const IMENotification& notification);

    bool
    SendNotifyIMETextChange(
            const ContentCache& contentCache,
            const IMENotification& notification);

    bool
    SendNotifyIMECompositionUpdate(
            const ContentCache& contentCache,
            const IMENotification& notification);

    bool
    SendNotifyIMESelection(
            const ContentCache& contentCache,
            const IMENotification& notification);

    bool
    SendUpdateContentCache(const ContentCache& contentCache);

    bool
    SendNotifyIMEMouseButtonEvent(
            const IMENotification& notification,
            bool* consumedByIME);

    bool
    SendNotifyIMEPositionChange(
            const ContentCache& contentCache,
            const IMENotification& notification);

    bool
    SendRequestIMEToCommitComposition(
            const bool& cancel,
            const uint32_t& aCompositionId,
            bool* isCommitted,
            nsString* committedString);

    bool
    SendOnEventNeedingAckHandled(
            const EventMessage& message,
            const uint32_t& compositionId);

    bool
    SendRequestFocus(
            const bool& canRaise,
            const CallerType& aCallerType);

    bool
    SendWheelZoomChange(const bool& increase);

    bool
    SendEnableDisableCommands(
            const MaybeDiscardedBrowsingContext& bc,
            const nsAString& action,
            mozilla::Span<nsCString const> enabledCommands,
            mozilla::Span<nsCString const> disabledCommands);

    bool
    SendGetInputContext(IMEState* state);

    bool
    SendSetInputContext(
            const InputContext& context,
            const InputContextAction& action);

    bool
    SendSetCursor(
            const nsCursor& value,
            mozilla::Maybe<IPCImage>&& customCursor,
            const float& resolutionX,
            const float& resolutionY,
            const uint32_t& hotspotX,
            const uint32_t& hotspotY,
            const bool& force);

    bool
    SendSetLinkStatus(const nsAString& status);

    bool
    SendShowTooltip(
            const uint32_t& x,
            const uint32_t& y,
            const nsAString& tooltip,
            const nsAString& direction);

    bool
    SendHideTooltip();

    PColorPickerChild*
    SendPColorPickerConstructor(
            PColorPickerChild* actor,
            const MaybeDiscardedBrowsingContext& aBrowsingContext,
            const nsAString& title,
            const nsAString& initialColor,
            mozilla::Span<nsString const> defaultColors);

    PFilePickerChild*
    SendPFilePickerConstructor(
            PFilePickerChild* actor,
            const nsAString& aTitle,
            const Mode& aMode,
            const MaybeDiscardedBrowsingContext& aBrowsingContext);

    bool
    SendRespondStartSwipeEvent(
            const uint64_t& aInputBlockId,
            const bool& aStartSwipe);

    bool
    SendLookUpDictionary(
            const nsAString& aText,
            mozilla::Span<FontRange const> aFontRangeArray,
            const bool& aIsVertical,
            const LayoutDeviceIntPoint& aPoint);

    static bool
    Send__delete__(PBrowserChild* actor);

    bool
    SendReplyKeyEvent(
            const WidgetKeyboardEvent& aEvent,
            const nsID& aUUID);

    bool
    SendRequestNativeKeyBindings(
            const uint32_t& aType,
            const WidgetKeyboardEvent& aEvent,
            nsTArray<CommandInt>* commands);

    bool
    SendSynthesizeNativeKeyEvent(
            const int32_t& aNativeKeyboardLayout,
            const int32_t& aNativeKeyCode,
            const uint32_t& aModifierFlags,
            const nsAString& aCharacters,
            const nsAString& aUnmodifiedCharacters,
            const mozilla::Maybe<uint64_t>& aCallbackId);

    bool
    SendSynthesizeNativeMouseEvent(
            const LayoutDeviceIntPoint& aPoint,
            const uint32_t& aNativeMessage,
            const int16_t& aButton,
            const uint32_t& aModifierFlags,
            const mozilla::Maybe<uint64_t>& aCallbackId);

    bool
    SendSynthesizeNativeMouseMove(
            const LayoutDeviceIntPoint& aPoint,
            const mozilla::Maybe<uint64_t>& aCallbackId);

    bool
    SendSynthesizeNativeMouseScrollEvent(
            const LayoutDeviceIntPoint& aPoint,
            const uint32_t& aNativeMessage,
            const double& aDeltaX,
            const double& aDeltaY,
            const double& aDeltaZ,
            const uint32_t& aModifierFlags,
            const uint32_t& aAdditionalFlags,
            const mozilla::Maybe<uint64_t>& aCallbackId);

    bool
    SendSynthesizeNativeTouchPoint(
            const uint32_t& aPointerId,
            const TouchPointerState& aPointerState,
            const LayoutDeviceIntPoint& aPoint,
            const double& aPointerPressure,
            const uint32_t& aPointerOrientation,
            const mozilla::Maybe<uint64_t>& aCallbackId);

    bool
    SendSynthesizeNativeTouchPadPinch(
            const TouchpadGesturePhase& aEventPhase,
            const float& aScale,
            const LayoutDeviceIntPoint& aPoint,
            const int32_t& aModifierFlags);

    bool
    SendSynthesizeNativeTouchTap(
            const LayoutDeviceIntPoint& aPoint,
            const bool& aLongTap,
            const mozilla::Maybe<uint64_t>& aCallbackId);

    bool
    SendSynthesizeNativePenInput(
            const uint32_t& aPointerId,
            const TouchPointerState& aPointerState,
            const LayoutDeviceIntPoint& aPoint,
            const double& aPressure,
            const uint32_t& aRotation,
            const int32_t& aTiltX,
            const int32_t& aTiltY,
            const int32_t& aButton,
            const mozilla::Maybe<uint64_t>& aCallbackId);

    bool
    SendSynthesizeNativeTouchpadDoubleTap(
            const LayoutDeviceIntPoint& aPoint,
            const uint32_t& aModifierFlags);

    bool
    SendSynthesizeNativeTouchpadPan(
            const TouchpadGesturePhase& aEventPhase,
            const LayoutDeviceIntPoint& aPoint,
            const double& aDeltaX,
            const double& aDeltaY,
            const int32_t& aModifierFlags,
            const mozilla::Maybe<uint64_t>& aCallbackId);

    bool
    SendLockNativePointer();

    bool
    SendUnlockNativePointer();

    bool
    SendAccessKeyNotHandled(const WidgetKeyboardEvent& event);

    bool
    SendRegisterProtocolHandler(
            const nsAString& scheme,
            nsIURI* handlerURI,
            const nsAString& title,
            nsIURI* documentURI);

    bool
    SendOnStateChange(
            const WebProgressData& aWebProgressData,
            const RequestData& aRequestData,
            const uint32_t& aStateFlags,
            const nsresult& aStatus,
            const mozilla::Maybe<WebProgressStateChangeData>& aStateChangeData);

    bool
    SendOnLocationChange(
            const WebProgressData& aWebProgressData,
            const RequestData& aRequestData,
            nsIURI* aLocation,
            const uint32_t& aFlags,
            const bool& aCanGoBack,
            const bool& aCanGoBackIgnoringUserInteraction,
            const bool& aCanGoForward,
            const mozilla::Maybe<WebProgressLocationChangeData>& aLocationChangeData);

    bool
    SendOnProgressChange(
            const int32_t& aCurTotalProgress,
            const int32_t& aMaxTotalProgress);

    bool
    SendOnStatusChange(const nsAString& aMessage);

    bool
    SendNotifyContentBlockingEvent(
            const uint32_t& aEvent,
            const RequestData& aRequestData,
            const bool& aBlocked,
            const nsACString& aTrackingOrigin,
            mozilla::Span<nsCString const> aTrackingFullHashes,
            const mozilla::Maybe<StorageAccessPermissionGrantedReason>& aReason,
            const mozilla::Maybe<CanvasFingerprinter>& aCanvasFingerprinter,
            const mozilla::Maybe<bool>& aCanvasFingerprinterKnownText);

    bool
    SendNavigationFinished();

    bool
    SendIntrinsicSizeOrRatioChanged(
            const mozilla::Maybe<IntrinsicSize>& aIntrinsicSize,
            const mozilla::Maybe<AspectRatio>& aIntrinsicRatio);

    bool
    SendImageLoadComplete(const nsresult& aResult);

    void
    SendRequestPointerCapture(
            const uint32_t& aPointerId,
            mozilla::ipc::ResolveCallback<bool>&& aResolve,
            mozilla::ipc::RejectCallback&& aReject);

    RefPtr<RequestPointerCapturePromise>
    SendRequestPointerCapture(const uint32_t& aPointerId);

    bool
    SendReleasePointerCapture(const uint32_t& aPointerId);

    void
    SendRequestPointerLock(
            mozilla::ipc::ResolveCallback<nsCString>&& aResolve,
            mozilla::ipc::RejectCallback&& aReject);

    RefPtr<RequestPointerLockPromise>
    SendRequestPointerLock();

    bool
    SendReleasePointerLock();

    bool
    SendRemoteIsReadyToHandleInputEvents();

    bool
    SendSetDimensions(
            const DimensionRequest& aRequest,
            const double& aScale);

    bool
    SendDispatchWheelEvent(const WidgetWheelEvent& event);

    bool
    SendDispatchMouseEvent(const WidgetMouseEvent& event);

    bool
    SendDispatchKeyboardEvent(const WidgetKeyboardEvent& event);

    bool
    SendDispatchTouchEvent(const WidgetTouchEvent& event);

    bool
    SendInvokeDragSession(
            nsTArray<IPCTransferableData>&& transfers,
            const uint32_t& action,
            mozilla::Maybe<BigBuffer>&& visualData,
            const uint32_t& stride,
            const SurfaceFormat& format,
            const LayoutDeviceIntRect& dragRect,
            nsIPrincipal* principal,
            nsIPolicyContainer* policyContainer,
            const CookieJarSettingsArgs& cookieJarSettings,
            const MaybeDiscardedWindowContext& sourceWindowContext,
            const MaybeDiscardedWindowContext& sourceTopWindowContext);

    bool
    SendEnsureLayersConnected(CompositorOptions* compositorOptions);

    bool
    SendShowCanvasPermissionPrompt(
            const nsACString& aOrigin,
            const bool& aHideDoorHanger);

    bool
    SendSetSystemFont(const nsACString& aFontName);

    bool
    SendGetSystemFont(nsCString* retval);

    bool
    SendMaybeFireEmbedderLoadEvents(const EmbedderElementEventType& aFireEventAtEmbeddingElement);

    bool
    SendScrollRectIntoView(
            const nsRect& aRect,
            const ScrollAxis& aVertical,
            const ScrollAxis& aHorizontal,
            const ScrollFlags& aScrollFlags,
            const int32_t& aAppUnitsPerDevPixel);

    bool
    SendShowDynamicToolbar();

    bool
    SendSynthesizedEventResponse(const uint64_t& aCallbackId);

    void
    SendIsWindowSupportingProtectedMedia(
            const uint64_t& aOuterWindowID,
            mozilla::ipc::ResolveCallback<bool>&& aResolve,
            mozilla::ipc::RejectCallback&& aReject);

    RefPtr<IsWindowSupportingProtectedMediaPromise>
    SendIsWindowSupportingProtectedMedia(const uint64_t& aOuterWindowID);

    void
    SendIsWindowSupportingWebVR(
            const uint64_t& aOuterWindowID,
            mozilla::ipc::ResolveCallback<bool>&& aResolve,
            mozilla::ipc::RejectCallback&& aReject);

    RefPtr<IsWindowSupportingWebVRPromise>
    SendIsWindowSupportingWebVR(const uint64_t& aOuterWindowID);

    bool
    SendVisitURI(
            nsIURI* aURI,
            nsIURI* aLastVisitedURI,
            const uint32_t& aFlags,
            const uint64_t& aBrowserId);

    bool
    SendQueryVisitedState(mozilla::Span<RefPtr<nsIURI> const> aURIs);

    PSessionStoreChild*
    SendPSessionStoreConstructor(PSessionStoreChild* actor);

    bool
    SendNewWindowGlobal(
            ManagedEndpoint<::mozilla::dom::PWindowGlobalParent>&& aEndpoint,
            const WindowGlobalInit& aInit);

    bool
    SendUpdateDropEffect(
            const uint32_t& aDragAction,
            const uint32_t& aDropEffect);

    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<PColorPickerChild> mManagedPColorPickerChild;
    ManagedContainer<PDocAccessibleChild> mManagedPDocAccessibleChild;
    ManagedContainer<PFilePickerChild> mManagedPFilePickerChild;
    ManagedContainer<PPaymentRequestChild> mManagedPPaymentRequestChild;
    ManagedContainer<PSessionStoreChild> mManagedPSessionStoreChild;
    ManagedContainer<PWindowGlobalChild> mManagedPWindowGlobalChild;
    ManagedContainer<PBrowserBridgeChild> mManagedPBrowserBridgeChild;
    ManagedContainer<PVsyncChild> mManagedPVsyncChild;
};


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

#endif // ifndef PBrowserChild_h
