/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM $SRCDIR/docshell/base/nsIDocumentViewerEdit.idl
 */

#ifndef __gen_nsIDocumentViewerEdit_h__
#define __gen_nsIDocumentViewerEdit_h__


#include "nsISupports.h"

#include "mozilla/AlreadyAddRefed.h"
#include "mozilla/Assertions.h"
#include "mozilla/DebugOnly.h"

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsINode; /* webidl Node */


/* starting interface:    nsIDocumentViewerEdit */
#define NS_IDOCUMENTVIEWEREDIT_IID_STR "e39a0c2a-5b31-4d57-a971-66ba07fab614"

#define NS_IDOCUMENTVIEWEREDIT_IID \
  {0xe39a0c2a, 0x5b31, 0x4d57, \
    { 0xa9, 0x71, 0x66, 0xba, 0x07, 0xfa, 0xb6, 0x14 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIDocumentViewerEdit) nsIDocumentViewerEdit : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IDOCUMENTVIEWEREDIT_IID)

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

  /* void clearSelection (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentViewerEdit_clearSelection)
  NS_IMETHOD ClearSelection(void) = 0;

  /* void selectAll (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentViewerEdit_selectAll)
  NS_IMETHOD SelectAll(void) = 0;

  /* void copySelection (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentViewerEdit_copySelection)
  NS_IMETHOD CopySelection(void) = 0;

  /* [infallible] readonly attribute boolean copyable; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIDocumentViewerEdit_copyable)
  NS_IMETHOD GetCopyable(bool *aCopyable) = 0;
  inline bool  GetCopyable()
  {
    bool result;
    mozilla::DebugOnly<nsresult> rv = GetCopyable(&result);
    MOZ_ASSERT(NS_SUCCEEDED(rv));
    return result;
  }

  /* void copyLinkLocation (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentViewerEdit_copyLinkLocation)
  NS_IMETHOD CopyLinkLocation(void) = 0;

  /* [infallible] readonly attribute boolean inLink; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIDocumentViewerEdit_inLink)
  NS_IMETHOD GetInLink(bool *aInLink) = 0;
  inline bool  GetInLink()
  {
    bool result;
    mozilla::DebugOnly<nsresult> rv = GetInLink(&result);
    MOZ_ASSERT(NS_SUCCEEDED(rv));
    return result;
  }

  enum {
    COPY_IMAGE_TEXT MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentViewerEdit_COPY_IMAGE_TEXT) = 1,
    COPY_IMAGE_HTML MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentViewerEdit_COPY_IMAGE_HTML) = 2,
    COPY_IMAGE_DATA MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentViewerEdit_COPY_IMAGE_DATA) = 4,
    COPY_IMAGE_ALL MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentViewerEdit_COPY_IMAGE_ALL) = -1
  };

  /* void copyImage (in long aCopyFlags); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentViewerEdit_copyImage)
  NS_IMETHOD CopyImage(int32_t aCopyFlags) = 0;

  /* [infallible] readonly attribute boolean inImage; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIDocumentViewerEdit_inImage)
  NS_IMETHOD GetInImage(bool *aInImage) = 0;
  inline bool  GetInImage()
  {
    bool result;
    mozilla::DebugOnly<nsresult> rv = GetInImage(&result);
    MOZ_ASSERT(NS_SUCCEEDED(rv));
    return result;
  }

  /* AString getContents (in string aMimeType, in boolean aSelectionOnly); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentViewerEdit_getContents)
  NS_IMETHOD GetContents(const char * aMimeType, bool aSelectionOnly, nsAString& _retval) = 0;

  /* [infallible] readonly attribute boolean canGetContents; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIDocumentViewerEdit_canGetContents)
  NS_IMETHOD GetCanGetContents(bool *aCanGetContents) = 0;
  inline bool  GetCanGetContents()
  {
    bool result;
    mozilla::DebugOnly<nsresult> rv = GetCanGetContents(&result);
    MOZ_ASSERT(NS_SUCCEEDED(rv));
    return result;
  }

  /* void setCommandNode (in Node aNode); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentViewerEdit_setCommandNode)
  NS_IMETHOD SetCommandNode(nsINode *aNode) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIDOCUMENTVIEWEREDIT \
  NS_IMETHOD ClearSelection(void) override; \
  NS_IMETHOD SelectAll(void) override; \
  NS_IMETHOD CopySelection(void) override; \
  using nsIDocumentViewerEdit::GetCopyable; \
  NS_IMETHOD GetCopyable(bool *aCopyable) override; \
  NS_IMETHOD CopyLinkLocation(void) override; \
  using nsIDocumentViewerEdit::GetInLink; \
  NS_IMETHOD GetInLink(bool *aInLink) override; \
  NS_IMETHOD CopyImage(int32_t aCopyFlags) override; \
  using nsIDocumentViewerEdit::GetInImage; \
  NS_IMETHOD GetInImage(bool *aInImage) override; \
  NS_IMETHOD GetContents(const char * aMimeType, bool aSelectionOnly, nsAString& _retval) override; \
  using nsIDocumentViewerEdit::GetCanGetContents; \
  NS_IMETHOD GetCanGetContents(bool *aCanGetContents) override; \
  NS_IMETHOD SetCommandNode(nsINode *aNode) 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_NSIDOCUMENTVIEWEREDIT \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentViewerEdit_clearSelection)\
  nsresult ClearSelection(void); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentViewerEdit_selectAll)\
  nsresult SelectAll(void); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentViewerEdit_copySelection)\
  nsresult CopySelection(void); \
  using nsIDocumentViewerEdit::GetCopyable; \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIDocumentViewerEdit_copyable)\
  nsresult GetCopyable(bool *aCopyable); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentViewerEdit_copyLinkLocation)\
  nsresult CopyLinkLocation(void); \
  using nsIDocumentViewerEdit::GetInLink; \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIDocumentViewerEdit_inLink)\
  nsresult GetInLink(bool *aInLink); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentViewerEdit_copyImage)\
  nsresult CopyImage(int32_t aCopyFlags); \
  using nsIDocumentViewerEdit::GetInImage; \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIDocumentViewerEdit_inImage)\
  nsresult GetInImage(bool *aInImage); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentViewerEdit_getContents)\
  nsresult GetContents(const char * aMimeType, bool aSelectionOnly, nsAString& _retval); \
  using nsIDocumentViewerEdit::GetCanGetContents; \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIDocumentViewerEdit_canGetContents)\
  nsresult GetCanGetContents(bool *aCanGetContents); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentViewerEdit_setCommandNode)\
  nsresult SetCommandNode(nsINode *aNode); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIDOCUMENTVIEWEREDIT(_to) \
  NS_IMETHOD ClearSelection(void) override { return _to ClearSelection(); } \
  NS_IMETHOD SelectAll(void) override { return _to SelectAll(); } \
  NS_IMETHOD CopySelection(void) override { return _to CopySelection(); } \
  using nsIDocumentViewerEdit::GetCopyable; \
  NS_IMETHOD GetCopyable(bool *aCopyable) override { return _to GetCopyable(aCopyable); } \
  NS_IMETHOD CopyLinkLocation(void) override { return _to CopyLinkLocation(); } \
  using nsIDocumentViewerEdit::GetInLink; \
  NS_IMETHOD GetInLink(bool *aInLink) override { return _to GetInLink(aInLink); } \
  NS_IMETHOD CopyImage(int32_t aCopyFlags) override { return _to CopyImage(aCopyFlags); } \
  using nsIDocumentViewerEdit::GetInImage; \
  NS_IMETHOD GetInImage(bool *aInImage) override { return _to GetInImage(aInImage); } \
  NS_IMETHOD GetContents(const char * aMimeType, bool aSelectionOnly, nsAString& _retval) override { return _to GetContents(aMimeType, aSelectionOnly, _retval); } \
  using nsIDocumentViewerEdit::GetCanGetContents; \
  NS_IMETHOD GetCanGetContents(bool *aCanGetContents) override { return _to GetCanGetContents(aCanGetContents); } \
  NS_IMETHOD SetCommandNode(nsINode *aNode) override { return _to SetCommandNode(aNode); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIDOCUMENTVIEWEREDIT(_to) \
  NS_IMETHOD ClearSelection(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearSelection(); } \
  NS_IMETHOD SelectAll(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SelectAll(); } \
  NS_IMETHOD CopySelection(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CopySelection(); } \
  NS_IMETHOD GetCopyable(bool *aCopyable) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCopyable(aCopyable); } \
  NS_IMETHOD CopyLinkLocation(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyLinkLocation(); } \
  NS_IMETHOD GetInLink(bool *aInLink) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInLink(aInLink); } \
  NS_IMETHOD CopyImage(int32_t aCopyFlags) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyImage(aCopyFlags); } \
  NS_IMETHOD GetInImage(bool *aInImage) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInImage(aInImage); } \
  NS_IMETHOD GetContents(const char * aMimeType, bool aSelectionOnly, nsAString& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContents(aMimeType, aSelectionOnly, _retval); } \
  NS_IMETHOD GetCanGetContents(bool *aCanGetContents) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCanGetContents(aCanGetContents); } \
  NS_IMETHOD SetCommandNode(nsINode *aNode) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCommandNode(aNode); } 


#endif /* __gen_nsIDocumentViewerEdit_h__ */
