1998-07-24 05:05:42 +00:00
|
|
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
|
|
*
|
|
|
|
* The contents of this file are subject to the Netscape Public License
|
|
|
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
|
|
* http://www.mozilla.org/NPL/
|
|
|
|
*
|
|
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
|
|
* for the specific language governing rights and limitations under the
|
|
|
|
* NPL.
|
|
|
|
*
|
|
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
|
|
* Communications Corporation. Portions created by Netscape are
|
|
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
|
|
* Reserved.
|
|
|
|
*/
|
|
|
|
#ifndef nsGlobalWindow_h___
|
|
|
|
#define nsGlobalWindow_h___
|
|
|
|
|
|
|
|
#include "nscore.h"
|
1999-10-14 10:58:25 +00:00
|
|
|
#include "nsCOMPtr.h"
|
1998-07-24 05:05:42 +00:00
|
|
|
#include "nsIFactory.h"
|
1999-08-20 09:51:02 +00:00
|
|
|
#include "nsIPrincipal.h"
|
1998-07-24 05:05:42 +00:00
|
|
|
#include "nsISupports.h"
|
|
|
|
#include "nsIScriptContext.h"
|
|
|
|
#include "nsIScriptObjectOwner.h"
|
|
|
|
#include "nsIScriptGlobalObject.h"
|
|
|
|
#include "nsIDOMWindow.h"
|
|
|
|
#include "nsIDOMNavigator.h"
|
1998-08-13 04:34:53 +00:00
|
|
|
#include "nsIDOMLocation.h"
|
1999-09-21 14:18:52 +00:00
|
|
|
#include "nsIDOMEventReceiver.h"
|
1999-08-03 23:16:48 +00:00
|
|
|
#include "nsIDOMNSLocation.h"
|
1999-01-28 23:12:54 +00:00
|
|
|
#include "nsIDOMScreen.h"
|
1998-07-24 05:05:42 +00:00
|
|
|
#include "nsITimer.h"
|
|
|
|
#include "nsIJSScriptObject.h"
|
|
|
|
#include "nsGUIEvent.h"
|
1999-07-07 07:50:03 +00:00
|
|
|
#include "nsFrameList.h"
|
|
|
|
#include "nsIScriptGlobalObjectData.h"
|
1999-02-01 18:14:20 +00:00
|
|
|
#include "nsDOMWindowList.h"
|
1999-03-28 22:19:42 +00:00
|
|
|
#include "nsIDOMEventTarget.h"
|
1999-10-14 10:58:25 +00:00
|
|
|
#include "nsIControllers.h"
|
|
|
|
#include "nsPIDOMWindow.h"
|
1998-07-24 05:05:42 +00:00
|
|
|
|
1999-04-28 20:33:43 +00:00
|
|
|
#define DEFAULT_HOME_PAGE "www.mozilla.org"
|
|
|
|
#define PREF_BROWSER_STARTUP_HOMEPAGE "browser.startup.homepage"
|
|
|
|
|
1998-07-24 05:05:42 +00:00
|
|
|
class nsIEventListenerManager;
|
1999-06-09 19:04:18 +00:00
|
|
|
class nsIDOMBarProp;
|
1998-07-24 05:05:42 +00:00
|
|
|
class nsIDOMDocument;
|
1999-05-27 21:06:51 +00:00
|
|
|
class nsIDocument;
|
1999-09-21 01:05:01 +00:00
|
|
|
class nsIContent;
|
1998-07-24 05:05:42 +00:00
|
|
|
class nsIPresContext;
|
|
|
|
class nsIDOMEvent;
|
1998-08-07 04:45:03 +00:00
|
|
|
class nsIBrowserWindow;
|
1999-10-06 22:07:42 +00:00
|
|
|
class nsIScrollableView;
|
1998-07-24 05:05:42 +00:00
|
|
|
|
|
|
|
#include "jsapi.h"
|
|
|
|
|
|
|
|
typedef struct nsTimeoutImpl nsTimeoutImpl;
|
|
|
|
|
1999-06-09 19:04:18 +00:00
|
|
|
class BarPropImpl;
|
1998-08-13 04:34:53 +00:00
|
|
|
class LocationImpl;
|
|
|
|
class NavigatorImpl;
|
1999-01-28 23:12:54 +00:00
|
|
|
class ScreenImpl;
|
|
|
|
class HistoryImpl;
|
1998-08-13 04:34:53 +00:00
|
|
|
|
1998-07-24 05:05:42 +00:00
|
|
|
// Global object for scripting
|
1999-07-07 07:50:03 +00:00
|
|
|
class GlobalWindowImpl : public nsIScriptObjectOwner, public nsIScriptGlobalObject, public nsIDOMWindow,
|
1999-10-14 10:58:25 +00:00
|
|
|
public nsIJSScriptObject, public nsIScriptGlobalObjectData, public nsIDOMEventReceiver,
|
|
|
|
public nsPIDOMWindow
|
1998-07-24 05:05:42 +00:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
GlobalWindowImpl();
|
1999-03-20 01:54:12 +00:00
|
|
|
virtual ~GlobalWindowImpl();
|
1998-07-24 05:05:42 +00:00
|
|
|
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
|
|
|
|
NS_IMETHOD GetScriptObject(nsIScriptContext *aContext, void** aScriptObject);
|
1998-09-17 01:53:52 +00:00
|
|
|
NS_IMETHOD SetScriptObject(void *aScriptObject);
|
1998-07-24 05:05:42 +00:00
|
|
|
|
|
|
|
NS_IMETHOD_(void) SetContext(nsIScriptContext *aContext);
|
1999-05-14 03:10:51 +00:00
|
|
|
NS_IMETHOD_(void) GetContext(nsIScriptContext **aContext);
|
1998-07-24 05:05:42 +00:00
|
|
|
NS_IMETHOD_(void) SetNewDocument(nsIDOMDocument *aDocument);
|
1998-08-07 04:45:03 +00:00
|
|
|
NS_IMETHOD_(void) SetWebShell(nsIWebShell *aWebShell);
|
1999-02-10 16:25:11 +00:00
|
|
|
NS_IMETHOD_(void) GetWebShell(nsIWebShell **aWebShell);// XXX This may be temporary - rods
|
1998-09-03 01:19:58 +00:00
|
|
|
NS_IMETHOD_(void) SetOpenerWindow(nsIDOMWindow *aOpener);
|
1998-07-24 05:05:42 +00:00
|
|
|
|
|
|
|
NS_IMETHOD GetWindow(nsIDOMWindow** aWindow);
|
|
|
|
NS_IMETHOD GetSelf(nsIDOMWindow** aSelf);
|
|
|
|
NS_IMETHOD GetDocument(nsIDOMDocument** aDocument);
|
|
|
|
NS_IMETHOD GetNavigator(nsIDOMNavigator** aNavigator);
|
1999-01-28 23:12:54 +00:00
|
|
|
NS_IMETHOD GetScreen(nsIDOMScreen** aScreen);
|
|
|
|
NS_IMETHOD GetHistory(nsIDOMHistory** aHistory);
|
1998-08-13 04:34:53 +00:00
|
|
|
NS_IMETHOD GetLocation(nsIDOMLocation** aLocation);
|
1998-08-13 23:37:54 +00:00
|
|
|
NS_IMETHOD GetParent(nsIDOMWindow** aOpener);
|
|
|
|
NS_IMETHOD GetTop(nsIDOMWindow** aTop);
|
1999-06-26 21:48:29 +00:00
|
|
|
NS_IMETHOD GetContent(nsIDOMWindow** aContent);
|
1998-08-13 23:37:54 +00:00
|
|
|
NS_IMETHOD GetClosed(PRBool* aClosed);
|
1999-06-09 19:04:18 +00:00
|
|
|
NS_IMETHOD GetMenubar(nsIDOMBarProp** aMenubar);
|
|
|
|
NS_IMETHOD GetToolbar(nsIDOMBarProp** aToolbar);
|
|
|
|
NS_IMETHOD GetLocationbar(nsIDOMBarProp** aLocationbar);
|
|
|
|
NS_IMETHOD GetPersonalbar(nsIDOMBarProp** aPersonalbar);
|
|
|
|
NS_IMETHOD GetStatusbar(nsIDOMBarProp** aStatusbar);
|
|
|
|
NS_IMETHOD GetScrollbars(nsIDOMBarProp** aScrollbars);
|
|
|
|
NS_IMETHOD GetDirectories(nsIDOMBarProp** aDirectories);
|
1998-08-21 21:39:27 +00:00
|
|
|
NS_IMETHOD GetFrames(nsIDOMWindowCollection** aFrames);
|
1998-08-13 23:37:54 +00:00
|
|
|
|
1998-09-03 01:19:58 +00:00
|
|
|
NS_IMETHOD GetOpener(nsIDOMWindow** aOpener);
|
|
|
|
NS_IMETHOD SetOpener(nsIDOMWindow* aOpener);
|
|
|
|
|
1998-08-13 23:37:54 +00:00
|
|
|
NS_IMETHOD GetStatus(nsString& aStatus);
|
|
|
|
NS_IMETHOD SetStatus(const nsString& aStatus);
|
|
|
|
|
|
|
|
NS_IMETHOD GetDefaultStatus(nsString& aDefaultStatus);
|
|
|
|
NS_IMETHOD SetDefaultStatus(const nsString& aDefaultStatus);
|
|
|
|
|
|
|
|
NS_IMETHOD GetName(nsString& aName);
|
|
|
|
NS_IMETHOD SetName(const nsString& aName);
|
|
|
|
|
1998-10-01 22:21:59 +00:00
|
|
|
NS_IMETHOD GetInnerWidth(PRInt32* aInnerWidth);
|
|
|
|
NS_IMETHOD SetInnerWidth(PRInt32 aInnerWidth);
|
|
|
|
|
|
|
|
NS_IMETHOD GetInnerHeight(PRInt32* aInnerHeight);
|
|
|
|
NS_IMETHOD SetInnerHeight(PRInt32 aInnerHeight);
|
|
|
|
|
|
|
|
NS_IMETHOD GetOuterWidth(PRInt32* aOuterWidth);
|
|
|
|
NS_IMETHOD SetOuterWidth(PRInt32 aOuterWidth);
|
|
|
|
|
|
|
|
NS_IMETHOD GetOuterHeight(PRInt32* aOuterHeight);
|
|
|
|
NS_IMETHOD SetOuterHeight(PRInt32 aOuterHeight);
|
|
|
|
|
|
|
|
NS_IMETHOD GetScreenX(PRInt32* aScreenX);
|
|
|
|
NS_IMETHOD SetScreenX(PRInt32 aScreenX);
|
|
|
|
|
|
|
|
NS_IMETHOD GetScreenY(PRInt32* aScreenY);
|
|
|
|
NS_IMETHOD SetScreenY(PRInt32 aScreenY);
|
|
|
|
|
|
|
|
NS_IMETHOD GetPageXOffset(PRInt32* aPageXOffset);
|
|
|
|
NS_IMETHOD SetPageXOffset(PRInt32 aPageXOffset);
|
|
|
|
|
|
|
|
NS_IMETHOD GetPageYOffset(PRInt32* aPageYOffset);
|
|
|
|
NS_IMETHOD SetPageYOffset(PRInt32 aPageYOffset);
|
|
|
|
|
1998-07-24 05:05:42 +00:00
|
|
|
NS_IMETHOD Dump(const nsString& aStr);
|
1999-06-11 23:57:25 +00:00
|
|
|
NS_IMETHOD Alert(JSContext *cx, jsval *argv, PRUint32 argc);
|
|
|
|
NS_IMETHOD Confirm(JSContext *cx, jsval *argv, PRUint32 argc, PRBool* aReturn);
|
|
|
|
NS_IMETHOD Prompt(JSContext *cx, jsval *argv, PRUint32 argc, nsString& aReturn);
|
1998-09-03 01:19:58 +00:00
|
|
|
NS_IMETHOD Focus();
|
|
|
|
NS_IMETHOD Blur();
|
1998-10-07 18:06:23 +00:00
|
|
|
NS_IMETHOD Forward();
|
|
|
|
NS_IMETHOD Back();
|
|
|
|
NS_IMETHOD Home();
|
|
|
|
NS_IMETHOD Stop();
|
1999-01-27 04:15:19 +00:00
|
|
|
NS_IMETHOD Print();
|
1998-10-01 22:21:59 +00:00
|
|
|
NS_IMETHOD MoveTo(PRInt32 aXPos, PRInt32 aYPos);
|
|
|
|
NS_IMETHOD MoveBy(PRInt32 aXDif, PRInt32 aYDif);
|
|
|
|
NS_IMETHOD ResizeTo(PRInt32 aWidth, PRInt32 aHeight);
|
|
|
|
NS_IMETHOD ResizeBy(PRInt32 aWidthDif, PRInt32 aHeightDif);
|
1999-09-03 22:41:56 +00:00
|
|
|
NS_IMETHOD SizeToContent();
|
1998-10-01 22:21:59 +00:00
|
|
|
NS_IMETHOD ScrollTo(PRInt32 aXScroll, PRInt32 aYScroll);
|
|
|
|
NS_IMETHOD ScrollBy(PRInt32 aXScrollDif, PRInt32 aYScrollDif);
|
1999-10-06 22:07:42 +00:00
|
|
|
NS_IMETHOD GetScrollX(PRInt32* aScrollX);
|
|
|
|
NS_IMETHOD GetScrollY(PRInt32* aScrollY);
|
1998-10-01 22:21:59 +00:00
|
|
|
|
1998-07-24 05:05:42 +00:00
|
|
|
NS_IMETHOD ClearTimeout(PRInt32 aTimerID);
|
|
|
|
NS_IMETHOD ClearInterval(PRInt32 aTimerID);
|
|
|
|
NS_IMETHOD SetTimeout(JSContext *cx, jsval *argv, PRUint32 argc,
|
|
|
|
PRInt32* aReturn);
|
|
|
|
NS_IMETHOD SetInterval(JSContext *cx, jsval *argv, PRUint32 argc,
|
|
|
|
PRInt32* aReturn);
|
1998-08-07 04:45:03 +00:00
|
|
|
NS_IMETHOD Open(JSContext *cx, jsval *argv, PRUint32 argc,
|
1998-09-03 01:19:58 +00:00
|
|
|
nsIDOMWindow** aReturn);
|
1999-05-14 03:10:51 +00:00
|
|
|
NS_IMETHOD OpenDialog(JSContext *cx, jsval *argv, PRUint32 argc,
|
|
|
|
nsIDOMWindow** aReturn);
|
1999-10-28 14:12:56 +00:00
|
|
|
NS_IMETHOD Close();
|
|
|
|
NS_IMETHOD Close(JSContext* cx, jsval* argv, PRUint32 argc);
|
1998-07-24 05:05:42 +00:00
|
|
|
|
1999-09-21 14:18:52 +00:00
|
|
|
NS_IMETHOD CaptureEvents(PRInt32 aEventFlags);
|
|
|
|
NS_IMETHOD ReleaseEvents(PRInt32 aEventFlags);
|
|
|
|
NS_IMETHOD RouteEvent(nsIDOMEvent* aEvt);
|
|
|
|
NS_IMETHOD EnableExternalCapture();
|
|
|
|
NS_IMETHOD DisableExternalCapture();
|
|
|
|
|
1999-05-14 18:54:25 +00:00
|
|
|
NS_IMETHOD CreatePopup(nsIDOMElement* aElement, nsIDOMElement* aPopupContent,
|
|
|
|
PRInt32 aXPos, PRInt32 aYPos,
|
1999-06-09 08:36:06 +00:00
|
|
|
const nsString& aPopupType, const nsString& anAnchorAlignment,
|
1999-07-01 00:07:41 +00:00
|
|
|
const nsString& aPopupAlignment, nsIDOMWindow** outPopup);
|
1999-10-14 10:58:25 +00:00
|
|
|
NS_IMETHOD GetControllers(nsIControllers** aResult);
|
|
|
|
|
1998-09-15 21:31:58 +00:00
|
|
|
// nsIDOMEventReceiver interface
|
1999-03-28 22:19:42 +00:00
|
|
|
NS_IMETHOD AddEventListenerByIID(nsIDOMEventListener *aListener, const nsIID& aIID);
|
|
|
|
NS_IMETHOD RemoveEventListenerByIID(nsIDOMEventListener *aListener, const nsIID& aIID);
|
1998-07-31 22:09:03 +00:00
|
|
|
NS_IMETHOD GetListenerManager(nsIEventListenerManager** aInstancePtrResult);
|
1998-07-24 05:05:42 +00:00
|
|
|
NS_IMETHOD GetNewListenerManager(nsIEventListenerManager **aInstancePtrResult);
|
|
|
|
|
1999-03-28 22:19:42 +00:00
|
|
|
// nsIDOMEventTarget interface
|
|
|
|
NS_IMETHOD AddEventListener(const nsString& aType, nsIDOMEventListener* aListener,
|
1999-07-19 19:54:34 +00:00
|
|
|
PRBool aUseCapture);
|
1999-03-28 22:19:42 +00:00
|
|
|
NS_IMETHOD RemoveEventListener(const nsString& aType, nsIDOMEventListener* aListener,
|
1999-07-19 19:54:34 +00:00
|
|
|
PRBool aUseCapture);
|
1999-03-28 22:19:42 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
1998-07-24 05:05:42 +00:00
|
|
|
NS_IMETHOD HandleDOMEvent(nsIPresContext& aPresContext,
|
|
|
|
nsEvent* aEvent,
|
|
|
|
nsIDOMEvent** aDOMEvent,
|
|
|
|
PRUint32 aFlags,
|
|
|
|
nsEventStatus& aEventStatus);
|
|
|
|
|
|
|
|
// nsIJSScriptObject interface
|
|
|
|
virtual PRBool AddProperty(JSContext *aContext, jsval aID, jsval *aVp);
|
|
|
|
virtual PRBool DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp);
|
|
|
|
virtual PRBool GetProperty(JSContext *aContext, jsval aID, jsval *aVp);
|
|
|
|
virtual PRBool SetProperty(JSContext *aContext, jsval aID, jsval *aVp);
|
|
|
|
virtual PRBool EnumerateProperty(JSContext *aContext);
|
|
|
|
virtual PRBool Resolve(JSContext *aContext, jsval aID);
|
|
|
|
virtual PRBool Convert(JSContext *aContext, jsval aID);
|
|
|
|
virtual void Finalize(JSContext *aContext);
|
|
|
|
|
1999-07-07 07:50:03 +00:00
|
|
|
// nsIScriptGlobalObjectData interface
|
1999-08-29 21:58:42 +00:00
|
|
|
NS_IMETHOD GetPrincipal(nsIPrincipal **prin);
|
1999-07-07 07:50:03 +00:00
|
|
|
|
1999-10-14 10:58:25 +00:00
|
|
|
// nsPIDOMWindowInterface
|
|
|
|
NS_IMETHOD GetPrivateParent(nsPIDOMWindow** aResult);
|
|
|
|
|
1998-07-24 05:05:42 +00:00
|
|
|
friend void nsGlobalWindow_RunTimeout(nsITimer *aTimer, void *aClosure);
|
|
|
|
|
1999-10-28 14:12:56 +00:00
|
|
|
static void CloseWindow(nsISupports* aWindow);
|
|
|
|
|
1998-07-24 05:05:42 +00:00
|
|
|
protected:
|
1999-06-11 21:49:41 +00:00
|
|
|
PRBool RunTimeout(nsTimeoutImpl *aTimeout);
|
1998-07-24 05:05:42 +00:00
|
|
|
nsresult ClearTimeoutOrInterval(PRInt32 aTimerID);
|
|
|
|
nsresult SetTimeoutOrInterval(JSContext *cx, jsval *argv,
|
|
|
|
PRUint32 argc, PRInt32* aReturn,
|
|
|
|
PRBool aIsInterval);
|
|
|
|
void InsertTimeoutIntoList(nsTimeoutImpl **aInsertionPoint,
|
|
|
|
nsTimeoutImpl *aTimeout);
|
|
|
|
void ClearAllTimeouts();
|
1999-07-08 23:02:07 +00:00
|
|
|
void DropTimeout(nsTimeoutImpl *aTimeout,
|
|
|
|
nsIScriptContext* aContext=nsnull);
|
1998-07-24 05:05:42 +00:00
|
|
|
void HoldTimeout(nsTimeoutImpl *aTimeout);
|
1999-08-12 22:08:17 +00:00
|
|
|
nsresult GetBrowserWindowInterface(nsIBrowserWindow*& aBrowser,
|
|
|
|
nsIWebShell *aWebShell=nsnull);
|
1998-08-07 04:45:03 +00:00
|
|
|
nsresult CheckWindowName(JSContext *cx, nsString& aName);
|
1999-07-08 02:04:32 +00:00
|
|
|
PRInt32 WinHasOption(char *options, char *name, PRBool& aPresenceFlag);
|
1998-08-13 23:37:54 +00:00
|
|
|
PRBool CheckForEventListener(JSContext *aContext, nsString& aPropName);
|
1998-07-24 05:05:42 +00:00
|
|
|
|
1999-05-17 18:52:21 +00:00
|
|
|
nsresult OpenInternal(JSContext *cx, jsval *argv, PRUint32 argc,
|
1999-08-07 02:51:03 +00:00
|
|
|
PRBool aDialog, nsIDOMWindow** aReturn);
|
1999-05-17 18:52:21 +00:00
|
|
|
nsresult AttachArguments(nsIDOMWindow *aWindow, jsval *argv, PRUint32 argc);
|
1999-08-07 02:51:03 +00:00
|
|
|
PRUint32 CalculateChromeFlags(char *aFeatures, PRBool aDialog);
|
|
|
|
nsresult SizeAndShowOpenedWebShell(nsIWebShell *aOuterShell,
|
|
|
|
char *aFeatures, PRBool aNewWindow, PRBool aDialog);
|
1999-05-17 18:52:21 +00:00
|
|
|
nsresult ReadyOpenedWebShell(nsIWebShell *aWebShell, nsIDOMWindow **aDOMWindow);
|
1999-10-06 22:07:42 +00:00
|
|
|
nsresult GetScrollInfo(nsIScrollableView** aScrollableView,
|
|
|
|
float* aP2T, float* aT2P);
|
1999-05-17 18:52:21 +00:00
|
|
|
|
1999-06-26 21:48:29 +00:00
|
|
|
static nsresult WebShellToDOMWindow(nsIWebShell *aWebShell, nsIDOMWindow **aDOMWindow);
|
|
|
|
|
1998-07-24 05:05:42 +00:00
|
|
|
nsIScriptContext *mContext;
|
|
|
|
void *mScriptObject;
|
|
|
|
nsIDOMDocument *mDocument;
|
1998-08-13 04:34:53 +00:00
|
|
|
NavigatorImpl *mNavigator;
|
|
|
|
LocationImpl *mLocation;
|
1999-01-28 23:12:54 +00:00
|
|
|
ScreenImpl *mScreen;
|
|
|
|
HistoryImpl *mHistory;
|
1998-08-07 04:45:03 +00:00
|
|
|
nsIWebShell *mWebShell;
|
1998-09-03 01:19:58 +00:00
|
|
|
nsIDOMWindow *mOpener;
|
1999-07-07 07:50:03 +00:00
|
|
|
|
1999-06-09 19:04:18 +00:00
|
|
|
BarPropImpl *mMenubar;
|
|
|
|
BarPropImpl *mToolbar;
|
|
|
|
BarPropImpl *mLocationbar;
|
|
|
|
BarPropImpl *mPersonalbar;
|
|
|
|
BarPropImpl *mStatusbar;
|
|
|
|
BarPropImpl *mScrollbars;
|
1998-07-24 05:05:42 +00:00
|
|
|
|
1999-09-21 01:05:01 +00:00
|
|
|
nsIContent* mChromeElement;
|
1999-10-14 10:58:25 +00:00
|
|
|
nsCOMPtr<nsIControllers> mControllers;
|
1999-05-27 21:06:51 +00:00
|
|
|
|
1998-07-24 05:05:42 +00:00
|
|
|
nsTimeoutImpl *mTimeouts;
|
|
|
|
nsTimeoutImpl **mTimeoutInsertionPoint;
|
|
|
|
nsTimeoutImpl *mRunningTimeout;
|
|
|
|
PRUint32 mTimeoutPublicIdCounter;
|
|
|
|
nsIEventListenerManager* mListenerManager;
|
1999-02-01 18:14:20 +00:00
|
|
|
nsDOMWindowList *mFrames;
|
1999-05-17 18:52:21 +00:00
|
|
|
|
1999-05-17 21:39:35 +00:00
|
|
|
PRBool mFirstDocumentLoad;
|
1998-07-24 05:05:42 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Timeout struct that holds information about each JavaScript
|
|
|
|
* timeout.
|
|
|
|
*/
|
|
|
|
struct nsTimeoutImpl {
|
|
|
|
PRInt32 ref_count; /* reference count to shared usage */
|
|
|
|
GlobalWindowImpl *window; /* window for which this timeout fires */
|
1999-07-12 23:40:01 +00:00
|
|
|
JSString *expr; /* the JS expression to evaluate */
|
1998-07-24 05:05:42 +00:00
|
|
|
JSObject *funobj; /* or function to call, if !expr */
|
|
|
|
nsITimer *timer; /* The actual timer object */
|
|
|
|
jsval *argv; /* function actual arguments */
|
|
|
|
PRUint16 argc; /* and argument count */
|
|
|
|
PRUint16 spare; /* alignment padding */
|
|
|
|
PRUint32 public_id; /* Returned as value of setTimeout() */
|
|
|
|
PRInt32 interval; /* Non-zero if repetitive timeout */
|
|
|
|
PRInt64 when; /* nominal time to run this timeout */
|
|
|
|
JSVersion version; /* Version of JavaScript to execute */
|
1999-08-20 09:51:02 +00:00
|
|
|
nsIPrincipal *principal; /* principals with which to execute */
|
1998-07-24 05:05:42 +00:00
|
|
|
char *filename; /* filename of setTimeout call */
|
|
|
|
PRUint32 lineno; /* line number of setTimeout call */
|
|
|
|
nsTimeoutImpl *next;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Script "navigator" object
|
|
|
|
class NavigatorImpl : public nsIScriptObjectOwner, public nsIDOMNavigator {
|
|
|
|
public:
|
|
|
|
NavigatorImpl();
|
1999-03-20 01:54:12 +00:00
|
|
|
virtual ~NavigatorImpl();
|
1998-07-24 05:05:42 +00:00
|
|
|
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
|
|
|
|
NS_IMETHOD GetScriptObject(nsIScriptContext *aContext, void** aScriptObject);
|
1998-09-17 01:53:52 +00:00
|
|
|
NS_IMETHOD SetScriptObject(void *aScriptObject);
|
1998-07-24 05:05:42 +00:00
|
|
|
|
|
|
|
NS_IMETHOD GetAppCodeName(nsString& aAppCodeName);
|
|
|
|
|
|
|
|
NS_IMETHOD GetAppName(nsString& aAppName);
|
|
|
|
|
1999-04-15 21:44:18 +00:00
|
|
|
NS_IMETHOD GetAppVersion(nsString& aAppVersion);
|
|
|
|
|
1998-07-24 05:05:42 +00:00
|
|
|
NS_IMETHOD GetLanguage(nsString& aLanguage);
|
|
|
|
|
1999-04-15 21:44:18 +00:00
|
|
|
NS_IMETHOD GetMimeTypes(nsIDOMMimeTypeArray** aMimeTypes);
|
|
|
|
|
1998-07-24 05:05:42 +00:00
|
|
|
NS_IMETHOD GetPlatform(nsString& aPlatform);
|
|
|
|
|
1999-04-15 21:44:18 +00:00
|
|
|
NS_IMETHOD GetPlugins(nsIDOMPluginArray** aPlugins);
|
|
|
|
|
1998-07-24 05:05:42 +00:00
|
|
|
NS_IMETHOD GetSecurityPolicy(nsString& aSecurityPolicy);
|
|
|
|
|
1999-04-15 21:44:18 +00:00
|
|
|
NS_IMETHOD GetUserAgent(nsString& aUserAgent);
|
|
|
|
|
1998-07-24 05:05:42 +00:00
|
|
|
NS_IMETHOD JavaEnabled(PRBool* aReturn);
|
|
|
|
|
1999-08-27 06:11:39 +00:00
|
|
|
NS_IMETHOD TaintEnabled(PRBool* aReturn);
|
|
|
|
|
|
|
|
NS_IMETHOD Preference(JSContext* cx, jsval* argv, PRUint32 argc, jsval* aReturn);
|
|
|
|
|
1998-07-24 05:05:42 +00:00
|
|
|
protected:
|
|
|
|
void *mScriptObject;
|
1999-04-20 19:41:17 +00:00
|
|
|
nsIDOMMimeTypeArray* mMimeTypes;
|
|
|
|
nsIDOMPluginArray* mPlugins;
|
1998-07-24 05:05:42 +00:00
|
|
|
};
|
|
|
|
|
1999-06-23 03:29:44 +00:00
|
|
|
class nsIURI;
|
1998-12-16 05:40:20 +00:00
|
|
|
|
1999-08-03 23:16:48 +00:00
|
|
|
class LocationImpl : public nsIScriptObjectOwner,
|
|
|
|
public nsIDOMLocation,
|
|
|
|
public nsIDOMNSLocation,
|
|
|
|
public nsIJSScriptObject
|
|
|
|
{
|
1998-08-13 04:34:53 +00:00
|
|
|
|
|
|
|
protected:
|
|
|
|
public:
|
|
|
|
LocationImpl(nsIWebShell *aWebShell);
|
1999-03-20 01:54:12 +00:00
|
|
|
virtual ~LocationImpl();
|
1998-08-13 04:34:53 +00:00
|
|
|
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
|
|
|
|
NS_IMETHOD GetScriptObject(nsIScriptContext *aContext, void** aScriptObject);
|
1998-09-17 01:53:52 +00:00
|
|
|
NS_IMETHOD SetScriptObject(void *aScriptObject);
|
1998-08-13 04:34:53 +00:00
|
|
|
|
|
|
|
NS_IMETHOD_(void) SetWebShell(nsIWebShell *aWebShell);
|
|
|
|
|
1999-08-03 23:16:48 +00:00
|
|
|
// nsIDOMLocation
|
1998-08-13 04:34:53 +00:00
|
|
|
NS_IMETHOD GetHash(nsString& aHash);
|
|
|
|
NS_IMETHOD SetHash(const nsString& aHash);
|
|
|
|
NS_IMETHOD GetHost(nsString& aHost);
|
|
|
|
NS_IMETHOD SetHost(const nsString& aHost);
|
|
|
|
NS_IMETHOD GetHostname(nsString& aHostname);
|
|
|
|
NS_IMETHOD SetHostname(const nsString& aHostname);
|
|
|
|
NS_IMETHOD GetHref(nsString& aHref);
|
|
|
|
NS_IMETHOD SetHref(const nsString& aHref);
|
|
|
|
NS_IMETHOD GetPathname(nsString& aPathname);
|
|
|
|
NS_IMETHOD SetPathname(const nsString& aPathname);
|
|
|
|
NS_IMETHOD GetPort(nsString& aPort);
|
|
|
|
NS_IMETHOD SetPort(const nsString& aPort);
|
|
|
|
NS_IMETHOD GetProtocol(nsString& aProtocol);
|
|
|
|
NS_IMETHOD SetProtocol(const nsString& aProtocol);
|
|
|
|
NS_IMETHOD GetSearch(nsString& aSearch);
|
|
|
|
NS_IMETHOD SetSearch(const nsString& aSearch);
|
1999-08-03 23:16:48 +00:00
|
|
|
NS_IMETHOD Reload(PRBool aForceget);
|
1998-08-13 04:34:53 +00:00
|
|
|
NS_IMETHOD Replace(const nsString& aUrl);
|
1999-01-06 17:22:34 +00:00
|
|
|
NS_IMETHOD ToString(nsString& aReturn);
|
1999-08-03 23:16:48 +00:00
|
|
|
|
|
|
|
// nsIDOMNSLocation
|
|
|
|
NS_IMETHOD Reload(JSContext *cx, jsval *argv, PRUint32 argc);
|
|
|
|
NS_IMETHOD Replace(JSContext *cx, jsval *argv, PRUint32 argc);
|
|
|
|
|
|
|
|
// nsIJSScriptObject
|
|
|
|
virtual PRBool AddProperty(JSContext *aContext, jsval aID, jsval *aVp);
|
|
|
|
virtual PRBool DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp);
|
|
|
|
virtual PRBool GetProperty(JSContext *aContext, jsval aID, jsval *aVp);
|
|
|
|
virtual PRBool SetProperty(JSContext *aContext, jsval aID, jsval *aVp);
|
|
|
|
virtual PRBool EnumerateProperty(JSContext *aContext);
|
|
|
|
virtual PRBool Resolve(JSContext *aContext, jsval aID);
|
|
|
|
virtual PRBool Convert(JSContext *aContext, jsval aID);
|
|
|
|
virtual void Finalize(JSContext *aContext);
|
1998-08-13 04:34:53 +00:00
|
|
|
|
|
|
|
protected:
|
1999-06-23 03:29:44 +00:00
|
|
|
nsresult SetURL(nsIURI* aURL);
|
1999-08-03 23:16:48 +00:00
|
|
|
nsresult SetHrefWithBase(const nsString& aHref,
|
|
|
|
nsIURI* aBase,
|
|
|
|
PRBool aReplace);
|
|
|
|
nsresult GetSourceURL(JSContext* cx,
|
|
|
|
nsIURI** sourceURL);
|
1999-09-07 02:54:19 +00:00
|
|
|
nsresult CheckURL(nsIURI *url);
|
1998-08-13 04:34:53 +00:00
|
|
|
|
|
|
|
nsIWebShell *mWebShell;
|
|
|
|
void *mScriptObject;
|
|
|
|
};
|
|
|
|
|
1998-07-24 05:05:42 +00:00
|
|
|
#endif /* nsGlobalWindow_h___ */
|