Adding more window properties and slightly refCnt declaration.

git-svn-id: svn://10.0.0.236/trunk@7990 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
joki%netscape.com 1998-08-13 23:37:54 +00:00
parent aa3ae981e5
commit dc5a875ea9
11 changed files with 417 additions and 100 deletions

View File

@ -45,9 +45,7 @@ public:
nsDOMEvent(nsIPresContext* aPresContext, nsEvent* aEvent);
virtual ~nsDOMEvent();
NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
NS_IMETHOD_(nsrefcnt) AddRef();
NS_IMETHOD_(nsrefcnt) Release();
NS_DECL_ISUPPORTS
// nsIDOMEventInterface
NS_IMETHOD GetType(nsString& aType);
@ -101,7 +99,6 @@ public:
protected:
PRUint32 mRefCnt : 31;
nsEvent *mEvent;
nsIPresContext *mPresContext;

View File

@ -34,9 +34,7 @@ public:
nsEventListenerManager();
virtual ~nsEventListenerManager();
NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
NS_IMETHOD_(nsrefcnt) AddRef();
NS_IMETHOD_(nsrefcnt) Release();
NS_DECL_ISUPPORTS
nsVoidArray** GetListenersByIID(const nsIID& aIID);
@ -77,8 +75,6 @@ public:
protected:
nsresult SetJSEventListener(nsIScriptContext *aContext, JSObject *aObject, REFNSIID aIID);
PRUint32 mRefCnt : 31;
nsVoidArray* mEventListeners;
nsVoidArray* mMouseListeners;
nsVoidArray* mMouseMotionListeners;

View File

@ -32,9 +32,7 @@ public:
nsEventStateManager();
virtual ~nsEventStateManager();
NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
NS_IMETHOD_(nsrefcnt) AddRef();
NS_IMETHOD_(nsrefcnt) Release();
NS_DECL_ISUPPORTS
NS_IMETHOD GetEventTarget(nsISupports **aResult);
NS_IMETHOD SetEventTarget(nsISupports *aSupports);
@ -46,8 +44,6 @@ public:
NS_IMETHOD SetActiveLink(nsIContent *aLink);
protected:
PRUint32 mRefCnt : 31;
nsISupports* mEventTarget;
nsIContent* mLastMouseOverContent;
nsIContent *mActiveLink;

View File

@ -4,6 +4,12 @@
readonly attribute Document document;
readonly attribute Navigator navigator;
readonly attribute Window opener;
readonly attribute Window parent;
readonly attribute Window top;
readonly attribute boolean closed;
attribute wstring status;
attribute wstring defaultStatus;
attribute wstring name;
void dump(in wstring str);
void alert(in wstring str);

View File

@ -46,6 +46,21 @@ public:
NS_IMETHOD GetOpener(nsIDOMWindow** aOpener)=0;
NS_IMETHOD GetParent(nsIDOMWindow** aParent)=0;
NS_IMETHOD GetTop(nsIDOMWindow** aTop)=0;
NS_IMETHOD GetClosed(PRBool* aClosed)=0;
NS_IMETHOD GetStatus(nsString& aStatus)=0;
NS_IMETHOD SetStatus(const nsString& aStatus)=0;
NS_IMETHOD GetDefaultStatus(nsString& aDefaultStatus)=0;
NS_IMETHOD SetDefaultStatus(const nsString& aDefaultStatus)=0;
NS_IMETHOD GetName(nsString& aName)=0;
NS_IMETHOD SetName(const nsString& aName)=0;
NS_IMETHOD Dump(const nsString& aStr)=0;
NS_IMETHOD Alert(const nsString& aStr)=0;
@ -68,6 +83,15 @@ public:
NS_IMETHOD GetDocument(nsIDOMDocument** aDocument); \
NS_IMETHOD GetNavigator(nsIDOMNavigator** aNavigator); \
NS_IMETHOD GetOpener(nsIDOMWindow** aOpener); \
NS_IMETHOD GetParent(nsIDOMWindow** aParent); \
NS_IMETHOD GetTop(nsIDOMWindow** aTop); \
NS_IMETHOD GetClosed(PRBool* aClosed); \
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); \
NS_IMETHOD Dump(const nsString& aStr); \
NS_IMETHOD Alert(const nsString& aStr); \
NS_IMETHOD ClearTimeout(PRInt32 aTimerID); \
@ -84,6 +108,15 @@ public:
NS_IMETHOD GetDocument(nsIDOMDocument** aDocument) { return _to##GetDocument(aDocument); } \
NS_IMETHOD GetNavigator(nsIDOMNavigator** aNavigator) { return _to##GetNavigator(aNavigator); } \
NS_IMETHOD GetOpener(nsIDOMWindow** aOpener) { return _to##GetOpener(aOpener); } \
NS_IMETHOD GetParent(nsIDOMWindow** aParent) { return _to##GetParent(aParent); } \
NS_IMETHOD GetTop(nsIDOMWindow** aTop) { return _to##GetTop(aTop); } \
NS_IMETHOD GetClosed(PRBool* aClosed) { return _to##GetClosed(aClosed); } \
NS_IMETHOD GetStatus(nsString& aStatus) { return _to##GetStatus(aStatus); } \
NS_IMETHOD SetStatus(const nsString& aStatus) { return _to##SetStatus(aStatus); } \
NS_IMETHOD GetDefaultStatus(nsString& aDefaultStatus) { return _to##GetDefaultStatus(aDefaultStatus); } \
NS_IMETHOD SetDefaultStatus(const nsString& aDefaultStatus) { return _to##SetDefaultStatus(aDefaultStatus); } \
NS_IMETHOD GetName(nsString& aName) { return _to##GetName(aName); } \
NS_IMETHOD SetName(const nsString& aName) { return _to##SetName(aName); } \
NS_IMETHOD Dump(const nsString& aStr) { return _to##Dump(aStr); } \
NS_IMETHOD Alert(const nsString& aStr) { return _to##Alert(aStr); } \
NS_IMETHOD ClearTimeout(PRInt32 aTimerID) { return _to##ClearTimeout(aTimerID); } \

View File

@ -35,6 +35,10 @@
#include "nsIDOMMouseListener.h"
#include "nsIDOMKeyListener.h"
#include "nsIDOMMouseMotionListener.h"
#include "nsIDOMFocusListener.h"
#include "nsIDOMFormListener.h"
#include "nsIDOMLoadListener.h"
#include "nsIDOMDragListener.h"
#include "nsIScriptEventListener.h"
#include "nsIPrivateDOMEvent.h"
#include "nsIBrowserWindow.h"
@ -54,10 +58,10 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID);
static NS_DEFINE_IID(kIDOMMouseListenerIID, NS_IDOMMOUSELISTENER_IID);
static NS_DEFINE_IID(kIDOMKeyListenerIID, NS_IDOMKEYLISTENER_IID);
static NS_DEFINE_IID(kIDOMMouseMotionListenerIID, NS_IDOMMOUSEMOTIONLISTENER_IID);
static NS_DEFINE_IID(kIDOMFocusListenerIID, NS_IDOMMOUSELISTENER_IID);
static NS_DEFINE_IID(kIDOMFormListenerIID, NS_IDOMKEYLISTENER_IID);
static NS_DEFINE_IID(kIDOMLoadListenerIID, NS_IDOMMOUSEMOTIONLISTENER_IID);
static NS_DEFINE_IID(kIDOMDragListenerIID, NS_IDOMMOUSEMOTIONLISTENER_IID);
static NS_DEFINE_IID(kIDOMFocusListenerIID, NS_IDOMFOCUSLISTENER_IID);
static NS_DEFINE_IID(kIDOMFormListenerIID, NS_IDOMFORMLISTENER_IID);
static NS_DEFINE_IID(kIDOMLoadListenerIID, NS_IDOMLOADLISTENER_IID);
static NS_DEFINE_IID(kIDOMDragListenerIID, NS_IDOMDRAGLISTENER_IID);
static NS_DEFINE_IID(kIEventListenerManagerIID, NS_IEVENTLISTENERMANAGER_IID);
static NS_DEFINE_IID(kIPrivateDOMEventIID, NS_IPRIVATEDOMEVENT_IID);
static NS_DEFINE_IID(kIDOMEventCapturerIID, NS_IDOMEVENTCAPTURER_IID);
@ -263,6 +267,37 @@ GlobalWindowImpl::GetNavigator(nsIDOMNavigator** aNavigator)
return NS_OK;
}
NS_IMETHODIMP
GlobalWindowImpl::GetOpener(nsIDOMWindow** aOpener)
{
*aOpener = nsnull;
NS_IF_ADDREF(*aOpener);
return NS_OK;
}
NS_IMETHODIMP
GlobalWindowImpl::GetParent(nsIDOMWindow** aParent)
{
nsresult ret = NS_OK;
nsIWebShell *mParentWebShell;
mWebShell->GetParent(mParentWebShell);
if (nsnull != mParentWebShell) {
nsIScriptContextOwner *mParentContextOwner;
if (NS_OK == mParentWebShell->QueryInterface(kIScriptContextOwnerIID, (void**)mParentContextOwner)) {
nsIScriptGlobalObject *mParentGlobalObject;
if (NS_OK == mParentContextOwner->GetScriptGlobalObject(&mParentGlobalObject)) {
ret = mParentGlobalObject->QueryInterface(kIDOMWindowIID, (void**)aParent);
NS_RELEASE(mParentGlobalObject);
}
NS_RELEASE(mParentContextOwner);
}
NS_RELEASE(mParentWebShell);
}
return ret;
}
NS_IMETHODIMP
GlobalWindowImpl::GetLocation(nsIDOMLocation** aLocation)
{
@ -278,11 +313,84 @@ GlobalWindowImpl::GetLocation(nsIDOMLocation** aLocation)
}
NS_IMETHODIMP
GlobalWindowImpl::GetOpener(nsIDOMWindow** aOpener)
GlobalWindowImpl::GetTop(nsIDOMWindow** aTop)
{
*aOpener = nsnull;
NS_IF_ADDREF(*aOpener);
nsresult ret = NS_OK;
nsIWebShell *mRootWebShell;
mWebShell->GetRootWebShell(mRootWebShell);
if (nsnull != mRootWebShell) {
nsIScriptContextOwner *mRootContextOwner;
if (NS_OK == mRootWebShell->QueryInterface(kIScriptContextOwnerIID, (void**)mRootContextOwner)) {
nsIScriptGlobalObject *mRootGlobalObject;
if (NS_OK == mRootContextOwner->GetScriptGlobalObject(&mRootGlobalObject)) {
ret = mRootGlobalObject->QueryInterface(kIDOMWindowIID, (void**)aTop);
NS_RELEASE(mRootGlobalObject);
}
NS_RELEASE(mRootContextOwner);
}
NS_RELEASE(mRootWebShell);
}
return ret;
}
NS_IMETHODIMP
GlobalWindowImpl::GetClosed(PRBool* aClosed)
{
if (nsnull == mDocument) {
*aClosed = PR_TRUE;
}
else {
*aClosed = PR_FALSE;
}
return NS_OK;
}
NS_IMETHODIMP
GlobalWindowImpl::GetStatus(nsString& aStatus)
{
nsIBrowserWindow *mBrowser;
if (NS_OK == GetBrowserWindowInterface(mBrowser)) {
mBrowser->GetStatus(aStatus);
NS_RELEASE(mBrowser);
}
return NS_OK;
}
NS_IMETHODIMP
GlobalWindowImpl::SetStatus(const nsString& aStatus)
{
nsIBrowserWindow *mBrowser;
if (NS_OK == GetBrowserWindowInterface(mBrowser)) {
mBrowser->SetStatus(aStatus);
NS_RELEASE(mBrowser);
}
return NS_OK;
}
NS_IMETHODIMP
GlobalWindowImpl::GetDefaultStatus(nsString& aDefaultStatus)
{
return NS_OK;
}
NS_IMETHODIMP
GlobalWindowImpl::SetDefaultStatus(const nsString& aDefaultStatus)
{
return NS_OK;
}
NS_IMETHODIMP
GlobalWindowImpl::GetName(nsString& aName)
{
mWebShell->GetName(aName);
return NS_OK;
}
NS_IMETHODIMP
GlobalWindowImpl::SetName(const nsString& aName)
{
mWebShell->SetName(aName);
return NS_OK;
}
@ -950,9 +1058,84 @@ GlobalWindowImpl::GetBrowserWindowInterface(nsIBrowserWindow*& aBrowser)
return ret;
}
PRBool
PRBool
GlobalWindowImpl::CheckForEventListener(JSContext *aContext, nsString& aPropName)
{
nsIEventListenerManager *mManager = nsnull;
if (aPropName == "onmousedown" || aPropName == "onmouseup" || aPropName == "onclick" ||
aPropName == "onmouseover" || aPropName == "onmouseout") {
if (NS_OK == GetListenerManager(&mManager)) {
nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext);
if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, kIDOMMouseListenerIID)) {
NS_RELEASE(mManager);
return PR_FALSE;
}
}
}
else if (aPropName == "onkeydown" || aPropName == "onkeyup" || aPropName == "onkeypress") {
if (NS_OK == GetListenerManager(&mManager)) {
nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext);
if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, kIDOMKeyListenerIID)) {
NS_RELEASE(mManager);
return PR_FALSE;
}
}
}
else if (aPropName == "onmousemove") {
if (NS_OK == GetListenerManager(&mManager)) {
nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext);
if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, kIDOMMouseMotionListenerIID)) {
NS_RELEASE(mManager);
return PR_FALSE;
}
}
}
else if (aPropName == "onfocus" || aPropName == "onblur") {
if (NS_OK == GetListenerManager(&mManager)) {
nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext);
if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, kIDOMFocusListenerIID)) {
NS_RELEASE(mManager);
return PR_FALSE;
}
}
}
else if (aPropName == "onsubmit" || aPropName == "onreset") {
if (NS_OK == GetListenerManager(&mManager)) {
nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext);
if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, kIDOMFormListenerIID)) {
NS_RELEASE(mManager);
return PR_FALSE;
}
}
}
else if (aPropName == "onload" || aPropName == "onunload" || aPropName == "onabort" ||
aPropName == "onerror") {
if (NS_OK == GetListenerManager(&mManager)) {
nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext);
if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, kIDOMLoadListenerIID)) {
NS_RELEASE(mManager);
return PR_FALSE;
}
}
}
NS_IF_RELEASE(mManager);
return PR_TRUE;
}
PRBool
GlobalWindowImpl::AddProperty(JSContext *aContext, jsval aID, jsval *aVp)
{
if (JS_TypeOfValue(aContext, *aVp) == JSTYPE_FUNCTION && JSVAL_IS_STRING(aID)) {
nsString mPropName;
nsAutoString mPrefix;
mPropName.SetString(JS_GetStringChars(JS_ValueToString(aContext, aID)));
mPrefix.SetString(mPropName, 2);
if (mPrefix == "on") {
return CheckForEventListener(aContext, mPropName);
}
}
return PR_TRUE;
}
@ -997,73 +1180,16 @@ GlobalWindowImpl::GetProperty(JSContext *aContext, jsval aID, jsval *aVp)
return PR_TRUE;
}
PRBool
PRBool
GlobalWindowImpl::SetProperty(JSContext *aContext, jsval aID, jsval *aVp)
{
if (JS_TypeOfValue(aContext, *aVp) == JSTYPE_FUNCTION && JSVAL_IS_STRING(aID)) {
nsAutoString mPropName, mPrefix;
mPropName.SetString(JS_GetStringBytes(JS_ValueToString(aContext, aID)));
nsString mPropName;
nsAutoString mPrefix;
mPropName.SetString(JS_GetStringChars(JS_ValueToString(aContext, aID)));
mPrefix.SetString(mPropName, 2);
if (mPrefix == "on") {
nsIEventListenerManager *mManager = nsnull;
if (mPropName == "onmousedown" || mPropName == "onmouseup" || mPropName == "onclick" ||
mPropName == "onmouseover" || mPropName == "onmouseout") {
if (NS_OK == GetListenerManager(&mManager)) {
nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext);
if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, kIDOMMouseListenerIID)) {
NS_RELEASE(mManager);
return PR_FALSE;
}
}
}
else if (mPropName == "onkeydown" || mPropName == "onkeyup" || mPropName == "onkeypress") {
if (NS_OK == GetListenerManager(&mManager)) {
nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext);
if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, kIDOMKeyListenerIID)) {
NS_RELEASE(mManager);
return PR_FALSE;
}
}
}
else if (mPropName == "onmousemove") {
if (NS_OK == GetListenerManager(&mManager)) {
nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext);
if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, kIDOMMouseMotionListenerIID)) {
NS_RELEASE(mManager);
return PR_FALSE;
}
}
}
else if (mPropName == "onfocus" || mPropName == "onblur") {
if (NS_OK == GetListenerManager(&mManager)) {
nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext);
if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, kIDOMFocusListenerIID)) {
NS_RELEASE(mManager);
return PR_FALSE;
}
}
}
else if (mPropName == "onsubmit" || mPropName == "onreset") {
if (NS_OK == GetListenerManager(&mManager)) {
nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext);
if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, kIDOMFormListenerIID)) {
NS_RELEASE(mManager);
return PR_FALSE;
}
}
}
else if (mPropName == "onload" || mPropName == "onunload" || mPropName == "onabort" ||
mPropName == "onerror") {
if (NS_OK == GetListenerManager(&mManager)) {
nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext);
if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, kIDOMLoadListenerIID)) {
NS_RELEASE(mManager);
return PR_FALSE;
}
}
}
NS_IF_RELEASE(mManager);
return CheckForEventListener(aContext, mPropName);
}
}
else if (JSVAL_IS_STRING(aID) &&

View File

@ -68,6 +68,19 @@ public:
NS_IMETHOD GetNavigator(nsIDOMNavigator** aNavigator);
NS_IMETHOD GetOpener(nsIDOMWindow** aOpener);
NS_IMETHOD GetLocation(nsIDOMLocation** aLocation);
NS_IMETHOD GetParent(nsIDOMWindow** aOpener);
NS_IMETHOD GetTop(nsIDOMWindow** aTop);
NS_IMETHOD GetClosed(PRBool* aClosed);
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);
NS_IMETHOD Dump(const nsString& aStr);
NS_IMETHOD Alert(const nsString& aStr);
NS_IMETHOD ClearTimeout(PRInt32 aTimerID);
@ -119,6 +132,7 @@ protected:
nsresult GetBrowserWindowInterface(nsIBrowserWindow*& aBrowser);
nsresult CheckWindowName(JSContext *cx, nsString& aName);
int32 WinHasOption(char *options, char *name);
PRBool CheckForEventListener(JSContext *aContext, nsString& aPropName);
nsIScriptContext *mContext;
void *mScriptObject;

View File

@ -49,7 +49,13 @@ enum Window_slots {
WINDOW_SELF = -12,
WINDOW_DOCUMENT = -13,
WINDOW_NAVIGATOR = -14,
WINDOW_OPENER = -15
WINDOW_OPENER = -15,
WINDOW_PARENT = -16,
WINDOW_TOP = -17,
WINDOW_CLOSED = -18,
WINDOW_STATUS = -19,
WINDOW_DEFAULTSTATUS = -110,
WINDOW_NAME = -111
};
/***********************************************************************/
@ -203,6 +209,110 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
}
break;
}
case WINDOW_PARENT:
{
nsIDOMWindow* prop;
if (NS_OK == a->GetParent(&prop)) {
// get the js object
if (prop != nsnull) {
nsIScriptObjectOwner *owner = nsnull;
if (NS_OK == prop->QueryInterface(kIScriptObjectOwnerIID, (void**)&owner)) {
JSObject *object = nsnull;
nsIScriptContext *script_cx = (nsIScriptContext *)JS_GetContextPrivate(cx);
if (NS_OK == owner->GetScriptObject(script_cx, (void**)&object)) {
// set the return value
*vp = OBJECT_TO_JSVAL(object);
}
NS_RELEASE(owner);
}
NS_RELEASE(prop);
}
else {
*vp = JSVAL_NULL;
}
}
else {
return JS_FALSE;
}
break;
}
case WINDOW_TOP:
{
nsIDOMWindow* prop;
if (NS_OK == a->GetTop(&prop)) {
// get the js object
if (prop != nsnull) {
nsIScriptObjectOwner *owner = nsnull;
if (NS_OK == prop->QueryInterface(kIScriptObjectOwnerIID, (void**)&owner)) {
JSObject *object = nsnull;
nsIScriptContext *script_cx = (nsIScriptContext *)JS_GetContextPrivate(cx);
if (NS_OK == owner->GetScriptObject(script_cx, (void**)&object)) {
// set the return value
*vp = OBJECT_TO_JSVAL(object);
}
NS_RELEASE(owner);
}
NS_RELEASE(prop);
}
else {
*vp = JSVAL_NULL;
}
}
else {
return JS_FALSE;
}
break;
}
case WINDOW_CLOSED:
{
PRBool prop;
if (NS_OK == a->GetClosed(&prop)) {
*vp = BOOLEAN_TO_JSVAL(prop);
}
else {
return JS_FALSE;
}
break;
}
case WINDOW_STATUS:
{
nsAutoString prop;
if (NS_OK == a->GetStatus(prop)) {
JSString *jsstring = JS_NewUCStringCopyN(cx, prop, prop.Length());
// set the return value
*vp = STRING_TO_JSVAL(jsstring);
}
else {
return JS_FALSE;
}
break;
}
case WINDOW_DEFAULTSTATUS:
{
nsAutoString prop;
if (NS_OK == a->GetDefaultStatus(prop)) {
JSString *jsstring = JS_NewUCStringCopyN(cx, prop, prop.Length());
// set the return value
*vp = STRING_TO_JSVAL(jsstring);
}
else {
return JS_FALSE;
}
break;
}
case WINDOW_NAME:
{
nsAutoString prop;
if (NS_OK == a->GetName(prop)) {
JSString *jsstring = JS_NewUCStringCopyN(cx, prop, prop.Length());
// set the return value
*vp = STRING_TO_JSVAL(jsstring);
}
else {
return JS_FALSE;
}
break;
}
default:
{
nsIJSScriptObject *object;
@ -244,7 +354,51 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
if (JSVAL_IS_INT(id)) {
switch(JSVAL_TO_INT(id)) {
case 0:
case WINDOW_STATUS:
{
nsAutoString prop;
JSString *jsstring;
if ((jsstring = JS_ValueToString(cx, *vp)) != nsnull) {
prop.SetString(JS_GetStringChars(jsstring));
}
else {
prop.SetString((const char *)nsnull);
}
a->SetStatus(prop);
break;
}
case WINDOW_DEFAULTSTATUS:
{
nsAutoString prop;
JSString *jsstring;
if ((jsstring = JS_ValueToString(cx, *vp)) != nsnull) {
prop.SetString(JS_GetStringChars(jsstring));
}
else {
prop.SetString((const char *)nsnull);
}
a->SetDefaultStatus(prop);
break;
}
case WINDOW_NAME:
{
nsAutoString prop;
JSString *jsstring;
if ((jsstring = JS_ValueToString(cx, *vp)) != nsnull) {
prop.SetString(JS_GetStringChars(jsstring));
}
else {
prop.SetString((const char *)nsnull);
}
a->SetName(prop);
break;
}
default:
{
nsIJSScriptObject *object;
@ -612,6 +766,12 @@ static JSPropertySpec WindowProperties[] =
{"document", WINDOW_DOCUMENT, JSPROP_ENUMERATE | JSPROP_READONLY},
{"navigator", WINDOW_NAVIGATOR, JSPROP_ENUMERATE | JSPROP_READONLY},
{"opener", WINDOW_OPENER, JSPROP_ENUMERATE | JSPROP_READONLY},
{"parent", WINDOW_PARENT, JSPROP_ENUMERATE | JSPROP_READONLY},
{"top", WINDOW_TOP, JSPROP_ENUMERATE | JSPROP_READONLY},
{"closed", WINDOW_CLOSED, JSPROP_ENUMERATE | JSPROP_READONLY},
{"status", WINDOW_STATUS, JSPROP_ENUMERATE},
{"defaultStatus", WINDOW_DEFAULTSTATUS, JSPROP_ENUMERATE},
{"name", WINDOW_NAME, JSPROP_ENUMERATE},
{0}
};

View File

@ -45,9 +45,7 @@ public:
nsDOMEvent(nsIPresContext* aPresContext, nsEvent* aEvent);
virtual ~nsDOMEvent();
NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
NS_IMETHOD_(nsrefcnt) AddRef();
NS_IMETHOD_(nsrefcnt) Release();
NS_DECL_ISUPPORTS
// nsIDOMEventInterface
NS_IMETHOD GetType(nsString& aType);
@ -101,7 +99,6 @@ public:
protected:
PRUint32 mRefCnt : 31;
nsEvent *mEvent;
nsIPresContext *mPresContext;

View File

@ -34,9 +34,7 @@ public:
nsEventListenerManager();
virtual ~nsEventListenerManager();
NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
NS_IMETHOD_(nsrefcnt) AddRef();
NS_IMETHOD_(nsrefcnt) Release();
NS_DECL_ISUPPORTS
nsVoidArray** GetListenersByIID(const nsIID& aIID);
@ -77,8 +75,6 @@ public:
protected:
nsresult SetJSEventListener(nsIScriptContext *aContext, JSObject *aObject, REFNSIID aIID);
PRUint32 mRefCnt : 31;
nsVoidArray* mEventListeners;
nsVoidArray* mMouseListeners;
nsVoidArray* mMouseMotionListeners;

View File

@ -32,9 +32,7 @@ public:
nsEventStateManager();
virtual ~nsEventStateManager();
NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
NS_IMETHOD_(nsrefcnt) AddRef();
NS_IMETHOD_(nsrefcnt) Release();
NS_DECL_ISUPPORTS
NS_IMETHOD GetEventTarget(nsISupports **aResult);
NS_IMETHOD SetEventTarget(nsISupports *aSupports);
@ -46,8 +44,6 @@ public:
NS_IMETHOD SetActiveLink(nsIContent *aLink);
protected:
PRUint32 mRefCnt : 31;
nsISupports* mEventTarget;
nsIContent* mLastMouseOverContent;
nsIContent *mActiveLink;