diff -r 000000000000 -r 6474c204b198 xpfe/appshell/public/nsIAppShellService.idl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xpfe/appshell/public/nsIAppShellService.idl Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,145 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsISupports.idl" + +interface nsIXULWindow; +interface nsIWebNavigation; +interface nsIURI; +interface nsIDOMWindow; +interface nsIAppShell; + +[ptr] native JSContext(JSContext); + +%{C++ +#include "js/TypeDecls.h" +%} + +[scriptable, uuid(2fa2f813-c216-4efb-8a8c-de60108ce5e5)] +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 aResult the newly created window is returned here. + */ + const long SIZE_TO_CONTENT = -1; + nsIXULWindow createTopLevelWindow(in nsIXULWindow aParent, + in nsIURI aUrl, + in uint32_t aChromeMask, + in long aInitialWidth, + in long aInitialHeight); + + /** + * This is the constructor for creating an invisible DocShell. + * It is used to simulate DOM windows without an actual physical + * representation. + * @param aIsChrome Set true if you want to use it for chrome content. + */ + nsIWebNavigation createWindowlessBrowser([optional] in bool aIsChrome); + + [noscript] + void createHiddenWindow(); + + 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 nsIDOMWindow hiddenDOMWindow; + + /** + * Return the (singleton) application hidden private window, automatically + * created and maintained by this AppShellService. This window is created + * in private browsing mode. + * @param aResult the hidden private window. Do not unhide hidden window. + * Do not taunt hidden window. + */ + readonly attribute nsIXULWindow hiddenPrivateWindow; + + /** + * Return the (singleton) application hidden private window, automatically + * created and maintained by this AppShellService. This window is created + * in private browsing mode. + * @param aResult the hidden private window. Do not unhide hidden window. + * Do not taunt hidden window. + */ + readonly attribute nsIDOMWindow hiddenPrivateDOMWindow; + + /** + * Return the (singleton) application hidden window as an nsIDOMWindow, + * 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 nsIDOMWindow + * @aJSContext the corresponding JavaScript context + */ + [noscript] + void getHiddenWindowAndJSContext(out nsIDOMWindow 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); + + /** + * Whether the hidden private window has been lazily created. + */ + [noscript] + readonly attribute boolean hasHiddenPrivateWindow; + + /** + * Start/stop tracking lags in the event loop. + * If the event loop gets unresponsive, a "event-loop-lag" notification + * is sent. Note that calling `startEventLoopLagTracking` when tracking + * is already enabled has no effect. + * @return true if tracking succeeded. + */ + bool startEventLoopLagTracking(); + void stopEventLoopLagTracking(); +};