2007-03-22 10:30:00 -07:00
|
|
|
/* -*- 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.org code.
|
|
|
|
*
|
|
|
|
* The Initial Developer of the Original Code is
|
|
|
|
* Netscape Communications, Inc.
|
|
|
|
* Portions created by the Initial Developer are Copyright (C) 2001
|
|
|
|
* the Initial Developer. All Rights Reserved.
|
|
|
|
*
|
|
|
|
* Contributor(s):
|
|
|
|
*
|
|
|
|
* Alternatively, the contents of this file may be used under the terms of
|
|
|
|
* either 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 ***** */
|
|
|
|
|
|
|
|
/* Private "control" methods on the Window Watcher. These are annoying
|
|
|
|
bookkeeping methods, not part of the public (embedding) interface.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "nsISupports.idl"
|
|
|
|
|
|
|
|
interface nsIDOMWindow;
|
|
|
|
interface nsISimpleEnumerator;
|
|
|
|
interface nsIWebBrowserChrome;
|
|
|
|
interface nsIDocShellTreeItem;
|
|
|
|
interface nsIArray;
|
|
|
|
|
|
|
|
%{C++
|
|
|
|
#include "jspubtd.h"
|
|
|
|
%}
|
|
|
|
|
2009-02-03 12:45:26 -08:00
|
|
|
[uuid(8624594a-28d7-4bc3-8d12-b1c2b9eefd90)]
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
interface nsPIWindowWatcher : nsISupports
|
|
|
|
{
|
|
|
|
/** A window has been created. Add it to our list.
|
|
|
|
@param aWindow the window to add
|
|
|
|
@param aChrome the corresponding chrome window. The DOM window
|
|
|
|
and chrome will be mapped together, and the corresponding
|
|
|
|
chrome can be retrieved using the (not private)
|
|
|
|
method getChromeForWindow. If null, any extant mapping
|
|
|
|
will be cleared.
|
|
|
|
*/
|
|
|
|
void addWindow(in nsIDOMWindow aWindow, in nsIWebBrowserChrome aChrome);
|
|
|
|
|
|
|
|
/** A window has been closed. Remove it from our list.
|
|
|
|
@param aWindow the window to remove
|
|
|
|
*/
|
|
|
|
void removeWindow(in nsIDOMWindow aWindow);
|
|
|
|
|
|
|
|
/** Like the public interface's open(), but can deal with openDialog
|
|
|
|
style arguments.
|
|
|
|
@param aParent parent window, if any. Null if no parent. If it is
|
|
|
|
impossible to get to an nsIWebBrowserChrome from aParent, this
|
|
|
|
method will effectively act as if aParent were null.
|
|
|
|
@param aURL url to which to open the new window. Must already be
|
|
|
|
escaped, if applicable. can be null.
|
|
|
|
@param aName window name from JS window.open. can be null. If a window
|
|
|
|
with this name already exists, the openWindow call may just load
|
|
|
|
aUrl in it (if aUrl is not null) and return it.
|
|
|
|
@param aFeatures window features from JS window.open. can be null.
|
|
|
|
@param aDialog use dialog defaults (see nsIDOMWindowInternal::openDialog)
|
|
|
|
@param aArgs Window argument
|
|
|
|
@return the new window
|
|
|
|
|
|
|
|
@note This method may examine the JS context stack for purposes of
|
|
|
|
determining the security context to use for the search for a given
|
|
|
|
window named aName.
|
|
|
|
@note This method should try to set the default charset for the new
|
|
|
|
window to the default charset of the document in the calling window
|
|
|
|
(which is determined based on the JS stack and the value of
|
|
|
|
aParent). This is not guaranteed, however.
|
|
|
|
*/
|
|
|
|
nsIDOMWindow openWindowJS(in nsIDOMWindow aParent, in string aUrl,
|
|
|
|
in string aName, in string aFeatures, in boolean aDialog,
|
|
|
|
in nsIArray aArgs);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Find a named docshell tree item amongst all windows registered
|
|
|
|
* with the window watcher. This may be a subframe in some window,
|
|
|
|
* for example.
|
|
|
|
*
|
|
|
|
* @param aName the name of the window. Must not be null.
|
|
|
|
* @param aRequestor the tree item immediately making the request.
|
|
|
|
* We should make sure to not recurse down into its findItemWithName
|
|
|
|
* method.
|
|
|
|
* @param aOriginalRequestor the original treeitem that made the request.
|
|
|
|
* Used for security checks.
|
|
|
|
* @return the tree item with aName as the name, or null if there
|
|
|
|
* isn't one. "Special" names, like _self, _top, etc, will be
|
|
|
|
* treated specially only if aRequestor is null; in that case they
|
|
|
|
* will be resolved relative to the first window the windowwatcher
|
|
|
|
* knows about.
|
|
|
|
* @see findItemWithName methods on nsIDocShellTreeItem and
|
|
|
|
* nsIDocShellTreeOwner
|
|
|
|
*/
|
|
|
|
nsIDocShellTreeItem findItemWithName(in wstring aName,
|
|
|
|
in nsIDocShellTreeItem aRequestor,
|
|
|
|
in nsIDocShellTreeItem aOriginalRequestor);
|
|
|
|
};
|
|
|
|
|