diff options
Diffstat (limited to 'xpfe/appshell/nsIXULWindow.idl')
-rw-r--r-- | xpfe/appshell/nsIXULWindow.idl | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/xpfe/appshell/nsIXULWindow.idl b/xpfe/appshell/nsIXULWindow.idl new file mode 100644 index 000000000..8db12adb6 --- /dev/null +++ b/xpfe/appshell/nsIXULWindow.idl @@ -0,0 +1,168 @@ +/* -*- Mode: IDL; tab-width: 4; 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" + +/** + * The nsIXULWindow + * + * When the window is destroyed, it will fire a "xul-window-destroyed" + * notification through the global observer service. + */ + +interface nsIDocShell; +interface nsIDocShellTreeItem; +interface nsIXULBrowserWindow; +interface nsITabParent; +interface mozIDOMWindowProxy; + +[scriptable, uuid(d6d7a014-e28d-4c9d-8727-1cf6d870619b)] +interface nsIXULWindow : nsISupports +{ + /** + * The docshell owning the XUL for this window. + */ + readonly attribute nsIDocShell docShell; + + /** + * Indicates if this window is instrinsically sized. + */ + attribute boolean intrinsicallySized; + + /** + * The primary content shell. + * + * Note that this is a docshell tree item and therefore can not be assured of + * what object it is. It could be an editor, a docshell, or a browser object. + * Or down the road any other object that supports being a DocShellTreeItem + * Query accordingly to determine the capabilities. + */ + readonly attribute nsIDocShellTreeItem primaryContentShell; + + /** + * In multiprocess case we may not have primaryContentShell but + * primaryTabParent. + */ + readonly attribute nsITabParent primaryTabParent; + + void tabParentAdded(in nsITabParent aTab, in boolean aPrimary); + void tabParentRemoved(in nsITabParent aTab); + + /** + * The content shell specified by the supplied id. + * + * Note that this is a docshell tree item and therefore can not be assured of + * what object it is. It could be an editor, a docshell, or a browser object. + * Or down the road any other object that supports being a DocShellTreeItem + * Query accordingly to determine the capabilities. + */ + nsIDocShellTreeItem getContentShellById(in wstring ID); + + /** + * Tell this window that it has picked up a child XUL window + * @param aChild the child window being added + */ + void addChildWindow(in nsIXULWindow aChild); + + /** + * Tell this window that it has lost a child XUL window + * @param aChild the child window being removed + */ + void removeChildWindow(in nsIXULWindow aChild); + + /** + * Move the window to a centered position. + * @param aRelative If not null, the window relative to which the window is + * moved. See aScreen parameter for details. + * @param aScreen PR_TRUE to center the window relative to the screen + * containing aRelative if aRelative is not null. If + * aRelative is null then relative to the screen of the + * opener window if it was initialized by passing it to + * nsWebShellWindow::Initialize. Failing that relative to + * the main screen. + * PR_FALSE to center it relative to aRelative itself. + * @param aAlert PR_TRUE to move the window to an alert position, + * generally centered horizontally and 1/3 down from the top. + */ + void center(in nsIXULWindow aRelative, in boolean aScreen, in boolean aAlert); + + /** + * Shows the window as a modal window. That is, ensures that it is visible + * and runs a local event loop, exiting only once the window has been closed. + */ + void showModal(); + + const unsigned long lowestZ = 0; + const unsigned long loweredZ = 4; /* "alwaysLowered" attribute */ + const unsigned long normalZ = 5; + const unsigned long raisedZ = 6; /* "alwaysRaised" attribute */ + const unsigned long highestZ = 9; + + attribute unsigned long zLevel; + + /** + * contextFlags are from nsIWindowCreator2 + */ + attribute uint32_t contextFlags; + + attribute uint32_t chromeFlags; + + /** + * Begin assuming |chromeFlags| don't change hereafter, and assert + * if they do change. The state change is one-way and idempotent. + */ + void assumeChromeFlagsAreFrozen(); + + /** + * Create a new window. + * @param aChromeFlags see nsIWebBrowserChrome + * @param aOpeningTab the TabParent that requested this new window be opened. + * Can be left null. + * @param aOpener The window which is requesting that this new window be opened. + * @return the newly minted window + */ + nsIXULWindow createNewWindow(in int32_t aChromeFlags, + in nsITabParent aOpeningTab, + in mozIDOMWindowProxy aOpener); + + attribute nsIXULBrowserWindow XULBrowserWindow; + + /** + * Back-door method to force application of chrome flags at a particular + * time. Do NOT call this unless you know what you're doing! In particular, + * calling this when this XUL window doesn't yet have a document in its + * docshell could cause problems. + */ + [noscript] void applyChromeFlags(); + + /** + * Given the dimensions of some content area held within this + * XUL window, and assuming that that content area will change + * its dimensions in linear proportion to the dimensions of this + * XUL window, changes the size of the XUL window so that the + * content area reaches a particular size. + * + * We need to supply the content area dimensions because sometimes + * the child's nsDocShellTreeOwner needs to propagate a SizeShellTo + * call to the parent. But the shellItem argument of the call will + * not be available on the parent side. + * + * Note: this is an internal method, other consumers should never call this. + * + * @param aDesiredWidth + * The desired width of the content area in device pixels. + * @param aDesiredHeight + * The desired height of the content area in device pixels. + * @param shellItemWidth + * The current width of the content area. + * @param shellItemHeight + * The current height of the content area. + */ + [noscript, notxpcom] void sizeShellToWithLimit(in int32_t aDesiredWidth, + in int32_t aDesiredHeight, + in int32_t shellItemWidth, + in int32_t shellItemHeight); +}; |