/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM $SRCDIR/dom/interfaces/base/nsIRemoteTab.idl
 */

#ifndef __gen_nsIRemoteTab_h__
#define __gen_nsIRemoteTab_h__


#include "domstubs.h"

#include "js/Value.h"

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIPrincipal; /* forward declaration */

namespace mozilla {
namespace dom {
class Element; /* webidl Element */
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
class WindowGlobalParent; /* webidl WindowGlobalParent */
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
class BrowsingContext; /* webidl BrowsingContext */
} // namespace dom
} // namespace mozilla


/* starting interface:    nsIRemoteTab */
#define NS_IREMOTETAB_IID_STR "8e49f7b0-1f98-4939-bf91-e9c39cd56434"

#define NS_IREMOTETAB_IID \
  {0x8e49f7b0, 0x1f98, 0x4939, \
    { 0xbf, 0x91, 0xe9, 0xc3, 0x9c, 0xd5, 0x64, 0x34 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIRemoteTab) nsIRemoteTab : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IREMOTETAB_IID)

  /* Used by ToJSValue to check which scriptable interface is implemented. */
  using ScriptableInterfaceType = nsIRemoteTab;

  /* attribute boolean renderLayers; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_renderLayers)
  NS_IMETHOD GetRenderLayers(bool *aRenderLayers) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIRemoteTab_renderLayers)
  NS_IMETHOD SetRenderLayers(bool aRenderLayers) = 0;

  /* readonly attribute boolean hasLayers; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_hasLayers)
  NS_IMETHOD GetHasLayers(bool *aHasLayers) = 0;

  /* attribute boolean priorityHint; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_priorityHint)
  NS_IMETHOD GetPriorityHint(bool *aPriorityHint) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIRemoteTab_priorityHint)
  NS_IMETHOD SetPriorityHint(bool aPriorityHint) = 0;

  /* void deprioritize (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRemoteTab_deprioritize)
  NS_IMETHOD Deprioritize(void) = 0;

  /* void preserveLayers (in boolean aPreserveLayers); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRemoteTab_preserveLayers)
  NS_IMETHOD PreserveLayers(bool aPreserveLayers) = 0;

  /* readonly attribute uint64_t tabId; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_tabId)
  NS_IMETHOD GetTabId(uint64_t *aTabId) = 0;

  /* readonly attribute uint64_t contentProcessId; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_contentProcessId)
  NS_IMETHOD GetContentProcessId(uint64_t *aContentProcessId) = 0;

  /* readonly attribute int32_t osPid; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_osPid)
  NS_IMETHOD GetOsPid(int32_t *aOsPid) = 0;

  /* readonly attribute BrowsingContext browsingContext; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_browsingContext)
  NS_IMETHOD GetBrowsingContext(mozilla::dom::BrowsingContext **aBrowsingContext) = 0;

  /* readonly attribute boolean hasPresented; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_hasPresented)
  NS_IMETHOD GetHasPresented(bool *aHasPresented) = 0;

  /* void createAboutBlankDocumentViewer (in nsIPrincipal aPrincipal, in nsIPrincipal aPartitionedPrincipal); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRemoteTab_createAboutBlankDocumentViewer)
  NS_IMETHOD CreateAboutBlankDocumentViewer(nsIPrincipal *aPrincipal, nsIPrincipal *aPartitionedPrincipal) = 0;

  enum MOZ_BINDING(binding_to, idl, class, XPIDL_nsIRemoteTab_NavigationType) NavigationType : uint8_t {
    NAVIGATE_BACK MOZ_BINDING(binding_to, idl, const, XPIDL_nsIRemoteTab_NavigationType_NAVIGATE_BACK) = 0,
    NAVIGATE_FORWARD MOZ_BINDING(binding_to, idl, const, XPIDL_nsIRemoteTab_NavigationType_NAVIGATE_FORWARD) = 1,
    NAVIGATE_INDEX MOZ_BINDING(binding_to, idl, const, XPIDL_nsIRemoteTab_NavigationType_NAVIGATE_INDEX) = 2,
    NAVIGATE_URL MOZ_BINDING(binding_to, idl, const, XPIDL_nsIRemoteTab_NavigationType_NAVIGATE_URL) = 3,
  };

  /* [binaryname(MaybeCancelContentJSExecutionFromScript),implicit_jscontext] void maybeCancelContentJSExecution (in nsIRemoteTab_NavigationType aNavigationType, [optional] in jsval aCancelContentJSOptions); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRemoteTab_maybeCancelContentJSExecution)
  NS_IMETHOD MaybeCancelContentJSExecutionFromScript(nsIRemoteTab::NavigationType aNavigationType, JS::Handle<JS::Value> aCancelContentJSOptions, JSContext* cx) = 0;

  /* [noscript] void notifyResolutionChanged (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRemoteTab_notifyResolutionChanged)
  NS_IMETHOD NotifyResolutionChanged(void) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIREMOTETAB \
  NS_IMETHOD GetRenderLayers(bool *aRenderLayers) override; \
  NS_IMETHOD SetRenderLayers(bool aRenderLayers) override; \
  NS_IMETHOD GetHasLayers(bool *aHasLayers) override; \
  NS_IMETHOD GetPriorityHint(bool *aPriorityHint) override; \
  NS_IMETHOD SetPriorityHint(bool aPriorityHint) override; \
  NS_IMETHOD Deprioritize(void) override; \
  NS_IMETHOD PreserveLayers(bool aPreserveLayers) override; \
  NS_IMETHOD GetTabId(uint64_t *aTabId) override; \
  NS_IMETHOD GetContentProcessId(uint64_t *aContentProcessId) override; \
  NS_IMETHOD GetOsPid(int32_t *aOsPid) override; \
  NS_IMETHOD GetBrowsingContext(mozilla::dom::BrowsingContext **aBrowsingContext) override; \
  NS_IMETHOD GetHasPresented(bool *aHasPresented) override; \
  NS_IMETHOD CreateAboutBlankDocumentViewer(nsIPrincipal *aPrincipal, nsIPrincipal *aPartitionedPrincipal) override; \
  NS_IMETHOD MaybeCancelContentJSExecutionFromScript(nsIRemoteTab::NavigationType aNavigationType, JS::Handle<JS::Value> aCancelContentJSOptions, JSContext* cx) override; \
  NS_IMETHOD NotifyResolutionChanged(void) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIREMOTETAB \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_renderLayers)\
  nsresult GetRenderLayers(bool *aRenderLayers); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIRemoteTab_renderLayers)\
  nsresult SetRenderLayers(bool aRenderLayers); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_hasLayers)\
  nsresult GetHasLayers(bool *aHasLayers); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_priorityHint)\
  nsresult GetPriorityHint(bool *aPriorityHint); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIRemoteTab_priorityHint)\
  nsresult SetPriorityHint(bool aPriorityHint); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRemoteTab_deprioritize)\
  nsresult Deprioritize(void); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRemoteTab_preserveLayers)\
  nsresult PreserveLayers(bool aPreserveLayers); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_tabId)\
  nsresult GetTabId(uint64_t *aTabId); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_contentProcessId)\
  nsresult GetContentProcessId(uint64_t *aContentProcessId); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_osPid)\
  nsresult GetOsPid(int32_t *aOsPid); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_browsingContext)\
  nsresult GetBrowsingContext(mozilla::dom::BrowsingContext **aBrowsingContext); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIRemoteTab_hasPresented)\
  nsresult GetHasPresented(bool *aHasPresented); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRemoteTab_createAboutBlankDocumentViewer)\
  nsresult CreateAboutBlankDocumentViewer(nsIPrincipal *aPrincipal, nsIPrincipal *aPartitionedPrincipal); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRemoteTab_maybeCancelContentJSExecution)\
  nsresult MaybeCancelContentJSExecutionFromScript(nsIRemoteTab::NavigationType aNavigationType, JS::Handle<JS::Value> aCancelContentJSOptions, JSContext* cx); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIRemoteTab_notifyResolutionChanged)\
  nsresult NotifyResolutionChanged(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIREMOTETAB(_to) \
  NS_IMETHOD GetRenderLayers(bool *aRenderLayers) override { return _to GetRenderLayers(aRenderLayers); } \
  NS_IMETHOD SetRenderLayers(bool aRenderLayers) override { return _to SetRenderLayers(aRenderLayers); } \
  NS_IMETHOD GetHasLayers(bool *aHasLayers) override { return _to GetHasLayers(aHasLayers); } \
  NS_IMETHOD GetPriorityHint(bool *aPriorityHint) override { return _to GetPriorityHint(aPriorityHint); } \
  NS_IMETHOD SetPriorityHint(bool aPriorityHint) override { return _to SetPriorityHint(aPriorityHint); } \
  NS_IMETHOD Deprioritize(void) override { return _to Deprioritize(); } \
  NS_IMETHOD PreserveLayers(bool aPreserveLayers) override { return _to PreserveLayers(aPreserveLayers); } \
  NS_IMETHOD GetTabId(uint64_t *aTabId) override { return _to GetTabId(aTabId); } \
  NS_IMETHOD GetContentProcessId(uint64_t *aContentProcessId) override { return _to GetContentProcessId(aContentProcessId); } \
  NS_IMETHOD GetOsPid(int32_t *aOsPid) override { return _to GetOsPid(aOsPid); } \
  NS_IMETHOD GetBrowsingContext(mozilla::dom::BrowsingContext **aBrowsingContext) override { return _to GetBrowsingContext(aBrowsingContext); } \
  NS_IMETHOD GetHasPresented(bool *aHasPresented) override { return _to GetHasPresented(aHasPresented); } \
  NS_IMETHOD CreateAboutBlankDocumentViewer(nsIPrincipal *aPrincipal, nsIPrincipal *aPartitionedPrincipal) override { return _to CreateAboutBlankDocumentViewer(aPrincipal, aPartitionedPrincipal); } \
  NS_IMETHOD MaybeCancelContentJSExecutionFromScript(nsIRemoteTab::NavigationType aNavigationType, JS::Handle<JS::Value> aCancelContentJSOptions, JSContext* cx) override { return _to MaybeCancelContentJSExecutionFromScript(aNavigationType, aCancelContentJSOptions, cx); } \
  NS_IMETHOD NotifyResolutionChanged(void) override { return _to NotifyResolutionChanged(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIREMOTETAB(_to) \
  NS_IMETHOD GetRenderLayers(bool *aRenderLayers) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRenderLayers(aRenderLayers); } \
  NS_IMETHOD SetRenderLayers(bool aRenderLayers) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRenderLayers(aRenderLayers); } \
  NS_IMETHOD GetHasLayers(bool *aHasLayers) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHasLayers(aHasLayers); } \
  NS_IMETHOD GetPriorityHint(bool *aPriorityHint) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPriorityHint(aPriorityHint); } \
  NS_IMETHOD SetPriorityHint(bool aPriorityHint) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPriorityHint(aPriorityHint); } \
  NS_IMETHOD Deprioritize(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Deprioritize(); } \
  NS_IMETHOD PreserveLayers(bool aPreserveLayers) override { return !_to ? NS_ERROR_NULL_POINTER : _to->PreserveLayers(aPreserveLayers); } \
  NS_IMETHOD GetTabId(uint64_t *aTabId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTabId(aTabId); } \
  NS_IMETHOD GetContentProcessId(uint64_t *aContentProcessId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContentProcessId(aContentProcessId); } \
  NS_IMETHOD GetOsPid(int32_t *aOsPid) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOsPid(aOsPid); } \
  NS_IMETHOD GetBrowsingContext(mozilla::dom::BrowsingContext **aBrowsingContext) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBrowsingContext(aBrowsingContext); } \
  NS_IMETHOD GetHasPresented(bool *aHasPresented) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHasPresented(aHasPresented); } \
  NS_IMETHOD CreateAboutBlankDocumentViewer(nsIPrincipal *aPrincipal, nsIPrincipal *aPartitionedPrincipal) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateAboutBlankDocumentViewer(aPrincipal, aPartitionedPrincipal); } \
  NS_IMETHOD MaybeCancelContentJSExecutionFromScript(nsIRemoteTab::NavigationType aNavigationType, JS::Handle<JS::Value> aCancelContentJSOptions, JSContext* cx) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MaybeCancelContentJSExecutionFromScript(aNavigationType, aCancelContentJSOptions, cx); } \
  NS_IMETHOD NotifyResolutionChanged(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyResolutionChanged(); } 


#endif /* __gen_nsIRemoteTab_h__ */
