/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Mozilla Communicator client code. * * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 1998 * the Initial Developer. All Rights Reserved. * * Contributor(s): * * Alternatively, the contents of this file may be used under the terms of * either of the GNU General Public License Version 2 or later (the "GPL"), * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsISupports.idl" interface nsIXULWindow; interface nsIURI; interface nsIDOMWindowInternal; interface nsIAppShell; [ptr] native JSContext(JSContext); %{C++ struct JSContext; %} [scriptable, uuid(361facd0-6e9a-4ff1-a0d4-450744cf0023)] interface nsIAppShellService : nsISupports { /** * Create a window, which will be initially invisible. * @param aParent the parent window. Can be null. * @param aUrl the contents of the new window. * @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 aAppShell a widget "appshell" (event processor) to associate * with the new window * @param aResult the newly created window is returned here. */ const long SIZE_TO_CONTENT = -1; nsIXULWindow createTopLevelWindow(in nsIXULWindow aParent, in nsIURI aUrl, in PRUint32 aChromeMask, in long aInitialWidth, in long aInitialHeight, in nsIAppShell aAppShell); [noscript] void createHiddenWindow(in nsIAppShell aAppShell); void destroyHiddenWindow(); /** * 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. */ readonly attribute nsIXULWindow hiddenWindow; /** * 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. */ readonly attribute nsIDOMWindowInternal hiddenDOMWindow; /** * 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); /** * Return true if the application hidden window was provided by the * application. If it wasn't, the default hidden window was used. This will * usually be false on all non-mac platforms. */ readonly attribute boolean applicationProvidedHiddenWindow; /** * 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 the window to register * @note When this method is successful, it fires the global notification * "xul-window-registered" */ void registerTopLevelWindow(in nsIXULWindow aWindow); /** * Remove a window from the application's window registry. Note that * this method won't automatically attempt to quit the app when * the last window is unregistered. For that, see Quit(). * @param aWindow you see the pattern */ void unregisterTopLevelWindow(in nsIXULWindow aWindow); };