/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM nsIAppShellService.idl
 */

#ifndef __gen_nsIAppShellService_h__
#define __gen_nsIAppShellService_h__

#include "nsISupports.h"
#include "domstubs.h"

#include "nscore.h"
#include "nsCom.h"
#include "nsINativeAppSupport.h"
class nsIXULWindow; /* forward declaration */

class nsIURI; /* forward declaration */

class nsICmdLineService; /* forward declaration */

class nsINativeAppSupport; /* forward declaration */

/* Forward declarations... */
struct PRThread;
class nsIFactory;
struct JSContext;
#define NS_SIZETOCONTENT -1
// e5e5af70-8a38-11d2-9938-0080c7cb1080
#define NS_IAPPSHELL_SERVICE_IID \
{ 0xe5e5af70, 0x8a38, 0x11d2, \
	{0x99, 0x38, 0x00, 0x80, 0xc7, 0xcb, 0x10, 0x80} }

/* starting interface:    nsIAppShellService */
#define NS_IAPPSHELLSERVICE_IID_STR "e5e5af70-8a38-11d2-9938-0080c7cb1080"

#define NS_IAPPSHELLSERVICE_IID \
  {0xe5e5af70, 0x8a38, 0x11d2, \
    { 0x99, 0x38, 0x00, 0x80, 0xc7, 0xcb, 0x10, 0x80 }}

class NS_NO_VTABLE nsIAppShellService : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IAPPSHELLSERVICE_IID)

  /**
   * Required initialization routine.
   * @param aCmdLineService is stored and passed to appshell components as
   *                        they are initialized.
   * @param aNativeAppSupportOrSplashScreen is an object that can be QI'd to
   *                        either an nsINativeAppSupport or nsISplashScreen;
   *                        this object will be used to implement HideSplashScreen.
   */
  /* void Initialize (in nsICmdLineService aCmdLineService, in nsISupports nativeAppSupportOrSplashScreen); */
  NS_IMETHOD Initialize(nsICmdLineService *aCmdLineService, nsISupports *nativeAppSupportOrSplashScreen) = 0;

  /**
   * Getter for "native app support."
   */
  /* readonly attribute nsINativeAppSupport nativeAppSupport; */
  NS_IMETHOD GetNativeAppSupport(nsINativeAppSupport * *aNativeAppSupport) = 0;

  /**
   * Runs an application event loop: normally the main event pump which
   * defines the lifetime of the application.
   */
  /* void Run (); */
  NS_IMETHOD Run(void) = 0;

  /* void Quit (); */
  NS_IMETHOD Quit(void) = 0;

  /**
   * Required exit routine.  Cleanly shuts down
   * the appshell components.
   */
  /* void Shutdown (); */
  NS_IMETHOD Shutdown(void) = 0;

  /**
   * Create a window.
   * @param aParent the parent window.  Can be null.
   * @param aUrl the contents of the new window.
   * @param aShowWindow the window remains invisible if PR_FALSE.
   * @param aLoadDefaultPage controls whether the window should try to
   *                         load a default content page on its own.
   * @param aChromeMask chrome flags affecting the kind of OS border
   *                    given to the window. see nsIBrowserWindow for
   *                    bit/flag definitions.
   * @param aCallbacks interface providing C++ hooks for window initialization
   *                   before the window is made visible.  Can be null.
   *                   Deprecated.
   * @param aInitialWidth width, in pixels, of the window.  Width of window
   *                      at creation.  Can be overridden by the "width"
   *                      tag in the XUL.  Set to NS_SIZETOCONTENT to force
   *                      the window to wrap to its contents.
   * @param aInitialHeight like aInitialWidth, but subtly different.
   * @param aResult the newly created window is returned here.
   */
  /* void CreateTopLevelWindow (in nsIXULWindow aParent, in nsIURI aUrl, in boolean aShowWindow, in boolean aLoadDefaultPage, in PRUint32 aChromeMask, in long aInitialWidth, in long aInitialHeight, out nsIXULWindow aResult); */
  NS_IMETHOD CreateTopLevelWindow(nsIXULWindow *aParent, nsIURI *aUrl, PRBool aShowWindow, PRBool aLoadDefaultPage, PRUint32 aChromeMask, PRInt32 aInitialWidth, PRInt32 aInitialHeight, nsIXULWindow **aResult) = 0;

  /* void EnumerateAndInitializeComponents (); */
  NS_IMETHOD EnumerateAndInitializeComponents(void) = 0;

  /**
   * Close a window.
   * @param aWindow a window.
   */
  /* void CloseTopLevelWindow (in nsIXULWindow aWindow); */
  NS_IMETHOD CloseTopLevelWindow(nsIXULWindow *aWindow) = 0;

  /* [noscript] void CreateHiddenWindow (); */
  NS_IMETHOD CreateHiddenWindow(void) = 0;

  /**
   * Return the (singleton) application hidden window, automatically created
   * and maintained by this AppShellService.
   * @param aResult the hidden window.  Do not unhide hidden window.
   *                Do not taunt hidden window.
   */
  /* void GetHiddenWindow (out nsIXULWindow aResult); */
  NS_IMETHOD GetHiddenWindow(nsIXULWindow **aResult) = 0;

  /**
   * Return the (singleton) application hidden window, automatically created
   * and maintained by this AppShellService.
   * @param aResult the hidden window.  Do not unhide hidden window.
   *                Do not taunt hidden window.
   */
  /* nsIDOMWindowInternal getHiddenDOMWindow (); */
  NS_IMETHOD GetHiddenDOMWindow(nsIDOMWindowInternal **_retval) = 0;

  /**
   * Return the (singleton) application hidden window as an nsIDOMWindowInternal,
   * and, the corresponding JavaScript context pointer.  This is useful
   * if you'd like to subsequently call OpenDialog on the hidden window.
   * @aHiddenDOMWindow the hidden window QI'd to type nsIDOMWindowInternal
   * @aJSContext       the corresponding JavaScript context
   */
  /* [noscript] void GetHiddenWindowAndJSContext (out nsIDOMWindowInternal aHiddenDOMWindow, out JSContext aJSContext); */
  NS_IMETHOD GetHiddenWindowAndJSContext(nsIDOMWindowInternal **aHiddenDOMWindow, JSContext * *aJSContext) = 0;

  /**
   * Add a window to the application's registry of windows.  These windows
   * are generally shown in the Windows taskbar, and the application
   * knows it can't quit until it's out of registered windows.
   * @param aWindow yes
   */
  /* void RegisterTopLevelWindow (in nsIXULWindow aWindow); */
  NS_IMETHOD RegisterTopLevelWindow(nsIXULWindow *aWindow) = 0;

  /**
   * Remove a window from the application's window registry.
   * @param aWindow you see the pattern
   */
  /* void UnregisterTopLevelWindow (in nsIXULWindow aWindow); */
  NS_IMETHOD UnregisterTopLevelWindow(nsIXULWindow *aWindow) = 0;

  /**
   * Remove the splash screen (if visible).  This need be called
   * only once per application session.
   */
  /* void HideSplashScreen (); */
  NS_IMETHOD HideSplashScreen(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIAPPSHELLSERVICE \
  NS_IMETHOD Initialize(nsICmdLineService *aCmdLineService, nsISupports *nativeAppSupportOrSplashScreen); \
  NS_IMETHOD GetNativeAppSupport(nsINativeAppSupport * *aNativeAppSupport); \
  NS_IMETHOD Run(void); \
  NS_IMETHOD Quit(void); \
  NS_IMETHOD Shutdown(void); \
  NS_IMETHOD CreateTopLevelWindow(nsIXULWindow *aParent, nsIURI *aUrl, PRBool aShowWindow, PRBool aLoadDefaultPage, PRUint32 aChromeMask, PRInt32 aInitialWidth, PRInt32 aInitialHeight, nsIXULWindow **aResult); \
  NS_IMETHOD EnumerateAndInitializeComponents(void); \
  NS_IMETHOD CloseTopLevelWindow(nsIXULWindow *aWindow); \
  NS_IMETHOD CreateHiddenWindow(void); \
  NS_IMETHOD GetHiddenWindow(nsIXULWindow **aResult); \
  NS_IMETHOD GetHiddenDOMWindow(nsIDOMWindowInternal **_retval); \
  NS_IMETHOD GetHiddenWindowAndJSContext(nsIDOMWindowInternal **aHiddenDOMWindow, JSContext * *aJSContext); \
  NS_IMETHOD RegisterTopLevelWindow(nsIXULWindow *aWindow); \
  NS_IMETHOD UnregisterTopLevelWindow(nsIXULWindow *aWindow); \
  NS_IMETHOD HideSplashScreen(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIAPPSHELLSERVICE(_to) \
  NS_IMETHOD Initialize(nsICmdLineService *aCmdLineService, nsISupports *nativeAppSupportOrSplashScreen) { return _to ## Initialize(aCmdLineService, nativeAppSupportOrSplashScreen); } \
  NS_IMETHOD GetNativeAppSupport(nsINativeAppSupport * *aNativeAppSupport) { return _to ## GetNativeAppSupport(aNativeAppSupport); } \
  NS_IMETHOD Run(void) { return _to ## Run(); } \
  NS_IMETHOD Quit(void) { return _to ## Quit(); } \
  NS_IMETHOD Shutdown(void) { return _to ## Shutdown(); } \
  NS_IMETHOD CreateTopLevelWindow(nsIXULWindow *aParent, nsIURI *aUrl, PRBool aShowWindow, PRBool aLoadDefaultPage, PRUint32 aChromeMask, PRInt32 aInitialWidth, PRInt32 aInitialHeight, nsIXULWindow **aResult) { return _to ## CreateTopLevelWindow(aParent, aUrl, aShowWindow, aLoadDefaultPage, aChromeMask, aInitialWidth, aInitialHeight, aResult); } \
  NS_IMETHOD EnumerateAndInitializeComponents(void) { return _to ## EnumerateAndInitializeComponents(); } \
  NS_IMETHOD CloseTopLevelWindow(nsIXULWindow *aWindow) { return _to ## CloseTopLevelWindow(aWindow); } \
  NS_IMETHOD CreateHiddenWindow(void) { return _to ## CreateHiddenWindow(); } \
  NS_IMETHOD GetHiddenWindow(nsIXULWindow **aResult) { return _to ## GetHiddenWindow(aResult); } \
  NS_IMETHOD GetHiddenDOMWindow(nsIDOMWindowInternal **_retval) { return _to ## GetHiddenDOMWindow(_retval); } \
  NS_IMETHOD GetHiddenWindowAndJSContext(nsIDOMWindowInternal **aHiddenDOMWindow, JSContext * *aJSContext) { return _to ## GetHiddenWindowAndJSContext(aHiddenDOMWindow, aJSContext); } \
  NS_IMETHOD RegisterTopLevelWindow(nsIXULWindow *aWindow) { return _to ## RegisterTopLevelWindow(aWindow); } \
  NS_IMETHOD UnregisterTopLevelWindow(nsIXULWindow *aWindow) { return _to ## UnregisterTopLevelWindow(aWindow); } \
  NS_IMETHOD HideSplashScreen(void) { return _to ## HideSplashScreen(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsAppShellService : public nsIAppShellService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIAPPSHELLSERVICE

  nsAppShellService();
  virtual ~nsAppShellService();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsAppShellService, nsIAppShellService)

nsAppShellService::nsAppShellService()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

nsAppShellService::~nsAppShellService()
{
  /* destructor code */
}

/* void Initialize (in nsICmdLineService aCmdLineService, in nsISupports nativeAppSupportOrSplashScreen); */
NS_IMETHODIMP nsAppShellService::Initialize(nsICmdLineService *aCmdLineService, nsISupports *nativeAppSupportOrSplashScreen)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsINativeAppSupport nativeAppSupport; */
NS_IMETHODIMP nsAppShellService::GetNativeAppSupport(nsINativeAppSupport * *aNativeAppSupport)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void Run (); */
NS_IMETHODIMP nsAppShellService::Run()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void Quit (); */
NS_IMETHODIMP nsAppShellService::Quit()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void Shutdown (); */
NS_IMETHODIMP nsAppShellService::Shutdown()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void CreateTopLevelWindow (in nsIXULWindow aParent, in nsIURI aUrl, in boolean aShowWindow, in boolean aLoadDefaultPage, in PRUint32 aChromeMask, in long aInitialWidth, in long aInitialHeight, out nsIXULWindow aResult); */
NS_IMETHODIMP nsAppShellService::CreateTopLevelWindow(nsIXULWindow *aParent, nsIURI *aUrl, PRBool aShowWindow, PRBool aLoadDefaultPage, PRUint32 aChromeMask, PRInt32 aInitialWidth, PRInt32 aInitialHeight, nsIXULWindow **aResult)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void EnumerateAndInitializeComponents (); */
NS_IMETHODIMP nsAppShellService::EnumerateAndInitializeComponents()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void CloseTopLevelWindow (in nsIXULWindow aWindow); */
NS_IMETHODIMP nsAppShellService::CloseTopLevelWindow(nsIXULWindow *aWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void CreateHiddenWindow (); */
NS_IMETHODIMP nsAppShellService::CreateHiddenWindow()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void GetHiddenWindow (out nsIXULWindow aResult); */
NS_IMETHODIMP nsAppShellService::GetHiddenWindow(nsIXULWindow **aResult)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIDOMWindowInternal getHiddenDOMWindow (); */
NS_IMETHODIMP nsAppShellService::GetHiddenDOMWindow(nsIDOMWindowInternal **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void GetHiddenWindowAndJSContext (out nsIDOMWindowInternal aHiddenDOMWindow, out JSContext aJSContext); */
NS_IMETHODIMP nsAppShellService::GetHiddenWindowAndJSContext(nsIDOMWindowInternal **aHiddenDOMWindow, JSContext * *aJSContext)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void RegisterTopLevelWindow (in nsIXULWindow aWindow); */
NS_IMETHODIMP nsAppShellService::RegisterTopLevelWindow(nsIXULWindow *aWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void UnregisterTopLevelWindow (in nsIXULWindow aWindow); */
NS_IMETHODIMP nsAppShellService::UnregisterTopLevelWindow(nsIXULWindow *aWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void HideSplashScreen (); */
NS_IMETHODIMP nsAppShellService::HideSplashScreen()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


#endif /* __gen_nsIAppShellService_h__ */
